对方设备掩码设置255.255.255.252造成ping不通time out
公司一个设备有问题要进行复现,拿到后不知道ip地址,无法通过web来查看配置,通过串口看配置文件后看到管理口snmp的ip是management-port ip address 172.26.0.214 255.255.255.252,看到这里觉得是个b类地址,pc配置一个172.16.0.145的ip后去ping。发现不通,显示time out。但从设备串口上执行ping主机pc的ip却可以ping通,无法用telnet和web进行访问,为什么?
ping出现time out的可能原因有:
1、目的设备防火墙拦截的ping的request消息,导致高层无法收到,所以不回ping的reply消息。
2、跨网段环境中存在ip冲突,导致网关把ping的request消息发给其他mac地址。
3、也与目的主机的路由相关,没有回程路由,如同网段可能掩码错误,没有配置网关的情况。
4、回程路由指向其他ip地址,导致源ip没有收到ping的reply消息。
5、ping消息的入接口和回程出接口不是设备的同一接口等等原因造成。
查看arp缓存发现arp有的,如下图:
奇怪,查看arp发现对方的设备已经给回arp请求了,用windump抓包看看。
发现对方arp响应已经发出,pc的ping的request消息已经发出,但icmp的reply消息没有,
问题在设备侧,为啥没回ping的reply消息?串口登录设备查看设备的路由
发现直连的outband的路由是172.26.0.212/30,就是掩码是255.255.255.252,就是掩码是在第四段变化,ip与掩码得出网络地址。网络地址算法如下:
172 26 0 214 第四段 1101 0110
255 255 255 252 掩码 1111 1100
172 26 0 212 结果 1101 0100 网络地址是172.26.0.212
而pc配置的地址172.16.0.145与255.255.255.252与的结果是172.16.0.144,显然不上同一网段的地址,没有对应的回车路由,符合原因3的可能,所以ping设备snmp口ip会出现没有响应。
设备的掩码是30位,主机位是2位,子网的ip个数是2^2=4个,所以网络地址172.26.0.212,广播地址是172.16.0.215,这两个地址不可用,可用ip访问是172.26.0.213和172.26.0.214,设备用了214这个地址,所以pc应该配213这个地址。
重新去ping,结果如下:
抓包显示如下:
可以看到arp消息均正常,ping的包正常,ping的序号请求,应答序号正常。
对于设备ping出来,携带的源ip172.26.0.214,与255.255.0.0的pc掩码与,结果是172.26.0.0的网络地址,显然和172.26.0.145是一个网段,pc会响应ping的request消息。所以设备能ping通pc。
问题解决。
知识点:
5、ping的回显time out证明已经发出的request消息出去,没有收到响应而已。
6、可用ip的范围是网络地址+1,到广播地址-1。