正在加载...
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]

Linux NAT ip_conntrack: table full

[ 2011/07/02 18:05 | by selboo ]
Web服务器用了一段时间,随意间使用dmesg命令后竟然发现了一些奇怪的内核日志,如下:
ip_conntrack: table full, dropping packet.

后来才知道, Linux TCP 的 ip_conntrack 模块会记录 tcp 通讯协议的 established connection 记录, 而且默认 timeout 时间长达五天 (432,000 秒), 由于Web站点使用memcached因此怀疑一些TCP链接从来就没有释放过,所以导致这种问题。

解决方法 (1): 加大 ip_conntrack_max 值

查出原本的 ip_conntrack_max 值:
指令: cat /proc/sys/net/ipv4/ip_conntrack_max

写入理想的数值 (每一个 ip_conntrack buffer 会占用 292 Bytes)
指令: echo "数值" > /proc/sys/
Oct 22 22:11:59 ha2 kernel: printk: 160 messages suppressed.
Oct 22 22:11:59 ha2 kernel: ip_conntrack: table full, dropping packet.
Oct 22 22:11:59 ha2 kernel: ip_conntrack: table full, dropping packet.
Oct 22 22:12:03 ha2 kernel: printk: 514 messages suppressed.
Oct 22 22:12:03 ha2 kernel: ip_conntrack: table full, dropping packet.
Oct 22 22:12:08 ha2 kernel: printk: 255 messages suppressed.
Oct 22 22:12:08 ha2 kernel: ip_conntrack: table full, dropping packet.
Oct 22 22:12:12 ha2 kernel: printk: 498 messages suppressed.
Oct 22 22:12:12 ha2 kernel: ip_conntrack: table full, dropping packet.
Oct 22 22:12:17 ha2 kernel: printk: 876 messages suppressed.
Oct 22 22:12:17 ha2 kernel: ip_conntrack: table full, dropping packet.
Oct 22 22:12:22 ha2 kernel: printk: 924 messages suppressed.
Oct 22 22:12:22 ha2 kernel: ip_conntrack: table full, dropping packet.
Oct 22 22:12:27 ha2 kernel: printk: 936 messages suppressed.
Oct 22 22:12:27 ha2 kernel: ip_conntrack: table full, dropping packet.
Oct 22 22:12:32 ha2 kernel: printk: 959 messages suppressed.
Oct 22 22:12:32 ha2 kernel: ip_conntrack: table full, dropping packet.
Oct 22 22:12:37 ha2 kernel: printk: 898 messages suppressed.
Oct 22 22:12:37 ha2 kernel: ip_conntrack: table full, dropping packet.

查看系统ip_conntrack_max大小
cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max
32768

这个值太小了

增大其值

vi /etc/sysctl.conf

net.ipv4.ip_conntrack_max=6553600
net.ipv4.netfilter.ip_conntrack_max=6553600
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120

sysctl -p

让其生效

sysctl.conf优化

[ 2009/05/07 09:52 | by selboo ]
===============================================================
所有rfc相关的选项都是默认启用的,因此网上的那些还自己写rfc支持的都可以扔掉了
===============================================================
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
=============================================
通过源路由,攻击者可以尝试到达内部IP地址 –包括RFC1918中的地址,所以不接受源路由信息包可以防止你的内部网络被探测。
================================================
net.inet.tcp.drop_synfin=1
==================================================
Tags: , ,
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]