主題:
[分享]解決 Linux NAT ip_conntrack: table full 的方法
[打印本頁]
發表人:
MU
時間:
2008-4-15 09:27 PM
主題:
[分享]解決 Linux NAT ip_conntrack: table full 的方法
原本 Linux NAT 用得好好的, 沒想到幾天前卻出現了無法上網的情況, 而系統記錄也出現了這樣的訊息:
ip_conntrack: table full, dropping packet.
後來才知道, Linux NAT 的 ip_conntrack 模組會記錄 tcp 通訊協定的 established connection 記錄, 而且預設 timeout 時間長達五天 (432,000 秒), 因此只要 LAN 中有人使用 P2P 軟體 (如: eDonkey、BT...) 就容易發生這種問題.
解決方法 (1): 加大 ip_conntrack_max 值
查出原本的 ip_conntrack_max 值:
指令: cat /proc/sys/net/ipv4/ip_conntrack_max
寫入理想的數值 (每一個 ip_conntrack buffer 會佔用 292 Bytes)
指令: echo "數值" > /proc/sys/net/ipv4/ip_conntrack_max
例如: echo "81920" > /proc/sys/net/ipv4/ip_conntrack_max
這個效果是暫時的, 如果要每次開機都使用新的數值, 需將上述指令寫入 /etc/rc.d/rc.local
或是在 /etc/sysctl.conf 加入: net.ipv4.ip_conntrack_max = 數值
或使用指令: sysctl -w net.ipv4.ip_conntrack_max=數值
解決方法 (2): 降低 ip_conntrack timeout 時間
重設 ip_conntrack_tcp_timeout_established (原值: 432000, 單位: 秒)
指令: echo "數值" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
例如: echo "600" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
發表人:
chs007
時間:
2008-4-19 10:01 PM
感謝版主的教學!!最近這個問題也一直在困擾我!通常是同時開BT和Emule的時候會發生!
不過可能因為我用的是ASUS WL-500W+OLEG的韌體,都找不到要在哪裡設定這兩個值
只有發現可疑的地方是/proc/net下面的ip_conntrack但是輸入cat ip_conntrack後卻出現一堆類似
udp 17 8 src=192.168.1.247 dst=212.139.69.227 sport=60430 dport=43664 [UNREPLIED] src=212.139.69.227 dst=118.109.116.107 sport=43664 dport=60430 use=1 mark=0
的東西
沒有看到ip_conntrack_max和ip_conntrack_tcp_timeout_established 耶....
我知道要在哪裡解決了!!原來直接登入到基地台的設定裡面改就好了!!
在Internet Firewall > Basic Settings > Number of connections to track這一項裡面!!
原來的值是4096現在直接加一倍成8192看能不能改善!!
292 Bytes /1024*8192 =2336MB我想我的WL-500W是可以撐得住的.....
[chs007 在 2008-4-19 10:17 PM 作了最後編輯]
發表人:
miholee
時間:
2008-9-17 11:03 PM
2.6 kernel, 忘了從哪一版開始, 改用 /proc/sys/net/nf_conntrack_max
至於 ip_conntrack_tcp_timeout_established,
另外有個 /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
[miholee 在 2008-9-17 11:06 PM 作了最後編輯]
歡迎光臨 TWed2k (http://twed2k.org/)
Powered by Discuz! 4.1.0