NAT环境中tcp_tw_recycle造成的部分机器无法连接Linux机器

原创
2016/01/08 17:23
阅读数 502

近期,笔者维护的服务器环境出现了一些连接异常,一些机器能连接,一些机器不能连接,windows都可以正常连接。

内网的Linux机器,通过NAT映射对外提供服务,因为之前routeOS的配置原因,导致客户端IP全变为routeOS的内网关ip, 久久排查经过抓包发现,内网的Linux机器接收到了TCP SYN数据包,却没有作任何响应。


结论就是:

客户端在建立一个tcp连接时,可以携带自己的timestamp, 以防止检测数据包重发行为。当服务器收到同一个IP的SYN包时,就会去比较时间戳,检查SYN包的时间戳是否滞后,如果滞后,就将其丢掉(认为是旧连接的数据)。无论是客户端还是服务器端,如果任何一方用NAT方式连接,就可能产生这个问题的。


更重要的是,大量的移动用户,均是通过NAT方式共享连接3G/4G网络的,多个用户可能来自相同的出口IP, 如果不慎,就可能产生这个问题。

net.ipv4.tcp_tw_recycle 

net.ipv4.tcp_timestamps


以上两个参数,任何一个设置为0即可。

参数具体含义,请自行在网上搜索。

展开阅读全文
打赏
1
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
1
分享
返回顶部
顶部