网络ping不通是网络中出现频率最高的故障之一,同时也是最让人抓狂的故障,基本上大部分人都遇到过了,如果在项目中出现网络ping不通,没有一个有序的方法去排除解决,那么很难入手,也是讨论最多的问题之一,有不少项目经理到项目中经常遇到。我们来总结下网络ping不通是什么原因?

一、ping命令的原理

了解ping命令原因,我们来通过一个实例来了解。

假定主机A的IP地址是192.168.1.1,主机B的IP地址是192.168.1.2,都在同一子网内,则当你在主机A上运行“Ping 192.168.1.2”后,都发生了些什么呢?

首先,Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.1.2”一起交给IP层协议(和ICMP一样,实际上是一组后台运行的进程),IP层协议将以地址“192.168.1.2”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并在一个映射表中查找出IP地址192.168.1.2所对应的物理地址(也叫MAC地址,这是数据链路层协议构建数据链路层的传输单元帧所必需的),一并交给数据链路层。后者构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。

容器ping宿主机ip ping不通 ping不通主机ip的原因_网络


echo request”(回显请求)、“echo reply”(回显应答)

主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。

直接说,就是利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少。

从上面过程,就是ping命令的原理,主机A收到了主机B的一个应答包,说明两台主机之间的去、回通路均正常,但也并不是所有网络都是正常的,下面我们来看ping不通的原因。

二、同网段ping不通的原因

ping命令不通,主要有两种情况,一种是同网段内的ip地址ping不通,另一种是不同网段的ip地址ping不通,各个情况不一样,我们首先来看同网段ping不通的两种情况。

1)、同网段ping不通,结果是“无法访问目标主机”

目的ip和源ip是同一网段的,ping的结果是“无法访问目标主机” ,属于ping的请求没有发出。
我们来看下,ping同网段不存的ip地址。

ping的请求发出后,返回显示“无法访问目标主机"。

容器ping宿主机ip ping不通 ping不通主机ip的原因_区块链_02

什么原因呢?
说明此时,ping的需求并没有成功发出,这时,要检查:
1、对方是否开机?ip是否存在?
2、有跨交换机vlan的话,检查对应的中间trunk链路是否导通?
3、走直连路由是否正确?是否应该走默认路由,而走了直连路由。
4、子网掩码是否错误。
5、默认网关是否填写正确

2)、同网段ping不通,结果是“超时(time out)”

目的ip和源ip是同一网段的,ping的结果是“超时或者time out” ,属于ping的请求已经成功发出了,但目标主机没有回复。

容器ping宿主机ip ping不通 ping不通主机ip的原因_区块链_03

ping的请求发出后,返回显示“超时"。什么原因呢?
这种情况是ping已经成功发出了,到达了主机,但时没有得到响应,要检查:
1、检查下防火墙,防火墙禁止了对ping的回应。
2、子网掩码的设置错误,导致不在同一个网段。
3、设备硬件故障,导致设备没有对应的mac地址,无法生成路由表,而走默认路由。
4、ip冲突,或ip地址与直联路由不在同一个网段。
5、网关没有设置好

三、跨网段ping不通的原因

不同网段ping不通,可能的原因比较多,我们来看下跨网段常见的原因。

1)、跨网段ping不通,结果是“无法访问目标主机”
跨网段出现无法访问目标主机,说明请求没有成功发出,获取不了目的ip地址与mac地址。

容器ping宿主机ip ping不通 ping不通主机ip的原因_区块链_04

可能出现的原因是:
1、目的ip地址不存在。

2、检查路由表是否有缺省的路由
3、检查arp表是否有网关的mac地址
4、有网关设置错误
5、走了默认路由

2)、跨网段ping不通,结果是“time out”

若显示time out,表示ping的request消息已经发出,目的ip的网关已经获取到目的ip的mac地址,但是目的主机没有回复,或源主机无法收到。这些应该检查回程路由和节点回程路由。

容器ping宿主机ip ping不通 ping不通主机ip的原因_区块链_05

可能的原因有:
1、检查下防火墙,是否拦截了ping的请求消息。
2、检查经过节点的路由是否正确,或者是否有回程路由。
3、回程路由的硬件网卡出口和ping的request的入口网卡不是同一个
4、交换机vlan对应的接口全部down了,导致vlan状态down,vlan的对应路由没有生成。

四、总结

当我们网络ping不通时,首先要看ping显示的结果是”无法访问目标主机“还是”超时“,再看是同网段,还是不同网段,采取相应的分析方法,另外在分析与解决网络故障时,我们要熟练的了解ping、arp、tracert、route这几个命令的用法,可以快速的定位ping不通的原因。尤其是这arp、tracert、route这三个命令的用法,解决故障非常方便。

END