抱歉,这个问题比较基础,但我搞不懂。我想建立一个小型 Linux 服务器网络用于测试。
因此,我有一个运行虚拟盒的主机服务器,其界面如下:
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.4 netmask 255.255.255.0 broadcast 192.168.0.255
然后设置具有以下网络的客户虚拟机:
eth0 Link encap:Ethernet HWaddr 08:00:27:EA:15:4F
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
eth1 Link encap:Ethernet HWaddr 08:00:27:E3:E2:BC
inet addr:172.16.0.1 Bcast:172.16.7.255 Mask:255.255.248.0
第二个虚拟机客户机设置如下:
eth0 Link encap:Ethernet HWaddr 08:00:27:15:CA:14
inet addr:172.16.0.2 Bcast:172.16.7.255 Mask:255.255.248.0
inet6 addr: fe80::a00:27ff:fe15:ca14/64 Scope:Link
我希望能够从虚拟机 2 路由回主机服务器。因此我创建了一条路由,告诉虚拟机 2192.169.0.0
通过虚拟机 1 发送网络流量:
% route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 172.16.0.1 255.255.255.0 UG 0 0 0 eth0
172.16.0.0 0.0.0.0 255.255.248.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
但是我无法192.168.0.0
从虚拟机 2 ping 通网络。虚拟机 1 上的路由表如下:
% route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.16.0.0 0.0.0.0 255.255.248.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
主机服务器(运行虚拟盒)上的路由表是:
% route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
所以我猜我的问题是主机服务器对我的虚拟机的172.16.0.0/16
网络一无所知并且无法回复。
我该如何修复这个问题?我必须使用 iptables 和 NATing 吗?
答案1
我只在 Windows 主机和 Linux 客户机上做过这个,但原理应该是一样的。
检查以下链接,特别是有关仅主机网络的链接
http://www.virtualbox.org/manual/ch06.html#networkingmodes
使用这种方法,我根本不需要编辑路线。
您可能想要探索的另一种途径是使用 Vagrant。http://www.vagrantup.com/ 它非常适合测试不同的配置并快速设置新的虚拟机。祝你好运
答案2
您实际上是在尝试将 VM1 配置为路由器。您需要:
- VM1-开启
net.ipv4.ip_forward
-sysctl
这可能因分布而异 - VM1-确保 iptables 允许转发
- 确保 VM1 具有到两个网络的路由(如果直接连接则应该如此)
- 确保您的主机有通过 VM1 到 172 网络的路由