Linux系统的TCP/IP协议栈重定向选项被关闭,无法响应网关发来的ICMP重定向消息,导致收发数据时出现严重的丢包问题
linux重定向
给客户部署的系统中,有台设备放置于某个网络节点下,给该设备配置了该节点下的默认网关,结果联调下来发现,所有的其他节点下的其他设备都没问题,就这台设备有问题,这台设备发出来的数据有严重的丢包问题。
现场人员和客户一起做了对比测试,把客户之前购买的别的厂商的设备放置在该网络节点下,别的厂商的设备都没有丢包问题,就我们公司的设备有问题。期间,我们给客户调拨了一个我们几年前研发的一款老式设备,放置在该节点下也没问题,就当前使用的新式设备有问题。
这个问题折腾的比较久,始终没有查出来问题,后来公司的顶级专家来排查,才查出来问题。这台设
备发出去的数据,默认情况下都要通过其配置的默认网关发出去,抓包发现,默认网关会给设备发了ICMP重定向消息,该消息中携带一个IP地址,该消息是用来告诉设备,要发送数据都从这个IP发出去。
一般情况下,协议栈在收到这个ICMP重定向消息后,会向系统路由表中添加一条路由,这样要发送的数据会使用这条路由中的IP 发送出去。通过大量的抓包分析之后,到了问题的症结,是因为设备内置的Linux系统的TCP/IP协议栈的重定向选项都被关闭导致的,在linux命令行使用命令sysctrl -a | grep redirects可以查看到:
我们硬件设备中的使用的Linux系统是经过裁剪后部署进去的,之前在系统裁剪时,出于安全考虑,将系统的TCP/IP网络协议栈中所有重定向选项都关闭了,所以此案例中默认网关发过来的ICMP重定向消息被丢弃了,导致发出的数据还是发到默认网关上,但从默认网关出去的数据会有明显的丢包问题(客户网络环境故意这么处理的,不让数据从默认网关出去),所以出现了最开始出现的问题。
此问题的临时解决办法是手动将这些重定向选项打开,后续进行Linux系统裁剪时要将这些重定向选项打开。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。