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

简介: 主机虚拟机互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

问题解决。

目录
相关文章
|
1天前
|
Shell Linux 开发工具
Vmware 虚拟机挂起恢复后发现无法 Ping 通,无法连接到主机
在Linux主机上,以`root`用户停止NetworkManager服务并重启网络: ```shell systemctl stop NetworkManager systemctl restart network ``` 或修改网卡配置文件`ifcfg-ens33`,添加`NM_CONTROLLED="no"`,然后重启`network`服务: ```shell vim /etc/sysconfig/network-scripts/ifcfg-ens33 systemctl restart network ```
|
12天前
|
Oracle Java Serverless
JVM工作原理与实战(三十六):GraalVM虚拟机
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了GraalVM、GraalVM的两种运行模式、GraalVM应用场景、参数优化和故障诊断等内容。
21 1
|
12天前
|
存储 监控 安全
JVM工作原理与实战(十六):运行时数据区-Java虚拟机栈
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了运行时数据区、Java虚拟机栈等内容。
15 0
|
12天前
|
网络协议 Linux 网络安全
虚拟机Vmware详细安装(包含kali,win7与winxp三系统相互ping与安装)
本文是一篇关于虚拟机安装和配置的教程,包括使用VMware安装虚拟机和在虚拟机中安装Kali Linux、Windows 7和Windows XP系统。作者提供了详细的步骤和截图说明,指导读者如何下载和安装VMware,以及如何从提供的链接下载预配置的操作系统镜像文件。安装过程中,重点介绍了如何选择安装路径、接受许可协议、启动安装过程,并强调了不要勾选某些选项以保持默认设置。此外,还提到了如何在虚拟机中配置网络,确保三个系统在同一网段并能互相ping通。最后,作者布置了一些练习,如熟悉操作系统的使用、获取IP地址和互相通信,以及鼓励读者享受学习网络安全的过程。
91 9
|
12天前
|
监控 Shell
生产环境Shell脚本Ping监控主机是否存活(多种方法)
生产环境Shell脚本Ping监控主机是否存活(多种方法)
|
12天前
|
监控 Shell
Shell脚本Ping监控主机是否存活并发邮件报警(三种方法)
Shell脚本Ping监控主机是否存活并发邮件报警(三种方法)
|
12天前
|
网络协议 Linux 程序员
【Linux】虚拟机ipv4地址消失,主机ping不通
【Linux】虚拟机ipv4地址消失,主机ping不通
44 0
|
12天前
|
网络协议 Shell Linux
【Shell 命令集合 网络通讯 】⭐⭐⭐Linux 测试与目标主机之间的网络连接ping 命令 使用指南
【Shell 命令集合 网络通讯 】⭐⭐⭐Linux 测试与目标主机之间的网络连接ping 命令 使用指南
50 1
|
6月前
|
运维 网络协议 网络安全
百度搜索:蓝易云【你知道ping命令是如何工作的吗?】
需要注意的是,某些网络环境下,ICMP流量可能被防火墙或路由器过滤或限制,因此 `ping`命令可能无法正常工作。此外,`ping`命令只能提供基本的连通性和延迟信息,并不能完全反映网络的性能状况。
71 2
|
12天前
|
监控 安全 Linux
【专栏】Linux中六个常用的网络命令:ping、traceroute、netstat、nmap、ifconfig和ip
【4月更文挑战第28天】本文介绍了Linux中六个常用的网络命令:ping、traceroute、netstat、nmap、ifconfig和ip,以及它们在测试网络连通性、追踪路由、查看网络状态、安全扫描和接口配置等场景的应用。通过学习和运用这些命令,系统管理员和网络爱好者能更有效地诊断和管理网络问题,确保网络稳定运行。