nat 模式虚拟机,为什么虚拟机可以 ping 通 vmnet8 网关,但是主机却 ping 不通?

2017-01-09 09:43:07 +08:00
 anyegongjue282
vmware 虚拟机, nat 模式,主机物理网卡 ip 为 10.2.0.64(可联外网),主机虚拟网卡 vmnet8 ip 为 192.168.29.1 ,虚拟机网卡 ip 为 192.168.29.131 。此外 vmnet8 网络有一个网关 192.168.29.2 ,虚拟机通过 nat 访问外网就是通过这个网关。现在虚拟机访问外网正常,在主机和虚机上 ping 对方也正常。现在的问题是,在虚拟机上 ping 网关地址 192.168.29.2 可以 ping 通,但是在主机上 ping 这个网关却 ping 不通。
在网上查了一下,也有人遇到这个困惑。其中一个答案和我的理解比较接近, vmware 创建了一个虚拟的路由器(同时也是 nat 服务器),该路由器其中一个接口的地址就是网关地址 192.168.29.2 ,连接虚拟机所在的子网 192.168.29.0/24 ,另一个接口是连接到一个虚拟网桥,该虚拟网桥的另一个端连接到主机的物理网卡 10.2.0.64 。不过这个也解释不了我的疑问。
另外,我在主机上 ping 网关 192.168.29.2 ,抓包看了一下,请求网关 192.168.29.2 对应物理地址的 arp 报文没有收到应答。看来应该是这个原因导致的,但是为什么主机收不到 arp 应答报文呢?
14972 次点击
所在节点    问与答
8 条回复
xss
2017-01-09 10:22:24 +08:00
你的 ping 包发到路由上去了(也可能是交换机). 然而你的 192.168.29.2 这个虚拟出来的网关是在你本机上创建的.

上层设备并不知道这个虚拟网关的 mac 地址. arp 被广播后当然收不到应答.
julyclyde
2017-01-09 13:48:52 +08:00
因为主机并不属于 vmnet8 啊
anyegongjue282
2017-01-09 14:34:01 +08:00
@xss 谢谢你的回复。我再想请问下,为什么虚拟机 ping 这个网关可以 ping 通呢。这个网关和虚拟机的网卡都可以看做是宿主机虚拟出来的吧。
anyegongjue282
2017-01-09 14:37:37 +08:00
@julyclyde 谢谢回复。主机上有一个 vmware 虚拟出来的网卡 vmnet8 , ip 是 192.168.29.1 。这个 ip 去 ping 虚拟机地址 192.168.29.131 是可以 ping 通的,个人理解它们应该是在一个子网吧。不知道是不是我的理解不对。
julyclyde
2017-01-09 14:39:19 +08:00
@anyegongjue282 那还真是比较奇怪了。我刚才想成 virtualbox 的情况了,跟 vmware 不太一样
xss
2017-01-09 16:11:06 +08:00
@anyegongjue282 因为你做了 NAT, 虚拟机的 ping 请求会先发送到 HOST 机. HOST 机器因为 NAT 创建了路由表的原因, 知道发往 192.168.29.2 这个网关的包应该怎么转发. 从而能正确的发送和接受虚拟机出来的请求. 说白了就是你虚拟机 ping 192.168.29.2 的包, 不会被真正的发送到你的网络上面. 只是在你本机虚拟出来的一套网络环境里面转了一圈. 你看看 5 层网络协议吧, 弄明白 5 层模型, 就知道为什么会这个样子了.
weyou
2017-01-09 16:50:04 +08:00
VMWare 的设定就不允许 NAT 转发来自于 host 的虚拟网卡过来的包。应该是直接就不响应 ARP 了,

The Host Computer and the NAT Network

The host computer has a host virtual adapter on the NAT network (identical to the host virtual adapter on the host-only network). This adapter allows the host and the virtual machines to communicate with each other for such purposes as file sharing. The NAT never forwards traffic from the host virtual adapter.

你可以试试设置 static ARP entry 到 host 的 MAC 表里,然后再 ping NAT gateway ,我怀疑还是 ping 不到,底层就屏蔽掉了。
anyegongjue282
2017-01-13 09:34:16 +08:00
@weyou 谢谢。我觉得这个解释我比较能理解了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/333199

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX