您的位置:首页 > 其它

iptables的连接追踪机制和nf_conntrack调优

2015-12-23 19:53 323 查看
iptables/netfilter具有追踪连接状态功能,用于描述各会话连接之间的关系性。一般为四层协议:TCP/UDP/ICMP等等。
为什么要用追踪连接状态呢?iptables/netfilter默认规则为拒绝的情况下,当用户访问一个iptables/netfilter允许的服务(端口)的时候,服务器如果想要回复客户端则还需要为其设定一个放行的规则(如果有多个就要多个规则),然而这是多余的,当防火墙允许客户端向某服务通信时,则认为此连接一定是符合规则的,与之相对的通信都应该是可靠的,可以对其放行。这样就可以实现一条规则放行所有可信的通信,而不用多条规则。
iptables/netfilter追踪的连接状态有四种:
NEW新连接,发送的第一个包;
ESTABLISHED已经建立的连接
RELATED数据连接和命令连接之间的关系,FTP服
INVALID无效的报文请求,例如TCP的SYN,ACK,FIN都为1
iptables/netfilter的状态追踪由state模块提供,state底层依赖于nf_conntrack(2.6内核之前叫作ip_conntrack),nf_conntrack是内核功能,负责具体的连接追踪的实施。

nf_conntrack是有限制的,其根据内部算法,会在内核空间(内存)中记录各所追踪的连接的状态,并将其映射到/proc/net/nf_conntrack文件中。nf_conntrack连接追踪的限制由/proc/sys/net/nf_conntrack_max文件控制,可以修改该文件或者/etc/sysctl.conf。

相关的文件:
/proc/sys/net/目录
/proc/net/目录
# /proc/sys/net/nf_conntrack_max 定义连接追踪的最大值,建议按需调大此值;
# /proc/net/nf_conntrack
记录了当前追踪的所有连接
# /proc/sys/net/netfilter/nf_conntrak_tcp_timeout_established
ESTABLISHED超时时长,默认时间比较长,建议调小此值。
注:由于连接追踪的限制问题,当超过限制时,会导致服务器拒绝服务。此时就需要将/prc/sys/net/nf_conntrak_max调大。如果是一个流量特别大的服务器,不建议开启此功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息