ip_conntrack: table full, dropping packet

之前架設一台vpn時, 由dmesg看到一個警告訊息

"ip_conntrack: table full, dropping packet"

google了一下發現似乎是個還蠻常見的問題,通常是NAT user過多或是同時建立太多tcp connection,導致table爆炸,因為Linux Kernel在NAT預設的tcp timeout是五天,難怪user多就爆炸。所以改法很簡單,就是把table加大,timeout縮短即可,要注意的是table所使用的memory為

ip_conntrack_max * 232 Bytes

所以要小心大小,不要改的太爽,加到超過你記憶體能夠負擔的能力,步驟如下:

首先查看一下table size以及timeout預設是多少:

cat /proc/sys/net/ipv4/ip_conntrack_max

cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established

上面兩行指令能告訴你,目前機器上的table大小及tcp timeout時間

改法有二, 選一個你喜歡的作法即可 :Q

方法一:

sysctl -w net.ipv4.ip_conntrack_max=131072 (or 任何妳喜歡且不會爆的值)

sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=600

(把這兩行寫到你的開機啟動檔裡面)

方法二:

編輯/etc/sysctl.conf, 加上下列兩行

net.ipv4.ip_conntrack_max=131072 (or 任何妳喜歡且不會爆的值)

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=600

這樣每次開機就會設定上去啦.

問題便可以因此解決。

本篇發表於 Linux, 技術 並標籤為 , , 。將永久鏈結加入書籤。

發表迴響

您的電子郵件位址並不會被公開。 必要欄位標記為 *

*

您可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>