nf_conntrack之解決方案,nf_conntrack

來源:互聯網
上載者:User

nf_conntrack之解決方案,nf_conntrack
1.現象

在/var/log/message中出現以下資訊

Dec  8 11:22:29 product08 kernel: nf_conntrack: table full, dropping packet.Dec  8 11:22:29 product08 kernel: nf_conntrack: table full, dropping packet.
2.nf_conntrack是什嗎?

nf_conntrack(在老版本的 Linux 核心中叫 ip_conntrack)是一個核心模組,用於跟蹤一個串連的狀態的。串連狀態跟蹤可以供其他模組使用,最常見的兩個使用情境是 iptables 的 nat 的 state 模組。
iptables 的 nat 通過規則來修改目的/源地址,但光修改地址不行,我們還需要能讓回來的包能路由到最初的來源主機。這就需要藉助 nf_conntrack 來找到原來那個串連的記錄才行。
而 state 模組則是直接使用 nf_conntrack 裡記錄的串連的狀態來匹配使用者定義的相關規則。例如下面這條 INPUT 規則用於允許存取 80 連接埠上的狀態為 NEW 的串連上的包。

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

3.解決方案(1)先關掉iptables

/etc/init.d/iptables stop

(2)查看當前的串連數:

# grep nf_conntrack /proc/slabinfo

(3)查出目前 nf_conntrack 的排名:

$ cat /proc/net/nf_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10

(4)最佳化參數

狀態跟蹤表的最大行數的設定,理論最大值 CONNTRACK_MAX = RAMSIZE (in bytes) / 16384 / (ARCH / 32)
以64G的64位作業系統為例,CONNTRACK_MAX = 64*1024*1024*1024/16384/2 = 2097152

即時生效請執行:
sysctl –w net.netfilter.nf_conntrack_max = 524288 (16G)

其雜湊表大小通常為總表的1/8,最大為1/2。CONNTRACK_BUCKETS = CONNTRACK_MAX / 8
同樣64G的64位作業系統,雜湊最佳範圍是 262144 ~ 1048576 。

運行狀態中通過 sysctl net.netfilter.nf_conntrack_buckets 進行查看,通過檔案 /sys/module/nf_conntrack/parameters/hashsize 進行設定
或者建立 /etc/modprobe.d/iptables.conf ,重新載入模組才生效:
options nf_conntrack hashsize = 262144

還有些相關的系統參數`sysctl -a | grep nf_conntrack`可以調優(/etc/sysctl.conf ):
net.netfilter.nf_conntrack_max = 1048576
net.netfilter.ip_conntrack_tcp_timeout_established = 3600
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120

(5)iptables允許存取

iptables -t raw -A PREROUTING -p tcp -m multiport --dports 80,15000 -j NOTRACK
iptables -t raw -A PREROUTING -p tcp -m multiport --sports 80,15000 -j NOTRACK
iptables -t raw -A OUTPUT -p tcp -m multiport --dports 80,15000 -j NOTRACK
iptables -t raw -A OUTPUT -p tcp -m multiport --sports 80,15000 -j NOTRACK

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.