我有两台计算机。计算机 A 正在运行虚拟机,该虚拟机位于 NAT 后面。计算机 B 只想 PING 该虚拟机。我知道 NAT 后面的虚拟机旨在从外部无法访问,这就是 NAT 存在的原因。我的实验只是为了了解这一切是如何工作的。
计算机A的IP:192.168.1.105
计算机A上的虚拟机IP:172.16.66.132
计算机B的IP:192.168.1.107
据我了解,计算机 B 无法 PING 通虚拟机,因为它不知道如何到达那里,并且它试图通过路由器(192.168.1.1)到达那里,但失败了,因为路由器随后连接到互联网(我已验证过tracert
)。
我认为可以通过在计算机 B 上的路由表中添加自定义条目来改变这种情况。所以,我这样做了:
route add 172.16.66.0 MASK 255.255.255.0 192.168.1.105
上述规则将告知计算机 B,可通过 192.168.1.105(计算机 A 的 IP)访问网络 172.16.66.0。
结果?没有变化。我甚至看到,在 PING VM 时,我的自定义条目已从表中删除。
为什么我的解决方案不起作用?
答案1
该route add
命令无效,并且该路由可能被删除,因为它已经过测试并且被证明是无效的。
原因是您遇到了双 NAT 的情况:您使用的虚拟机软件有自己的虚拟路由器,为虚拟机执行 DHCP 和 NAT。主机没有到该虚拟路由器的路由,因此无法转发任何内容。
对于这种情况,我建议将虚拟网络定义为桥接网络而不是 NAT。