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/tcpsudo ufw disable(但长期用不推荐)。
方案2:通过Windows主机做路由转发(不想用Bridge的话)
如果因为某些原因不想用Bridge,咱们可以让Windows主机当中间路由器,把局域网的流量转发到Ubuntu的Host-only网段。
- 开启Windows的IP转发功能:
- 右键开始菜单,打开「命令提示符(管理员)」。
- 先找到你的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:- 编辑Netplan配置文件(Ubuntu现在默认用Netplan),比如
sudo nano /etc/netplan/00-installer-config.yaml(文件名可能不同,看实际情况)。 - 修改成类似这样(注意网卡名称要对应你的实际名称,比如
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 - 执行
sudo netplan apply让配置生效。
- 编辑Netplan配置文件(Ubuntu现在默认用Netplan),比如
- 给局域网电脑添加静态路由:
让其他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
- Windows电脑:打开管理员命令提示符,执行
- 防火墙检查:除了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配置:
- 登录Mikrotik的Winbox界面,给网卡1设置IP:
/ip address add address=192.68.88.1/24 interface=ether1(ether1是网卡1,对应Host-only)。 - 给网卡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。
- 登录Mikrotik的Winbox界面,给网卡1设置IP:
- 开启IP转发和NAT规则:
- 开启IP转发:
/ip settings set allow-remote-requests=yes - 添加源NAT规则,让Ubuntu能访问外网(也能让局域网访问Ubuntu):
/ip firewall nat add chain=srcnat action=masquerade out-interface=ether2 - 添加目标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
- 开启IP转发:
- Ubuntu和局域网电脑配置:
- Ubuntu的默认网关改成Mikrotik的网卡1IP:
192.68.88.1 - 局域网的10台电脑要么把默认网关改成Mikrotik的网卡2IP(
192.168.1.100),要么添加静态路由指向这个IP,让192.68.88.x的流量走Mikrotik。
- Ubuntu的默认网关改成Mikrotik的网卡1IP:
通用排错步骤
如果还是不行,按下面的顺序排查:
- 连通性测试:先确认主机能ping通Ubuntu的IP,Ubuntu能ping通局域网的其他电脑,其他电脑能ping通Ubuntu的目标IP。
- 网站服务监听范围:确保Ubuntu的web服务(Nginx/Apache)是监听
0.0.0.0而不是只监听127.0.0.1或者192.68.88.10,执行netstat -tulpn | grep :80查看,要是只监听特定IP,改配置文件让它监听所有地址。 - 防火墙拦截:检查Ubuntu的UFW、Windows防火墙、局域网路由器的防火墙有没有拦截80/443端口,临时关闭防火墙测试是最快的排查方法。
内容的提问来源于stack exchange,提问作者M.Arif




