主机虚拟机互Ping问题详解以及原理、解决互ping不通方案

本文涉及的产品
云防火墙,500元 1000GB
简介: 主机虚拟机互Ping问题详解以及原理、解决互ping不通方案

一、PING程序原理


1.ICMP协议


PING程序实现的协议是ICMP,ICMP是(Internet Control Message Protocol)Internet控制报文协议。

ICMP报文格式:


20201103105639222.png

它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。PING命令无非是往ICMP中填写适当的数据,然后交给下层的IP层来发送数据。不过在数据包发出去之前,需要知道目标设备的物理地址。 这是由于在IP层的下面一层是链路层,需要提供源设备的物理地址和目的设备的物理地址。目前来说,我们只知道目的设备的IP,源设备也就是自己的IP和物理地址。 这就涉及到另外一个问题,如何通过目的设备的IP得到目的设备的物理地址信息。


2.ARP协议


TCP/IP协议提供了ARP协议专门负责进行物理地址寻址。

ARP报文格式:


20201103105735799.png


地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息。由于ARP也属于第3层,使用链路层发送数据包,需要提供目的设备和源设备的物理地址,其实就是链路层的信息头。 看起来比较矛盾,因为我们就是不知道目的设备的物理地址才会请求ARP进行物理地址寻址的。


TCP/IP对第二层链路层提供了2个特殊的地址:全0x00和全0xFF的物理地址,分别表示源设备物理地址未知和目的设备物理地址未知。当ARP发送寻址请求时,目的设备的物理地址全部为0xFF,代表着目的物理地址未知,这种情况下,我们称这个数据包为广播数据包。为了和IP层定义的广播区别,称为2层广播。


有了广播,那些收到广播的设备就可以对这个ARP请求进行相应了。 为此,接收设备会将数据包拆包,提取ARP协议中的目标IP与本设备的IP进行匹配。匹配成功则认为请求的是自己的物理地址,不成功则忽略。


二、寻址机制


当源主机访问目标主机时,首先看两者的IP在不在同一网段,结果是:


1 两者在同一网段,就会直接把包发向目标IP,这时要做:


       1.1 查本地arp缓存,看看是否有IP和Mac的对应表.


             1.1.1 有,直接向网络上发包,包中包括原mac及目标mac。


              1.1.2 没有,则向网络发arp广播,用来查找与目标IP对应的mac地址(ARP发送的是广播数据,电缆上的每个以太网接口都要接收广播的数据帧)。


                        1.1.2.1 如果查到了,则向网络发包。


                        1.1.2.2 没查到,则不通讯。


2 两者不在同一网段,则把目标地址转为网关地址(也就是平时说的向网关发包),然后查找本地arp缓存,继续1.1 。


两者不在同一网段,则把目标地址转为网关地址(也就是平时说的向网关发包),然后查找本地arp缓存,继续1.1 。

由此可以看出,源主机和网关的通讯过程中,并不会检查两者是不是同一网段,而是直接去查arp缓存或者发送ARP广播。所以是可能通讯的。


但实际路由设备上要配回程路由,否则光靠默认机制的话ping不通的。


三、虚拟机与主机互ping问题解决


1.虚拟机网络连接模式


安装了虚拟机,以太网选的是默认的桥接,可安装完后,不能和主机ping通,也不能ping通网关。

在虚拟机设置网络适配器中可发现:

2020110411221820.png


VMnet0(桥接)      桥接到ADMtek AN983 10/100 PCI Adapter - 数据包计划程序微型端口

VMnet1(仅主机)    一个私有网络和主机相连

VMnet8(NAT)       用于共享主机的IP地址


1.Bridge模式(桥接模式)


这种模式是在新建虚拟机的时候默认选择的,是将虚拟主机的虚拟网卡桥接到一个Host主机的物理网卡上面,实际上是将Host主机的物理网卡设置为混杂模式,从而达到侦听多个IP的能力。在这种模式下,虚拟主机的虚拟网卡直接与Host主机的物理网卡所在的网络相连,可以理解为虚拟机和Host主机处于对等的地位,在网络关系上是平等的,没有谁主谁次、谁前谁后之分。


