您的位置:首页 > 运维架构 > Linux

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

2016-01-08 17:23 411 查看
近期,笔者维护的服务器环境出现了一些连接异常,一些机器能连接,一些机器不能连接,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即可。

参数具体含义,请自行在网上搜索。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: