很多人使用vmware workstation比较久了,可能会有人有这个疑问:
nat 模式虚拟机,为什么虚拟机可以 ping 通 vmnet8 网关,但是主机却 ping 不通vmnet8 网关?
vmware 虚拟机处于 nat 模式,主机物理网卡 ip 为 192.168.1.166(可联外网),主机虚拟网卡 vmnet8 ip 为 192.168.80.1 ,虚拟机网卡 ip 为 192.168.80.100 。此外 vmnet8 网络有一个网关 192.168.80.2 ,虚拟机通过 nat 访问外网就是通过这个网关。现在虚拟机访问外网正常,在主机和虚机上 ping 对方也正常。
现在的问题是,在虚拟机上 ping 网关地址 192.168.80.2和物理机的192.168.80.1以及192.168.1.166都能ping 通,但是在主机上 ping 这个虚拟机网关192.168.80.2却 ping 不通。
通过以下内容,可以找到答案。
VM的网络模式设计,关于VMnet8拓扑如下:
在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。那么我们会觉得很奇怪,为什么需要虚拟网卡VMware Network Adapter VMnet8呢?
原来我们的VMware Network Adapter VMnet8虚拟网卡主要是为了实现主机与虚拟机之间的通信。
所以,你会发现,我们宿主机是可以ping通过那个 192.168.145.1 地址的(虚拟机地址),而虚拟机内部可以ping通过默认的网关地址 192.168.145.2 和默认DHCP服务 192.168.145.2 这个地址了。(注意:192.168.145.2 是vmnet8的网关)
这个是人家设计这样的,如果你再进一步测试,你可以关闭VM8,然后你会发现,虚拟机还是可以访问外网。如图:所以,VMnet8这个虚拟网卡,其实只用来与宿主机通信。从拓扑中可看出来。
因此,NAT模式,利用虚拟的NAT设备以及虚拟DHCP服务器来使虚拟机连接外网,而VMware Network Adapter VMnet8虚拟网卡是用来与虚拟机通信的。
网关和DHCP服务,在VM设计的内部设备中。
主机Ping不通vmnet8 网关,网关实际上就是VM的虚拟NAT设备10.1.28.254(也就是虚拟路由器 ),主机(VMnet8 10.1.28.44)的vmnet8网卡 上抓包,并在主机执行:
tracert 10.1.28.254
查看到第一跳地址是192.168.0.103,就是本地无线网卡DHCP分配的地址。
第二跳地址是无线网卡的上一跳地址,然后就经过了SNAT,到了公网,然后就丢包了。走三层。
虚拟机内部查看网关的mac地址:
本地PC主机的vmnet8的mac地址:
从抓包分析看:ping命令发出后,并无arp响应,因此无法封装。
如果PC端去tracert虚拟机的地址,直接就能通,走二层
本地PC电脑的mac地址:
主机路由表:
主机对网关地址10.1.28.254,静态绑定mac后,继续Ping,还是无法ping通,虽然发出了icmp,但还是无法回应
所以可能是vm底层有类似与防火墙的功能,将vmnet8的网关地址禁止主机地址去访问。
有大佬对vm底层熟悉的。可以在评论区一起讨论下。
联系客服