天天看點

iptables的連接配接追蹤機制和nf_conntrack調優

  iptables/netfilter具有追蹤連接配接狀态功能,用于描述各會話連接配接之間的關系性。一般為四層協定:TCP/UDP/ICMP等等。

  為什麼要用追蹤連接配接狀态呢?iptables/netfilter預設規則為拒絕的情況下,當使用者通路一個iptables/netfilter允許的服務(端口)的時候,伺服器如果想要回複用戶端則還需要為其設定一個放行的規則(如果有多個就要多個規則),然而這是多餘的,當防火牆允許用戶端向某服務通信時,則認為此連接配接一定是符合規則的,與之相對的通信都應該是可靠的,可以對其放行。這樣就可以實作一條規則放行所有可信的通信,而不用多條規則。

  iptables/netfilter追蹤的連接配接狀态有四種:

NEW 新連接配接,發送的第一個包;
ESTABLISHED 已經建立的連接配接
RELATED 資料連接配接和指令連接配接之間的關系,FTP服
INVALID 無效的封包請求,例如TCP的SYN,ACK,FIN都為1

 iptables/netfilter的狀态追蹤由state子產品提供,state底層依賴于nf_conntrack(2.6核心之前叫作ip_conntrack),nf_conntrack是核心功能,負責具體的連接配接追蹤的實施。

 nf_conntrack是有限制的,其根據内部算法,會在核心空間(記憶體)中記錄各所追蹤的連接配接的狀态,并将其映射到/proc/net/nf_conntrack檔案中。nf_conntrack連接配接追蹤的限制由/proc/sys/net/nf_conntrack_max檔案控制,可以修改該檔案或者/etc/sysctl.conf。

相關的檔案:

  /proc/sys/net/目錄

  /proc/net/目錄

# /proc/sys/net/nf_conntrack_max

 定義連接配接追蹤的最大值,建議按需調大此值;

# /proc/net/nf_conntrack

 記錄了目前追蹤的所有連接配接

# /proc/sys/net/netfilter/nf_conntrak_tcp_timeout_established

 ESTABLISHED逾時時長,預設時間比較長,建議調小此值。

注:由于連接配接追蹤的限制問題,當超過限制時,會導緻伺服器拒絕服務。此時就需要将/prc/sys/net/nf_conntrak_max調大。如果是一個流量特别大的伺服器,不建議開啟此功能。

轉載于:https://blog.51cto.com/minux/1727684

繼續閱讀