主机ping不通虚拟机
省时间不看版
- 控制面板>Windows Defender防火墙>高级设置>入站规则&出站规则>文件和打印机共享(回显请求-ICMPv4-In)(有两项)>启用
- 主机:网络连接>VMnet8禁用>VMnet8启用
可解决大部分问题
ping
ping是一种因特网包探索器,用于测试网络连接量的程序。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态。
本文主机:win11
虚拟机:VMware ubuntu
预期效果:主机和虚拟机之间可以互相ping通,若主机可以上网,则虚拟机也可以正常连接网络(与当前主机在同一个局域网的其他主机不能访问当前主机上的虚拟机)
虚拟机联网方式
NAT
虚拟机的IP都是由虚拟交换机决定的,由虚拟NAT负责连接外网,而虚拟网卡VMware Network Adapter Vmnet8负责主机与虚拟机之间的通信。NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。
主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,实现虚拟机联网。
NAT模式默认虚拟机配置使用DHCP自动获取IP。
桥接
通过虚拟机工具生成一个虚拟网桥,通过虚拟网桥将物理网卡和虚拟网卡连接起来。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所有桥接下的网卡与网卡都是交换模式,可以相互访问而不干扰。
在桥接模式下,虚拟机IP地址需要与主机在同一个网段。虚拟机上外网要保证虚拟机的网卡和物理机上外网网卡的网段保持一致。
在VMware虚拟机属性里面设置网卡为桥接,启动虚拟机后,虚拟系统通过网卡桥接到局域网。如果主机网络是DHCP(自动获取局域网IP)模式,那么虚拟机也为自动获取局域网IP;如果主机不是自动设置为局域网IP,需要给虚拟机配置一个和主机同一网段的不同的可用真实IP,就可以上网,与本机无任何区别。采用桥接方式需要有局域网网段的IP,这种方式不需要Vm1、Vm8同样可以上外网。
Host-Only
Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。
在主机模式下,虚拟机不能与Windows主机互相ping通,也不能连接到网络。
查看网络信息
主机
win+R打开本地运行,输入"cmd",在运行窗口输入"ipconfig",可以看到主机的IP地址为192.168.4.65
虚拟机
使用ifconfig
在Linux(Ubuntu)中查询IP。ens下inet后即为IP192.168.29.131
无法ping通原因分析
- 虚拟机未设置成NAT的网络模式
- 虚拟机设置成桥接的模式,但是未和主机配置同一网段的IP
- 虚拟机网卡同时使用NAT网卡和桥接网卡,网卡冲突
- 主机网卡故障
NAT模式
- 虚拟机防火墙禁ping,需关闭虚拟机防火墙
- 主机上的vmnet8被禁用
桥接模式
- 虚拟机防火墙禁ping,需关闭虚拟机防火墙
- 桥接设置的IP冲突
- 虚拟机桥接不正常
解决方法
防火墙
虚拟机的防火墙有时会禁止ICMP回显导致Ping命令不通。
关闭防火墙
控制面板>Windows Defender防火墙>启用或关闭Windows Defender防火墙>关闭(win11)
修改防火墙规则
系统默认不开启ping回应,需设置为开启状态。
控制面板>Windows Defender防火墙>高级设置>入站规则&出站规则>文件和打印机共享(回显请求-ICMPv4-In)(有两项)>启用
网段IP问题
- 在电脑中安装了虚拟机后,ipconfig中会多出虚拟机的以太网适配器,IPV4就是虚拟机的IP地址
- 打开设置→网络和Internet→高级网络设置→更多网络适配器选项(win11),可以看到虚拟机和主机的网络
若不显示虚拟网卡,可能是在设备管理器中禁用了,需要重新开启;如果不行,打开虚拟机网络编辑器,还原默认设置;如果还是不行,卸载虚拟机,清除干净(包括注册表项);如果依旧不行,换一个高版本的虚拟机安装;最后迫不得已的话,重装本机的操作系统。
NAT模式
虚拟机的IP地址会自动获取,查看虚拟网络编辑器的NAT网段和网关IP地址
虚拟机:编辑>虚拟网络编辑器>更改设置>VMnet8虚拟网卡
这里可以选择对应的网卡,使用VMware创建虚拟机时,默认会有三块网卡,对应着创建虚拟机时的三种网络模式,还可以根据自身需要点击添加网络,然后自定义自己的一段网络,用于开发或者测试。
配置网段和子网掩码;NAT设置>配置网关;DHCP设置>配置起始&结束IP地址(与配置的子网IP在同一网段)
子网IP配置:前两段要与主机IP的前两段相同(大部分基本是192.168),第三段不同,第四部分补0。
网关IP配置:前三段,即网段必须和前面保持一致,第四部分随意,虚拟交换机IP就是网关IP。
起始和结束的IP网段也必须和前面保持一致,这个范围不要包括网关IP(如果NAT模式下有多台虚拟机,就把范围扩大)。
主机:网络和共享中心>更改适配器设置>VMnet8>属性>Internet协议版本4
桥接模式
虚拟机IP配置要与主机(一般为Windows)的IP网段要保持一致,即前三段一致,最后随便配置,但是不要与主机一样。
虚拟机:终端>修改网络配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33
>配置静态IP(IP、网关,连接外网需要配置DNS)>esc
>保存退出:wq
>重启网卡服务systemctl restartnetwork service
虚拟机网卡冲突
创建虚拟机过程中,根据开发环境或者是实验环境的需要,一个虚拟机会创建多块网卡。两块网卡之间可能会出现冲突,虚拟机设置中删除一块网卡,或者在虚拟机中禁用一块网卡即可。
如果必须要使用到多块网卡,就必须设置好不同网卡的不同网段,防止冲突。
主机虚拟网卡问题
使用VMware创建虚拟机之后,主机会自动创建两块虚拟网卡VMnet1和VMnet8,对应VMware虚拟网卡编辑器中的VMnet1和VMnet8,将故障网卡禁用,然后重新启用即可。
最后可以重启电脑,或者重新安装网卡驱动。
测试
常见问题
Q:本来可以互相ping通,突然间主机ping不通虚拟机,而虚拟机可以正常联网,可以ping主机。
A:虚拟机一段时间不用了,再打开,主机就ping不通虚拟机,SSH也连接不上,这种情况99%都是VMware Network Adapter Vmnet8的IP和虚拟机IP不在同一个网段导致的。默认是自动获取IP地址,VMware Network Adapter Vmnet8的IP如果没有设置静态IP的话,其IP地址随着主机开关机是会变化的。当虚拟机启动后,禁用,然后再启用,就会自动设置同网段IP,一般可以解决问题。如果还不行的话,就设置VMware Network Adapter Vmnet8的静态IP与虚拟机同网段,但若与主机网卡的IP段一样,比如无线,会导致网络连接不上。
注:只要虚拟机可以正常上外网,VMware和虚拟机的网络设置就没有问题。