Linux 跟蹤串連netfilter 調優

來源:互聯網
上載者:User

標籤:空間   大連   live   ide   整理   分頁   modules   尋找   儲存   

Netfilter介紹

    linux核心中的netfilter是一款強大的基於狀態的防火牆,具有串連跟蹤(conntrack)的實現。conntrack是netfilter的核心,許多增強功能,例如,地址轉換(NAT),基於內容的業務識別(l7, layer-7 module)都是基於串連跟蹤。

    nf_conntrack模組在kernel 2.6.15(2006-01-03發布) 被引入,支援ipv4和ipv6,取代只支援ipv4的ip_connktrack,用於跟蹤串連的狀態,供其他模組使用。

主要參數介紹

# 雜湊表大小(唯讀)(64位系統、8G記憶體預設 65536,16G翻倍,如此類推)net.netfilter.nf_conntrack_buckets# 最大跟蹤串連數,預設 nf_conntrack_buckets * 4net.netfilter.nf_conntrack_maxnet.nf_conntrack_max
  • 註:跟蹤的串連用雜湊表儲存,每個桶(bucket)裡都是1個鏈表,預設長度為4KB
  • 註:netfilter的雜湊表儲存在核心空間,這部分記憶體不能swap
  • 註:雜湊表大小 64位 最大串連數/8  32 最大串連數/4
  • 註:32位系統一條跟蹤幾率約為300位元組。
  • 註:在64位下,當CONNTRACK_MAX為 1048576,HASHSIZE 為 262144 時,最多佔350多MB

狀態查看

1、尋找:buckets雜湊表大小,max最大幾率的串連條數

# netfilter模組載入時的bucket和max配置:sudo dmesg | grep conntrack
[6010550.921211] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
結果

2、尋找:雜湊表使用方式

# 前4個數字分別為:當前使用中的物件數、可用對象總數、每個對象的大小(位元組)、包含至少1個使用中的物件的分頁數grep conntrack /proc/slabinfo
nf_conntrack_ffffffff81ad9d40    865    918    320   51    4 : tunables    0    0    0 : slabdata     18     18      0
結果

3、尋找:當前跟蹤的串連數

sudo sysctl net.netfilter.nf_conntrack_countcat /proc/net/nf_conntrack | wc -l

4、跟蹤串連詳細資料

cat /proc/net/nf_conntrack
ipv4     2 tcp      6 2 CLOSE src=100.116.203.128 dst=172.16.105.212 sport=62226 dport=8080 src=172.16.105.212 dst=100.116.203.128 sport=8080 dport=62226 [ASSURED] mark=0 zone=0 use=2------------------------------------------------------# 記錄格式# 網路層協議名、網路層協議編號、傳輸層協議名、傳輸層協議編號、記錄失效前剩餘秒數、串連狀態(不是所有協議都有)------------------------------------------------------# 之後都是key=value或flag格式,1行裡最多2個同名key(如 src 和 dst),第1次出現的來自請求,第2次出現的來自響應------------------------------------------------------
結果說明

串連跟蹤調優

  • 計算公式
  • CONNTRACK_MAX(最大幾率的串連條數) = 記憶體個數*1024*1024*1024/16384/2 = ***
  • Buckets(雜湊表大小) = CONNTRACK_MAX/4 = ***(Byte位元組)
  • 跟蹤數暫用最記憶體大小 = CONNTRACK_MAX * 300(Byte位元組)= ***(Byte位元組)

註:如果不能關掉防火牆,基本思路就是,調大nf_conntrack_buckets和nf_conntrack_max,調小逾時時間。
註:除了有關聯的參數,盡量一次只改一處,記下預設值,效果不明顯或更差就還原。

1、雜湊表桶大小 調優

註:net.netfilter.nf_conntrack_buckets 不能直接改(報錯)

# 臨時生效echo 262144 > /sys/module/nf_conntrack/parameters/hashsize
------------------------------------------------------
# 重啟永久生效建立檔案:/etc/modprobe.d/iptables.confoptions nf_conntrack hashsize = 32768

2、最大追蹤串連數修改 調優

# 臨時生效sudo sysctl -w net.netfilter.nf_conntrack_max=1048576suod sysctl -w net.nf_conntrack_max=1048576------------------------------------------------------# 永久生效# 添加修改核心設定檔(/etc/sysctl.conf) net.netfilter.nf_conntrack_max=1048576net.nf_conntrack_max=1048576# 如果要馬上應用設定檔裡的設定:sudo sysctl -p /etc/sysctl.conf

3、回應時間 調優

# 臨時生效# 主動方的最後1個狀態。預設120秒sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_fin_wait=30sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=30# CLOSE_WAIT是被動方收到FIN發ACK,然後會轉到LAST_ACK發FIN,除非程式寫得有問題,正常來說這狀態期間很短。#預設 60 秒sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_close_wait=15# 理論上不用這麼長,不小於 net.ipv4.tcp_keepalive_time 就行了。預設 432000 秒(5天)sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=300-----------------------------------------------------# 永久生效# 修改核心設定檔(/etc/sysctl.conf) net.netfilter.nf_conntrack_tcp_timeout_fin_wait=30net.netfilter.nf_conntrack_tcp_timeout_time_wait=30net.netfilter.nf_conntrack_tcp_timeout_close_wait=15net.netfilter.nf_conntrack_tcp_timeout_established=300# 如果要馬上應用設定檔裡的設定:sudo sysctl -p /etc/sysctl.conf

禁用串連跟蹤模組

註:只要iptables還有規則用到nat和state模組,就不適合關掉netfilter,否則這些規則會失效。

# 條件舉例# 關掉netfilter會拿不到狀態,導致每個請求都要從頭到尾檢查一次,影響效能:# 例如這條預設規則(通常寫在第1條或很靠前的位置):-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

禁用步驟

1、整理確認關閉該模組後不會影響功能

# 1# 尋找相關模組sudo lsmod | egrep "ip_table|iptable|nat|conntrack"# 2# 把帶 -t nat 、-m state 的規則都幹掉# 或刪掉 /etc/sysconfig/iptables 裡相應內容# 查看iptables規則sudo iptables-save# 3# 編輯 iptables 設定檔# 找到 IPTABLES_MODULES ,刪掉跟conntrack有關的模組(如果有)sudo vim /etc/sysconfig/iptables-config# 4# 停掉iptables# Centos 6sudo service iptables stop# Centos 7sudo systemctl stop iptables

2、移除相關模組

sudo rmmod iptable_natsudo rmmod ip6table_natsudo rmmod nf_defrag_ipv4sudo rmmod nf_defrag_ipv6# 移除相關模組sudo rmmod nf_natsudo rmmod nf_nat_ipv4sudo rmmod nf_nat_ipv6sudo rmmod nf_conntracksudo rmmod nf_conntrack_ipv4sudo rmmod nf_conntrack_ipv6sudo rmmod xt_conntrack--------------------------# 開啟相關模組 sudo modprobe iptable_natsudo modprobe ip6table_natsudo modprobe nf_defrag_ipv4sudo modprobe nf_defrag_ipv6sudo modprobe nf_natsudo modprobe nf_nat_ipv4sudo modprobe nf_nat_ipv6sudo modprobe nf_conntracksudo modprobe nf_conntrack_ipv4sudo modprobe nf_conntrack_ipv6sudo modprobe xt_conntrack

 

Linux 跟蹤串連netfilter 調優

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.