LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 647|回复: 3

iptables状态跟踪问题

[复制链接]
发表于 2005-4-16 10:26:26 | 显示全部楼层 |阅读模式
使用iptables做nat共享上网,当局域网内所有的客户端都下线关机后,在/proc/net/ip_conntrack中你会发现很多的状态为ESTABLISHED(建立)的连接。这些是由于客户端没有正常关闭tcp连接造成的,而且其默认超时时间是5天,换句话说也就是5天后才能清理掉。当你的局域网共享上网的机器很多时这些死掉的连接就要造成问题了,它们会很快填满状态跟踪列表,使正常的连接无法建立。
高版本iptables的conntrack模块时间参数可通过修改在/proc/sys/net/ipv4/netfilter/下的文件进行调整。我现在就是修改ip_conntrack_tcp_timeout_established 文件内容为14400来缩短tcp连接建立时间为4小时。但同时带来新的问题,所有的连接(包括正常的)都会4个小时断掉。如果iptables能通过tcp_keepalive来处理这个问题就不会有这种问题了,但不知是否iptables有这种机制。

不知各位有什么更好的解决办法,请不吝赐教!
 楼主| 发表于 2005-4-16 10:37:09 | 显示全部楼层
tcp starts a keepalive timer for each connection. if the connection is idle
for tcp_keepalive_time seconds, it starts sending probes to the other end.
It sends a maximum of tcp_keepalive_probes each tcp_keepalive_intvl
seconds apart, and if the other end hasnt responded by then, it drops the
connection.


default values:


tcp_keepalive_intvl = 75 seconds
tcp_keepalive_probes = 9
tcp_keepalive_time = 7200 seconds (2 hours)
回复 支持 反对

使用道具 举报

发表于 2005-4-17 14:19:36 | 显示全部楼层
按楼上的说法如果在超过了时间的话,服务器向客户端发送一个probe来探测客户端是否还存在.那么楼主那里在过了4小时后正常的连接应该不会断呀.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-17 20:12:37 | 显示全部楼层
ip_conntrack_tcp_timeout_established 是iptables状态跟踪维持一个连接的时间,设置为14400,也就是每个tcpip连接最长能维持4小时。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表