如何監控“iptables”核心模組的性能?
我想知道
CPU
/memory
我目前的iptables
規則消耗了多少。我嘗試查看
ps
andhtop
,但即使顯示核心執行緒,也沒有看到任何與iptables
.我正在使用
conntrack
具有這些模組特定設置的模組:xt_recent.ip_pkt_list_tot=1
xt_recent.ip_list_tot=4096
. 我認為4096
是相當高的。然後,在我的 iptables 配置中,我使用了兩種阻止列表:BLACKLIST
和PORTSCAN
.-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的子程序啟動核心空間上的程序。**父程序:**程序 ID
kthreadd
為 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
。