2012年4月23日月曜日

kernel: printk: 2 messages suppressed.

いつの間にか下記のエラーが頻発するようになっていた。

kernel: printk: 2 messages suppressed.

iptables を使っているとき、接続数が増えてくると /var/log/messages に上記のようなエラーが表示されることがあるらしい。
このエラーメッセージの意味は iptables の ip_conntrack という接続テーブルが一杯になってパケットが破棄されたという意味です。

まず、現在の ip_conntrack の最大値を確認するには、次のコマンドで確認する。

[root@hoge ~]# cat /proc/sys/net/ipv4/ip_conntrack_max
65536

次に、現在の ip_conntrack の数を確認するには、次のコマンドで確認します。

[root@hoge ~]# cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count
25

とりあえず、明示的にip_conntrack_maxの値を設定する。
/etc/sysctl.conf に下記を追記する。

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

この設定を有効にするために、次のコマンドを実行します。

[root@hoge ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
kernel.shmmni = 4096
kernel.sem = 250        32000   100      128
fs.aio-max-nr = 1048576
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
net.ipv4.netfilter.ip_conntrack_max = 65535

とえあえず、この設定で様子をみることにする。

0 件のコメント:

コメントを投稿