最近收到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選購,條件容許的狀況下就刪除它。