当前位置:   article > 正文

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

虚拟网卡ping物理网卡


前言

配置完了静态IP虚拟机能够成功上网ping通网站后,准备打算通过本地连接虚拟机发现出现问题。虚拟机能够ping通本地,但本机ping虚拟机ip的时候发现请求超时。参阅了很多博客打算发现其原理为什么ping不通。此领域本人有诸多不明确疑问,可能文章会有些许错误,望大家在评论区指正,本篇文章错误将会不断更正维护。


提示:以下是本篇文章正文内容,下面案例可供参考

一、PING程序原理

1.ICMP协议

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

ICMP报文格式:

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

2.ARP协议

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

ARP报文格式:

地址解析协议,即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通网关。

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

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的名字的意义。

(转自:https://blog.csdn.net/qq_15037231/article/details/80340362)

2.NAT模式下Ping问题

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

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

打开cmd->输入ipconfig:

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

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

service iptables stop / service firewalld stop

service iptables status / service firewalld status

查看防火墙状态:

关闭主机防火墙

对VM8进行设置:

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

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

再次Ping虚拟机:

问题解决。


总结

参阅:

网关和IP地址不在同一个网段下_king523103的博客-CSDN博客_网关和ip地址不在同一个网段下

主机ping不通虚拟机,但是虚拟机能ping通主机_杜.的博客-CSDN博客_主机ping不通虚拟机,虚拟机能ping通主机

地址解析协议_360百科

icmp协议_360百科

在同一网段&不同网段下的Ping(史上最详细)_IT悟物穷理IT的博客-CSDN博客_不在同一网段能否ping通

https://blog.csdn.net/qq_15037231/article/details/80340362

https://blog.csdn.net/qq_15037231/article/details/80340362

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/623777
推荐阅读
相关标签
  

闽ICP备14008679号