====== ip_contrack ====== iptablesでは、関連したパケットを追跡するために/proc/net/ip_conntrackというファイルを作り、パケットの情報を記録しておきます。 このip_conntrackに記録できる上限数を決めているのが/proc/sys/net/ipv4/ip_conntrack_max。 システムで自動的に設定されるデフォルト値は搭載されているメモリーによって異なり、1GBで30000強、2GB以上で65536ぐらいになります。 1GBのメモリーを積んでいる場合、1時間あたりのアクセス数が100,000ページビュー程度までならデフォルト値でも問題ないのですが、 ぞれ以上になってくるとip_conntrack_maxの値を超えてしまい、パケットが捨てられてしまうという事態に陥ります。 ip_conntrack_maxの値を超えると、コンソールに以下のようなメッセージが出力されます。 ip_conntrack: maximum limit of 65536 entries exceeded /proc/net/ip_conntrackを見ると、ESTABLISHEDが大量に保存されている # cat /proc/net/ip_conntrack tcp 6 431999 ESTABLISHED src=192.168.100.50 dst=192.168.10.11 sport=62856 dport=22 packets=2107 bytes=129391 src=192.168.10.11 dst=192.168.100.50 sport=22 dport=62856 packets=2254 bytes=161844 [ASSURED] mark=0 secmark=0 use=1 tcp 6 431867 ESTABLISHED src=182.48.51.190 dst=192.168.10.11 sport=44108 dport=22 packets=1493774 bytes=185262756 src=192.168.10.11 dst=182.48.51.190 sport=22 dport=44108 packets=1491669 bytes=201699448 [ASSURED] mark=0 secmark=0 use=1 * これのMAX値が、ip_conntrack_max(デフォルト:65536) * これのESTABLISHED が保持される時間が、ip_conntrack_tcp_timeout_established(デフォルト 432000秒=(5日間)) ===== ①現在の値確認===== ==== CentOS5 ====  # cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count  # cat /proc/sys/net/ipv4/ip_conntrack_max  65536  # cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established  432000 ==== CentOS6/CentOS7 ==== # cat /proc/net/nf_conntrack | wc -l 14471 # cat /proc/sys/net/netfilter/nf_conntrack_count 14475 # cat /proc/sys/net/netfilter/nf_conntrack_max 65536 # cat /proc/sys/net/nf_conntrack_max 65536 ===== ②変更 ===== ==== CentOS5 ==== # cp -a /etc/sysctl.conf /etc/sysctl.conf.org # vi /etc/sysctl.conf net.ipv4.netfilter.ip_conntrack_max = 1210856 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 43200 ==== CentOS6/CentOS7 ==== net.netfilter.nf_conntrack_max = 1210856 net.nf_conntrack_max = 1210856 ===== ③反映 ===== # sysctl -p または # sysctl net.ipv4.netfilter.ip_conntrack_max=1200000 # sysctl net.nf_conntrack_max=1200000 ===== ④変更の確認 ===== # cat /proc/sys/net/ipv4/ip_conntrack_max 1210856 # cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established 259200 3日 172800 2日 86400 1日 43200 半日 ===== ④確認(sysctl) ===== # sysctl net.netfilter.nf_conntrack_max net.nf_conntrack_max net.netfilter.nf_conntrack_generic_timeout net.netfilter.nf_conntrack_max = 1210856 net.nf_conntrack_max = 1210856 net.netfilter.nf_conntrack_generic_timeout = 600 ===== ⑤ip_contrackのエラー ===== kernel: nf_conntrack: table full, dropping packet ===== 参考 ===== [[https://nazx.jp/x/CentOS_TIPS_002]] {{tag>iptables conntrack}}