网络技术

一次因ARP表错误导致的路径访问不一致的网络通讯故障

问题描述:

一天接到一个客户报障,说一台主机ping不通服务器,但他们之间的业务是正常的,也就是telnet通端口。

当时就觉得很奇怪,既然业务正常,只是Ping不通的话,说明网络是没问题的,那很大可能就是防火墙的策略没有放行icmp包。

处理过程:

1、 首先去防火墙上检查策略,发现策略已经放行icmp报文通过

2、 在防火墙上抓包,192.168.1.1能正常ping通192.168.3.1的主机,但3.1ping1.1的时候防火墙上就说建流失败,初步认定是因为数据包路径走向不一致导致的。即3.1发往1.1的数据包直接经过交换机到了1.1,而1.1回包先到防火墙,再到交换机,最后到了3.1。在3.1主动发起访问请求的情况下,1.1回包经过防火墙,防火墙没有查询到会话表,认为这个数据包无效,便直接丢弃,导致3.1无法收到回包。

3、 查询服务器、交换机上的路由表后,发现当初在设计时,就没打算让服务器与主机访问经过防火墙,所以服务器网关设到了SW1的子接口1.253上,然后在SW1上去往3.0网段的路由下一跳直接指向2.254,而数据包不应该经过防火墙的。防火墙上的路由表为去往192.168.3.0段的路由下一跳为192.168.1.253.

4、 在服务器1.1上tracert3.1,发现第一跳直接到了防火墙1.254而没到设定好的网关1.253,第二跳到了SW1(1.253),第三跳为R1(2.254),第四跳为主机3.1。但为什么服务器1.1不按设定好的网关走,要走自己走去防火墙上呢?这个问题一直困扰着我好几天,各种可能的尝试都试了,一直解决不了这个故障。。

5、 后面突然想到,会不会是服务器上的ARP表有错误呢?一查,果然是服务器把1.253的MAC地址学习成了1.254的,IP地址对应了错误的MAC地址,导致每次数据包第一跳都直接发到了防火墙上。

根因:

服务器学习到了错误的ARP表,IP对应了错误的MAC地址,导致数据包路径走向与预期不符。

解决方案:

可以尝试在服务器上删除这条ARP表,让服务器重新学习,或者添加一个静态对应表。由于这个变更需要重启网卡,服务器上跑着业务,风险较高,且该故障不影响业务正常运行,经过客户权衡,决定不对该故障做变更。

建议与总结:

新业务上线时,在设备上开启ARP静态绑定,或者启用防ARP攻击的功能。

aka阿凯
我还没有学会写个人说明!
查看“aka阿凯”的所有文章 →

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关推荐