Kernel

如何監控“iptables”核心模組的性能?

  • July 6, 2020

我想知道CPU/memory我目前的iptables規則消耗了多少。

我嘗試查看psand htop,但即使顯示核心執行緒,也沒有看到任何與iptables.

我正在使用conntrack具有這些模組特定設置的模組:xt_recent.ip_pkt_list_tot=1 xt_recent.ip_list_tot=4096. 我認為4096是相當高的。然後,在我的 iptables 配置中,我使用了兩種阻止列表:BLACKLISTPORTSCAN.

-A INPUT  -i eth0 -p icmp             -j ACCEPT
-A INPUT  -i eth0 -s  1.2.3.4/32      -j ACCEPT
-A INPUT  -i eth0 -m  recent --rsource --name BLACKLIST --seconds 14400 --update -j DROP
-A INPUT  -i eth0 -p  tcp  -m tcp --dport 25 -j ACCEPT

-A INPUT  -i eth0 -m  recent   --rsource --name PORTSCAN --seconds 3600 --update -j DROP
-A INPUT -i eth0  -p  udp  -m udp --dport 5060 -j ACCEPT
-A INPUT -i eth0  -p  tcp  -m tcp --dport 5061 -j ACCEPT
-A INPUT -i eth0  -p  udp  -m udp --dport 5062:5100 -j ACCEPT

-A INPUT  -i eth0 -m  conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT  -i eth0 -m  recent  --rsource --name PORTSCAN --set -j DROP

-A INPUT  -i eth0 -j DROP
-A INPUT  -j DROP

我在伺服器上遇到網路問題,我懷疑我的iptables規則可能會起作用。例如:

  • 我的ssh會話經常被丟棄。
  • Ping 報告 0.2% 的封包遺失
  • 當我在允許的埠上連接時,即5060當有很多項目時它需要明顯更長的時間PORTSCAN,與它為空時相比
  • 解決此問題的最佳方法是什麼?
  • 我可以對我的 iptables 規則做一些優化嗎?
  • 如何查看我的 CPU 消耗了iptables多少?

Linux核心的程序:

許多 Kernel 的功能(如 Iptables)在 Kernel 級別作為 kworker 任務處理,它們在任務管理器(如 top)上可見。iptables如評論中所述,您可以通過比較載入和不載入規則的總資源使用情況來計算 CPU 和記憶體使用情況。請注意,ipset即使您沒有在規則中使用它,它也已經消耗了記憶體。

Kworker是核心工作執行緒的佔位符程序,它為核心執行大部分實際處理,尤其是在存在中斷、定時器、I/O 等的情況下。這些通常對應於絕大多數已分配的“系統”執行程序的時間。它不是可以以任何方式安全地從系統中刪除的東西,並且與桌面應用程序完全無關(除非這些程序進行系統呼叫,這可能需要核心做一些事情)。也kworker意味著一個 Linux 核心程序在做“工作”(處理系統呼叫)。你的程序列表中可以有幾個:kworker/0:1是第一個 CPU 核心上kworker/1:1的一個,第二個 CPU 核心上的一個等等。所有核心的程序都作為kthreadd的子程序啟動核心空間上的程序。

**父程序:**程序 IDkthreadd為 2,此核心工作人員可以列出:

pstree 2 -l -p 
# or
ps --ppid 2 -u 
# or
ps --ppid 2 -o pid,user,%mem,command,time,etime,cpu,pcpu,nice,pcpu,vsz 

最後一個可以與 bash + cron 腳本一起使用來觀察變化……或者直接定時分析,perf可以使用(apt-get install linux-tools-common linux-tools-3.11.0-15-generic

# Record 10 seconds of backtraces on all your CPUs:
sudo perf record -g -a sleep 10

# Analyse your recording:
sudo perf report

使用、、**和導航呼叫**圖Enter


連結:123456

引用自:https://unix.stackexchange.com/questions/554548