You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何两个仅主机网络无法互通?附VirtualBox+Linux Mint实验配置

为什么两个仅主机网络的虚拟机无法互相访问?

嘿,我来帮你拆解下这个问题,结合你的环境配置,核心原因和解决办法如下:

问题根源

虽然你的宿主机上已经有了192.168.56.0/24和192.168.57.0/24两个子网的路由条目,但默认情况下:

  1. Linux系统的IP转发功能是关闭的:宿主机不会自动把一个仅主机适配器的流量转发到另一个,这是Linux的安全默认设置。
  2. 防火墙可能拦截了转发流量:哪怕IP转发开了,默认的防火墙规则(比如ufw)通常会拒绝跨接口的转发请求。

解决步骤

1. 开启宿主机的IP转发功能

临时生效(重启后失效)

在宿主机终端执行:

sudo sysctl -w net.ipv4.ip_forward=1

永久生效(重启后依然有效)

编辑/etc/sysctl.conf文件:

sudo nano /etc/sysctl.conf

找到(或者添加)这一行:

net.ipv4.ip_forward=1

保存退出后,让配置立即生效:

sudo sysctl -p

2. 配置防火墙允许跨接口转发

因为你用的是Linux Mint,默认防火墙是ufw,按以下步骤操作:

  1. 编辑ufw的默认配置文件:
    sudo nano /etc/default/ufw
    
    把DEFAULT_FORWARD_POLICY="DROP"修改为:
    DEFAULT_FORWARD_POLICY="ACCEPT"
    
  2. 重启ufw让配置生效:
    sudo ufw reload
    

如果你的环境用的是iptables而不是ufw,就添加以下转发规则:

sudo iptables -A FORWARD -i vboxnet0 -o vboxnet1 -j ACCEPT
sudo iptables -A FORWARD -i vboxnet1 -o vboxnet0 -j ACCEPT

想要永久保存iptables规则的话,可以执行:

sudo iptables-save > /etc/iptables/rules.v4

3. 验证虚拟机的路由配置

确保两个虚拟机的默认网关指向宿主机对应仅主机适配器的IP:

  • 对于vboxnet0子网的虚拟机,默认网关应该是192.168.56.1(VirtualBox默认给仅主机适配器分配的网关IP)
  • 对于vboxnet1子网的虚拟机,默认网关应该是192.168.57.1

你可以在虚拟机里执行ip route查看路由表,确认有类似这样的条目:

default via 192.168.56.1 dev enp0s3

额外检查点

  • 先确认宿主机能ping通两个虚拟机的IP,确保宿主机和单个虚拟机的通信正常
  • 用ip link show查看宿主机的vboxnet0和vboxnet1接口是否处于UP状态

内容的提问来源于stack exchange,提问作者Roman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:35:40