大量client通过nat网关访问server的端口重用问题
大量client共享一个nat ip访问server时。由于nat为了快速回收端口而设置的timewait timeout时间很短,
短于server的timeout。这个时候会有重新复用了端口的包达到server的timewait状态的连接上,导致client无法访问。
可以用以下配置,让server端识别出这种情况继续提供服务:
server:recycle 关、reuse开,timestamp开。
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tw_reuse = 1
client:timestamp开
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tw_reuse = 1 (如果client需要回收连接,就配,否则不用配)
update:
recycle这个老的kernel代码,是不能开,因为老的kernel开了以后不光timewait,所有正常的连接都基于ip做了timestamp检查