最近收到Iptables服务器报警"nf_conntrack: table full, dropping packet."。通过对日志分析,最终将问题解决了。给你们分享一下。
linux
问题分析:服务器
ip_conntrack是linux NAT的一个跟踪链接条目的模块,与Iptables相关,ip _conntrack模块会使用一个哈希表记录 tcp 通信协议的 established connection记录,当这个哈希表满了的时候,便会致使nf_conntrack: table full, dropping packet错误,因为该物理机运行多虚拟机,哈希表满的概率很大。 tcp
处理办法:ide
处理方法有两种。spa
修改/etc/modprobe.d/nf_conntrack.conf配置并关闭iptables服务:.net
more /etc/modprobe.d/nf_conntrack.conf
日志
开启options nf_conntrack hashsize=131072 调整nf_conntrack表大小。orm
service iptables stopblog
chkconfig iptables offip
2.修改/etc/sysctl.conf中ip_conntrack的值
net.netfilter.nf_conntrack_max = 655350 #设置最大跟踪链接数655350,该设置会增大内存开销。
net.netfilter.nf_conntrack_tcp_timeout_established = 300 #设置跟踪链接保存5小时。
sysctl -p
3.总结
防火墙有条件交给上层硬件设备完成会更好,使用系统防火墙必定要作调优;若是不须要防火墙的跟踪功能,规则简单的能够开启NOTRACK选购,条件容许的状况下就删除它。