2.NAT模式


   这种模式下Host主机的“网络连接”中会出现了一个虚拟的网卡VMnet8(默认情况下)。如果你做过2000/2003的NAT服务器的实验就会理解:Host主机上的VMnet8虚拟网卡就相当于连接到内网的网卡,Host主机上的物理网卡就相当于连接到外网的网卡,而虚拟机本身则相当于运行在内网上的计算机,虚拟机内的虚拟网卡则独立于Virtual Ethernet Switch(VMnet8)。在这种方式下,VMware自带的DHCP服务会默认地加载到Virtual Ethernet Switch(VMnet8)上,这样虚拟机就可以使用DHCP服务。


3.Host-Only模式


  这种模式是一种封闭的方式,适合在一个独立的环境中进行各种网络实验。这种方式下Host主机的“网络连接”中出现了一个虚拟的网卡VMnet1(默认情况下)。和NAT唯一的不同的是:此种方式下,没有地址转换服务。因此这种情况下,虚拟机只能访问到主机,这也是Host-Only的名字的意义。


2.NAT模式下Ping问题


由于我使用的是NAT模式,所以仅仅讨论这个模式下主机和虚拟机互Ping问题,一方面是解决这类问题比较有信心,另一方面是对其他问题没有十足的把握能解决。


切换到NAT模式虚拟机一般都是能够上网的,而且是可以PING通主机的,但是主机ping不通虚拟机。


打开cmd->输入ipconfig:


20201104113242889.png

20201104114050539.png


20201104113713707.png


用虚拟机Ping主机IPv4地址能够Ping通,但是在虚拟机里面输入ifconfig得到IPv4地址在主机内就会请求超时。


20201104114516823.png

首先一点可能是防火墙的原因,先关闭防火墙


service iptables stop / service firewalld stop
service iptables status / service firewalld status

查看防火墙状态:


20201104113743586.png

关闭主机防火墙

对VM8进行设置:

将虚拟机对应的ip与windows网络设置中VMNet8的保持一致即可

20201104114015936.png


使得虚拟机IP和VM8在同一网段之下,这样可以通过ICMP和ARP协议获取目的地址的mac地址,取得通信。

再次Ping虚拟机:

20201104114917316.png

问题解决。

目录
相关文章
|
3月前
|
Ubuntu 网络安全 虚拟化
VMware虚拟机ping不通原因排查及分析
下面以 VMware 虚拟机为例进行介绍。
2183 3
|
4月前
|
存储 Dart Java
Dart 虚拟机运行原理
【10月更文挑战第20天】Dart 虚拟机通过一系列复杂的机制和操作,确保 Dart 代码能够准确、高效地执行。它为 Dart 语言的广泛应用提供了坚实的基础和可靠的运行环境
79 6
|
4月前
|
Linux 网络安全
Linux虚拟机与主机和Xshell的连接问题解决
Linux虚拟机与主机和Xshell的连接问题解决
178 1
|
6月前
|
虚拟化
vmware虚拟机使用主机代理访问谷歌
vmware虚拟机使用主机代理访问谷歌
|
5月前
|
虚拟化
虚拟机系统Win7与主机之间不能实现拖放的问题及解决方法
虚拟机系统Win7与主机之间不能实现拖放的问题及解决方法
112 0
|
6月前
|
网络协议 Linux 测试技术
基于PING命令的主机探测
基于PING命令的主机探测
132 3
|
6月前
|
网络协议 安全 Linux
在Linux中,当一台服务器无法ping通其他主机时,可能有哪些原因?
在Linux中,当一台服务器无法ping通其他主机时,可能有哪些原因?
|
7月前
|
存储 监控 Java
揭秘Java虚拟机:探索JVM的工作原理与性能优化
本文深入探讨了Java虚拟机(JVM)的核心机制,从类加载到垃圾回收,再到即时编译技术,揭示了这些复杂过程如何共同作用于Java程序的性能表现。通过分析现代JVM的内存管理策略和性能监控工具,文章提供了实用的调优建议,帮助开发者有效提升Java应用的性能。
100 3
|
7月前
|
存储 监控 安全
深入理解Java虚拟机(JVM)原理
深入理解Java虚拟机(JVM)原理
|
7月前
|
域名解析 缓存 网络协议
计算机网络——ping命令过程的详解、原理
计算机网络——ping命令过程的详解、原理

热门文章

最新文章