祁门防火项目中出现公司内网部分主机访问生产环境服务器端口不通的问题,排查后排除了各种网络安全策略问题,最后怀疑是系统内核设置问题,经过测试,调整系统中关于网络的内核参数:

net.ipv4.tcp_tw_reuse =0
net.ipv4.tcp_tw_recycle = 0

将/etc/sysctl.conf中的上述两个参数设置为0,sysctl -p 生效

再进行测试,网络访问正常。

net.ipv4.tcp_tw_recycle开关,可以快速回收处于TIME_WAIT状态的socket(针对Server端而言)。

而实际上,当tcp_tw_recycle开启时(tcp_timestamps同时开启,快速回收socket的效果达到),对于位于NAT设备后面的Client来说,是一场灾难——会导到NAT设备后面的Client连接Server不稳定(有的Client能连接server,有的Client不能连接server)。也就是说,tcp_tw_recycle这个功能,是为“内部网络”(网络环境自己可控——不存在NAT的情况)设计的,对于公网,不宜使用。