局域网内网中ping不通,有几种情况:
一,一种情况是目的ip和源ip是同一网段的,ping的结果是“无法访问目标主机”,这时用arp -a | findstr ip地址,看是否获取到对应的ip地址的mac,没有的话,应该是ping命令执行时,发出的请求对方的mac地址的arp消息没有得到应答,此时根本没有发出ping的request消息。这时,要检查对方是否开机?ip是否存在?有跨交换机vlan的话,检查对应的中间trunk链路是否导通?arp消息是否能到达目的ip侧?对方是否收到arp请求消息?最好能在对方pc上抓包,看arp请求消息是否到达目的地址的主机,再逐级排查。
ping的过程,同网段的查询路由表,发现是直连路由,查询arp缓冲没有发现目的ip的mac地址,就用直连接口的ip作为源ip去查询目的ip的mac地址,如果得到响应,会用此mac地址作为目的mac组成icmp请求包发出。没有响应,arp请求消息会发出多次在ping的过程中。
如下图:我们用windump抓包,去ping一个不存在的地址。
cmd下用ipconfig/all去查看网卡的信息如下:
去ping一个ip为192.168.1.105去看看结果如何?同时用windump进行抓包观察:
正常的ping消息有响应的抓包如下:
若是同网段,ping后显示time out超时,检查arp -a有对应的目的ip的mac地址,证明网络层的ping的request消息已经发出,而且已经到达目的主机的网络,要么没回ping的reply消息,要么回到其他地方去了?前者检查对应主机的防火墙是否设置,禁止了对ping的request进行响应?放开就行了或者关闭防火墙。后者检查路由表,是否因为掩码问题,发给其他地方?
二,目的ip和源ip不是同一网段
ping命令发出后,提示“无法访问目标主机”,跨网段ping消息,没有直连路由的话,会首先检查是否有配置默认网关,有的话,检查arp缓存是否有网关的mac地址,没有的话,会发出arp查询网关的mac地址,有的并且响应后,直接组包发给网关的mac。出问题时:应该去检查路由表是否有缺省的路由?检查arp表是否有网关的mac地址?没有路由,添加对应的网关地址;没有获得网关mac,检查到网关通道是否通畅?还有一种情况目的