解決 RT-AC86U Kernel 一直產生 nf_conntrack table full 問題

一樣是寫來自己記錄用的

某天檢視RT-AC86U的syslog發現一直出現以下訊息。Google了一下發現應該是kernel中有關Firewall rule的hash table設定過小,當連線數量大時,就容易出現下列訊息。

Oct 2 21:56:02 kernel: nf_conntrack: expectation table full
Oct 2 21:56:02 kernel: nf_conntrack: expectation table full
Oct 2 21:56:02 kernel: nf_conntrack: expectation table full
Oct 2 21:56:02 kernel: nf_conntrack: expectation table full
Oct 2 21:56:02 kernel: nf_conntrack: expectation table full
Oct 2 21:56:03 kernel: nf_conntrack: expectation table full
Oct 2 21:56:03 kernel: nf_conntrack: expectation table full
Oct 2 21:56:03 kernel: nf_conntrack: expectation table full
Oct 2 21:56:03 kernel: nf_conntrack: expectation table full

作法是調整kernel參數如下,並且最後重啟conntrack服務

echo 4096 > /proc/sys/net/netfilter/nf_conntrack_expect_max
echo 300000 > /proc/sys/net/netfilter/nf_conntrack_max
echo 120 > /proc/sys/net/netfilter/nf_conntrack_generic_timeout
echo 1800 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
service restart_conntrack

再搭配上 /jffs/scripts/service-start,設定於機器啟動,且服務也啟動完畢時,重新將上述參數調整一次。

依樣畫葫蘆之後,kernel log已暫時不再出訊息,記錄下來。

3 thoughts on “解決 RT-AC86U Kernel 一直產生 nf_conntrack table full 問題

  • 2020/05/12 at 10:46:36
    Permalink

    你好,我也遇到了和你同样的问题。
    我是技术小白,请问能否说一下具体的操作步骤以及所要使用到的工具。
    谢谢!

  • 2020/05/13 at 21:40:59
    Permalink

    說來不是三言兩語就說得完,基本上要有unix指令知識,然後在RT-AC86U管理介面將SSH打開後,用 Putty 或是任何 terminal 工具連進去下指令,下完指令就生效了。
    最後如果不想重開機就要手動重複上面動作,就得參考RT-AC86U 啟動 jffs custom scripts 以及 swap這篇文章去啟用 jffs custom script,然後新增 service_start,以後重新開機才能自動執行。說完我都累了,你還是得自行研究啊…

  • 2023/02/27 at 11:08:08
    Permalink

    感谢,问题已解决

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料