海运的博客

Iptables之conntrack连接数跟踪模块及最大连接数配置

发布时间:June 7, 2012 // 分类:Iptables // No Comments

Iptables是有状态机制的防火墙,通过conntrack模块跟踪记录每个连接的状态,通过它可制定严密的防火墙规则。
可用状态机制:

NEW #新连接数据包
ESTABLISHED #已连接数据包
RELATED #和出有送的数据包
INVALID #无效数据包

conntrack默认最大跟踪65536个连接,查看当前系统设置最大连接数:

cat /proc/sys/net/ipv4/ip_conntrack_max 
#新版方法
cat /proc/sys/net/netfilter/nf_conntrack_max

查看当前跟踪连接数:

cat /proc/net/ip_conntrack|wc -l
#新版方法
cat /proc/net/nf_conntrack | wc -l

当服务器连接多于最大连接数时会出现kernel: ip_conntrack: table full, dropping packet的错误。
解决方法,修改conntrack最大跟踪连接数:

vim /etc/sysctl.conf #添加以下内容
net.ipv4.ip_conntrack_max = 102400
#以下为新版方法
net.netfilter.nf_conntrack_max=102400
net.nf_conntrack_max=102400

立即生效:

sysctl -p

为防止重启Iptables后变为默认,还需修改模块参数:

vim /etc/modprobe.conf #添加以下内容
options ip_conntrack hashsize=12800 #值为102400/8

一劳永逸的方法,设置Iptables禁止对连接数较大的服务进行跟踪:

iptables -A INPUT -m state --state UNTRACKED,ESTABLISHED,RELATED -j ACCEPT
iptables -t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK
iptables -t raw -A OUTPUT -p tcp --sport 80 -j NOTRACK
分类
最新文章
最近回复
  • chainofhonor: 感谢,用dnsmasq设置自动判断BIOS和UEFI成功了
  • 海运: 不好意思,这个是很多年前的,现在也许已经不适用,我现在也不用多线了。
  • CQ: -m state --state NEW 替换成-m conntrack --ctstate NEW
  • CQ: 你好,我入站已经成功分流,但是不知道出站怎么设置,PREROUTING替换成POSTROUTI...
  • K: 好的,谢谢,我去试试!
  • 海运: 可以试试3proxy
  • daha: PHP的怎么使用???
  • 海运: 换回了5.3内核,5.8用5.3 dtb虽然能开机且负载正常,但也有其它问题,不建议使用。
  • shangyatsen: 后面的内核高精度计时器的问题使用5.4或者5.3的dtb会正常吗?我也发现有这个日志出现。感觉...
  • 海运: 缺少相应模块?