You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Win10主机VirtualBox Ubuntu虚拟机网站局域网访问问题咨询

解决局域网电脑访问VirtualBox Ubuntu虚拟机网站的方案

咱们一步步来搞定这个问题,其实有几个靠谱的方案,看你偏好哪种——先从最简单的开始说:

方案1:直接用Bridge Adapter(最省心,优先推荐)

这个方案的核心是让Ubuntu虚拟机直接接入你的局域网,获得和其他10台电脑同网段的IP,这样它们就能直接访问,不需要额外路由配置。

  • VirtualBox配置检查:确保Ubuntu的网卡2(Bridge-adapter)已经启用,并且准确选择了主机连接交换机的那块物理网卡(别选错成WiFi或者其他没用的网卡)。
  • Ubuntu网卡配置
    • 如果你局域网里有DHCP服务器(比如路由器),直接让Ubuntu的Bridge网卡自动获取IP就行:在Ubuntu里打开设置→网络,找到对应的Bridge网卡,切换到“自动(DHCP)”,等它拿到IP。
    • 如果要静态IP,就设置成和局域网其他电脑同网段(比如局域网是192.168.1.x,就设192.168.1.101/24),子网掩码、网关、DNS都和局域网保持一致。
  • 连通性测试:在局域网的任意一台电脑上,ping Ubuntu的Bridge网卡IP,如果能通,直接在浏览器输入这个IP就能访问网站了。
  • 防火墙放行端口:别忘了Ubuntu的防火墙要允许网站的端口(比如80、443),执行这两条命令:
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    
    要是暂时测试的话,也可以临时关闭防火墙sudo ufw disable(但长期用不推荐)。

方案2:通过Windows主机做路由转发(不想用Bridge的话)

如果因为某些原因不想用Bridge,咱们可以让Windows主机当中间路由器,把局域网的流量转发到Ubuntu的Host-only网段。

  • 开启Windows的IP转发功能
    1. 右键开始菜单,打开「命令提示符(管理员)」。
    2. 先找到你的Host-only网卡名称(一般叫VirtualBox Host-Only Ethernet Adapter)和物理网卡名称(连接交换机的那个,比如以太网),然后执行两条命令:
      netsh interface ipv4 set interface "VirtualBox Host-Only Ethernet Adapter" forwarding=enabled
      netsh interface ipv4 set interface "以太网" forwarding=enabled
      
  • 配置Ubuntu的默认网关
    Ubuntu的Host-only网卡IP是192.68.88.10,Windows主机的Host-only网卡IP一般是192.68.88.1,把Ubuntu的默认网关改成这个IP:
    1. 编辑Netplan配置文件(Ubuntu现在默认用Netplan),比如sudo nano /etc/netplan/00-installer-config.yaml(文件名可能不同,看实际情况)。
    2. 修改成类似这样(注意网卡名称要对应你的实际名称,比如enp0s3是Host-only网卡):
      network:
        ethernets:
          enp0s3:
            addresses: [192.68.88.10/24]
            gateway4: 192.68.88.1
            nameservers:
              addresses: [8.8.8.8, 1.1.1.1]
          enp0s8: # 这块Bridge网卡可以禁用,因为不用它了
            dhcp4: no
        version: 2
      
    3. 执行sudo netplan apply让配置生效。
  • 给局域网电脑添加静态路由
    让其他10台电脑知道,要访问192.68.88.x网段的流量,得发往Windows主机的局域网IP(比如Windows主机的局域网IP是192.168.1.5):
    • Windows电脑:打开管理员命令提示符,执行route add 192.68.88.0 mask 255.255.255.0 192.168.1.5
    • Linux电脑:执行sudo ip route add 192.68.88.0/24 via 192.168.1.5
  • 防火墙检查:除了Ubuntu的防火墙,还要确保Windows的防火墙允许192.68.88.x和局域网之间的流量,可以临时关闭Windows防火墙测试,没问题再配置规则。

方案3:正确配置Mikrotik Router OS(你之前尝试过的方案)

你之前用Mikrotik没成功,大概率是配置细节没到位,咱们重新梳理正确步骤:

  • Mikrotik虚拟机网卡配置:给Mikrotik分配两块网卡,网卡1选Host-only Adapter(连接Ubuntu的Host-only网段),网卡2选Bridge Adapter(连接主机的物理网卡,接入局域网)。
  • Mikrotik IP配置
    1. 登录Mikrotik的Winbox界面,给网卡1设置IP:/ip address add address=192.68.88.1/24 interface=ether1(ether1是网卡1,对应Host-only)。
    2. 给网卡2设置局域网同网段的IP:比如局域网是192.168.1.x,就设/ip address add address=192.168.1.100/24 interface=ether2,然后设置网关为局域网路由器的IP:/ip route add gateway=192.168.1.1
  • 开启IP转发和NAT规则
    1. 开启IP转发:/ip settings set allow-remote-requests=yes
    2. 添加源NAT规则,让Ubuntu能访问外网(也能让局域网访问Ubuntu):/ip firewall nat add chain=srcnat action=masquerade out-interface=ether2
    3. 添加目标NAT规则,把局域网访问的80/443端口转发到Ubuntu:
      /ip firewall nat add chain=dstnat action=dst-nat to-addresses=192.68.88.10 to-ports=80 protocol=tcp dst-port=80 in-interface=ether2
      /ip firewall nat add chain=dstnat action=dst-nat to-addresses=192.68.88.10 to-ports=443 protocol=tcp dst-port=443 in-interface=ether2
      
  • Ubuntu和局域网电脑配置
    • Ubuntu的默认网关改成Mikrotik的网卡1IP:192.68.88.1
    • 局域网的10台电脑要么把默认网关改成Mikrotik的网卡2IP(192.168.1.100),要么添加静态路由指向这个IP,让192.68.88.x的流量走Mikrotik。

通用排错步骤

如果还是不行,按下面的顺序排查:

  1. 连通性测试:先确认主机能ping通Ubuntu的IP,Ubuntu能ping通局域网的其他电脑,其他电脑能ping通Ubuntu的目标IP。
  2. 网站服务监听范围:确保Ubuntu的web服务(Nginx/Apache)是监听0.0.0.0而不是只监听127.0.0.1或者192.68.88.10,执行netstat -tulpn | grep :80查看,要是只监听特定IP,改配置文件让它监听所有地址。
  3. 防火墙拦截:检查Ubuntu的UFW、Windows防火墙、局域网路由器的防火墙有没有拦截80/443端口,临时关闭防火墙测试是最快的排查方法。

内容的提问来源于stack exchange,提问作者M.Arif

火山引擎 最新活动