内部网络 intnet 上的 VirtualBox 虚拟机无法通信

内部网络 intnet 上的 VirtualBox 虚拟机无法通信

我使用两台主机,一台运行 Ubuntu 14.04 x64,另一台运行 Ubuntu 15.10 x64。两台主机都是最新的。我在每台机器上运行相同的 VirtualBox 版本:5.0.16 r105871,从官方存储库安装。

我有两台虚拟机,都是 Debian i586,都安装了 VirtualBox 附加组件:

  • 一个有 2 个虚拟网卡的网卡:第一个是 NAT 网卡(使用传统 IP 10.0.2.15),第二个是内部网络(称为 intnet)。我手动将 IP 地址 192.168.0.1 分配给此 NIC;

  • 一个带有 1 个虚拟网卡的网卡,位于名为 intnet 的同一内部网络上。我手动将 IP 地址 192.168.0.2 分配给此 NIC。

我的目的是教育:向学生展示如何构建路由器、防火墙等。

直到最近,我才能完美地在两个虚拟机之间通信:例如,从 192.168.0.1 ping 192.168.0.2 是可以的,从 192.168.0.2 ping 192.168.0.1 也是可以的。但是由于某种奇怪的原因,现在无法通信(错误:目标主机无法访问)... 但仅限于我的 Ubuntu 14.04 主机!在我的 Ubuntu 15.10 主机上一切正常!

更奇怪的是:如果我在 192.168.0.1 上运行 ping 192.168.0.2,并在 192.168.0.2 上运行 tcpdump -i eth0,我会看到 ARP 请求“who-has 192.168.0.2 tell 192.168.0.1”!

越来越奇怪:我创建了另外 2 个虚拟机,没有虚拟磁盘,只是在 SystemRescueCD ISO 映像上启动。同样的想法:一个虚拟机有 2 个 NIC,一个 NAT,第二个在 intnet 上,另一个虚拟机有 1 个 NIC 在 intnet 上。我手动设置了相同的 IP,结果是一样的:没有 ping 通...但突然间,IP 的手动设置消失了(SystemRescueCD 上的 DHCP 客户端?因此我停止了 NetworkManager 服务,这似乎解决了这个奇怪的问题,但对我的主要困难没有丝毫影响)。当我重新修复 IP 时,我有时会得到ping 成功,并得到答复!就这样。第一次成功之后,一切都失败了。但是 192.168.0.2 上的 tcpdump 显示从 192.168.0.2 到 192.168.0.1 的 ICMP 回复...而 192.168.0.1 没有显示任何内容!

精度:路由没问题。但从逻辑上讲,它们在这里毫无用处,因为 2 个虚拟机位于同一个网络上。

这让我疯狂...

毫无疑问,Ubuntu 14.04 中存在错误。我真的需要这些虚拟机在我的笔记本电脑上进行通信 - 运行在 Ubuntu 14.04 下的主机。任何帮助都将不胜感激。提前致谢。

答案1

尝试一下:在具有 2 个网卡的网络上创建一个 network.sh 文件并将其放入其中:

#!/bin/sh
 echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT 
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

然后在客户端机器上将默认网关设置为 192.168.0.1:

route del default
route add default gw 192.168.0.1

希望这能有所帮助。这对我有用。

相关内容