赞
踩
配置完了静态IP虚拟机能够成功上网ping通网站后,准备打算通过本地连接虚拟机发现出现问题。虚拟机能够ping通本地,但本机ping虚拟机ip的时候发现请求超时。参阅了很多博客打算发现其原理为什么ping不通。此领域本人有诸多不明确疑问,可能文章会有些许错误,望大家在评论区指正,本篇文章错误将会不断更正维护。
提示:以下是本篇文章正文内容,下面案例可供参考
PING程序实现的协议是ICMP,ICMP是(Internet Control Message Protocol)Internet控制报文协议。
ICMP报文格式:
它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。PING命令无非是往ICMP中填写适当的数据,然后交给下层的IP层来发送数据。不过在数据包发出去之前,需要知道目标设备的物理地址。 这是由于在IP层的下面一层是链路层,需要提供源设备的物理地址和目的设备的物理地址。目前来说,我们只知道目的设备的IP,源设备也就是自己的IP和物理地址。 这就涉及到另外一个问题,如何通过目的设备的IP得到目的设备的物理地址信息。
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通网关。
在虚拟机设置网络适配器中可发现:
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)
由于我使用的是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通主机
在同一网段&不同网段下的Ping(史上最详细)_IT悟物穷理IT的博客-CSDN博客_不在同一网段能否ping通
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。