我正在尝试使用 Virtual Box 模拟 NAT 后面的客户端。
我有一台主机,其 IP 地址为 130.0.0.1。我创建了一台运行 Ubuntu 12.04 并带有两个网络接口的虚拟机(我们称之为 VM1)。
eth0 - Bridged Adaptor (Let's say it gets an address 130.0.0.2)
eth1 - Host-only Adaptor (Let's say it gets an address 192.168.0.1)
在 VM1 中,我使用以下命令清除所有 iptable 规则:
iptables -F
iptables -t nat -F
iptables --delete-chain
iptables --table nat --delete-chain
我使用以下命令启用内核的数据包转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
我使用 iptables 创建新规则:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE OR iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -j ACCEPT OR iptables --append FORWARD --in-interface eth1 -j ACCEPT
我配置了 VM1 的 eth1 接口,其 /etc/network/interface 有以下条目:
auto lo
iface lo inet loopback
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
然后我创建了另一台运行 Ubuntu 12.04(仅主机适配器)的虚拟机(我们称之为 VM2)。我通过在 /etc/network/interface 中设置以下条目来配置其接口:
auto lo
iface lo inet loopback
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
因此,根据此设置,VM2 应作为 NAT(VM1)后面的客户端运行,并且我正尝试从 VM2 连接到主机网络上的计算机。当我:
ping 130.0.0.2 or
ping 192.168.0.1
它起作用了。但是当我尝试:
ping 130.0.0.1 or
any other machine on that network
我没有收到任何回复。有人能告诉我我遗漏了什么或做错了什么吗?