现象:
10.46.60.162/163/164能互ping,10.46.60.170是个磁阵,但只有10.46.60.163能ping通170;在170端也未能ping通162/164,但能ping通163。
排查:
1. 查看了路由信息,默认网关为10.46.60.1,162和164都能ping通网关;
2. 查看了网络配置文件,无错误;
3. 通过tcpdump抓包,能看到162/164已发出icmp包,但没有抓到170的应答包;
4. traceroute连一条路径都找不到;
5. 开通了163的ip转发功能(echo 1 > /proc/sys/net/ipv4/ip_forward),在162/164指定到170的下一跳为163,但仍不能ping通;
6. 伪装ip后能ping通:
在163开了NAT功能伪装ip:
iptables -t nat -A POSTROUTING -o eth0 -s 10.46.60.162 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 10.46.60.164 -j MASQUERADE
在162/164增加路由信息:
route add 10.46.60.170 gw 10.46.60.163
7. 用户反馈发现某些ip为偶数的机器都无法ping通,尝试将162这台机的ip修改为165,并将之前的伪装ip操作还原之后,能ping通170。
根据以上的信息判断,与操作系统层面应该关系不大,应该为交换机和磁阵上有限制ip的操作。