2010年7月23日金曜日

iptablesのip_conntrackが上限に達した場合の対処方法


ログを確認していると何かエラーが出ていた
# tail -f /var/log/messages
ip_conntrack: table full, dropping packet

iptablesのセッション管理テーブル(ip_conntrack)が上限に達したようである


解消方法は二つ。
ESTABLISHEDな状態を記録する期間を短くする
ip_conntrackに記録できる上限数を上げる


【OSパラメータの変更作業】
◆ 現在の使用状況の確認
# cat /proc/sys/net/netfilter/nf_conntrack_count


◆ 現在の設定値の確認
# sysctl -a | grep nf_conntrack
net.netfilter.nf_conntrack_tcp_timeout_established = 432000 ← の対策
net.netfilter.nf_conntrack_max = 65536 の対策
net.nf_conntrack_max = 65536 の対策

正確には上は設定値なので、proc配下あたりの
該当キーを見た方がいいかもしれない。
# cat /proc/sys/net/~


◆ 設定ファイルの編集
# vi /etc/sysctl.conf
net.netfilter.nf_conntrack_tcp_timeout_established = 2000
net.nf_conntrack_max = 1048576
net.netfilter.nf_conntrack_max = 1048576


◆ 設定反映
# sysctl -p


◆ 事後確認
# sysctl -a | grep nf_conntrack
net.netfilter.nf_conntrack_tcp_timeout_established = 2000
net.netfilter.nf_conntrack_max = 1048576
net.nf_conntrack_max = 1048576


意外と見落としがちなポイントではないだろうか。
それ以外のチューニングすべき項目はこちらを参考にしてほしい。

また、iptables関係で、ここも気をつけるポイントだろう。