两个测试设备,192.168.104.100和192.168.3.100要测试相互访问,发现前者ping后者出现time out,后者ping前者正常导通。如下图:
奇怪,出现time out的原因:
分为前向问题和后向问题,前向发的有问题,导致目的方没收到,前向目的设备开启防火墙,拦截导致没收到。后向回的有问题,导致前向没收到等原因。
1、ping的request发的路由有问题,发到其他地方,导致对方没有收到。
2、对方收到request消息,但开启了防火墙,拦截了ping的request消息,导致高层没有收到,因此不回ping 的reply消息,导致发出方等待超时,显示time out。
3、目的方路由问题,收到request消息,但reply回到其他地方,导致发出方收不到reply,超时显示time out。或者没有回程路由,掩码错误等问题导致。
4、跨网段环境中存在ip冲突,目的网关的mac地址缓存被更新。导致网关把ping的request消息发给其他mac地址,导致目的设备根本没收到ping的request消息。
5、ping消息的入接口和回程出接口不是设备的同一接口等等原因造成。
192.168.3.100能ping通192.168.104.100,感觉是单向能ping通问题,检查一下192.168.3.100上的防火墙是否打开?
运行friewall.cpl,发现防火墙是关闭的,因此排除可能性2。
决定在发出方和接受方同时抓包,看看前向request对方是否收到?
抓包发现,开始ping时,192.1683.3.100没有收到任何icmp消息的包,难道符合可能性1?
查看192.168.104.100侧的抓包:
双网卡,打开两个网卡的抓包
发现ping出不通源mac和ping入导通的目的mac不一致,如下图:
ping不通的目的mac发到这个mac地址
检查不通时发现发到这个ip地址上去了
192.168.209.1 c8-50-e9-67-fa-0c
而应该走这个网卡:
ping入导通的源mac是上图的mac192.168.104.1 c4-a5-59-3d-b3-38,目的mac是 00-E0-4C-68-05-D5
检查路由:
符合情况1,前向发错了地方。
用强制指定ip,发现正常。
看wireshark抓包:
显然是 windows操作系统中跃点数低的路由优先使用这样的规则没生效导致的问题,具体原因不详。