前言
众所周知,虚拟机需要设置为桥接模式,才可以实现像真机一样接入网络,从而和宿主机实现相互通信。
然而,在我将VirtualBox虚拟机设置为桥接模式后,却出现虚拟机和宿主机依旧无法相互ping通的问题。
如下图所示。
虚拟机(Windows7)ping宿主机(Windows10)的情况:
宿主机ping虚拟机的情况:
其中,192.168.2.1为网关,可以看到,宿主机都能够ping通网关,但是却无法成功互ping。
解决思路
1. 设置网络位置
我分别在虚拟机和宿主机中设置网络位置为家庭网络,即受信任的网络,避免网络隐藏导致的无法相互通信。
注:Windows 10中没有所谓的“网络位置”,而是换成了如图所示的“网络配置文件”,设置成“专用”即是同样的效果。
然而,经过这些配置后,依旧没能ping通。
二、关闭系统防火墙
有另外一个可能的原因,是系统防火墙影响了两机的通信。
我打开了安全中心,提示是防火墙处于非活动状态(因为我安装了杀毒软件)。
而且也没有任何通知提示我防火墙拦截了通信。
所以我大概排除了防火墙的问题。
但出于严谨,我还是决定试试。
由于在WIndows安全中心中找到关闭防火墙的操作,我进入了控制面板,把防火墙彻底关闭,如图所示。
再次尝试互ping,结果如下:
实践证明,是防火墙的问题,我打脸了。
后续
既然知道的防火墙的锅,那么就该对防火墙进行配置了。
(我可不想因为开个虚拟机而把防火墙彻底关闭了)
经过一番摸索,我最终在一篇博客上找到了关于防火墙的解决方案。
只要在防火墙高级设置中,将入站规则中的**文件和打印机共享(回显请求 - ICMPv4-In)**启用即可。
总结
ICMP是网络层的协议,PING是其中一个最常见的应用。
之所以会出现Virtualbox宿主机与虚拟机无法ping通,是因为宿主机中防火墙的ICMP规则未启用(默认情况),导致无法实现与虚拟机的互ping。
参考资料
原创不易,感谢支持。