买了华为云的多台ECS,使用的CentOS 7.5 x64系统,对系统做了网络优化,优化的参数在公司LAN和阿里云服务器上均试验无问题。
问题描述:
1. 使用一段时间后,会出现不定期的公司办公室内ssh连接不上ECS的问题,既连不上22端口,也连不上其他服务端口。
2. ECS之间网络互访没问题。
3. 公司内用手机开了热点连接ECS也没问题。
4. 管理后台重启ECS后,网络连接恢复正常。
5. 公司内有一台安装了CentOS 7 的Linux服务器可以正常连接ECS,MacOS和Windows的工作机出问题时都连不上。
经过和华为云客服的三次排查,终于定位了问题,即net.ipv4.tcp_tw_recycle不能设置为1,必须设置为0
参考https://blog.csdn.net/jueshengtianya/article/details/52130667
有些服务器(当然客户端也可以)为了避免TIME_WAIT状态占用连接,希望能加快TIME_WAIT状态的回收,通常将net.ipv4.tcp_tw_recycle选项开启。当然这个选项的生效要依赖net.ipv4.tcp_timestamps选项的开启。虽然开启这个选项能够加快TIME_WAIT连接的回收,但却引入了另一个问题。我们先看下tcp_tw_recycle选项的工作机制:
当开启了tcp_tw_recycle选项后,当连接进入TIME_WAIT状态后,会记录对应远端主机最后到达分节的时间戳。如果同样的主机有新的分节到达,且时间戳小于之前记录的