
Ich möchte wissen wie viel CPU
meine memory
aktuellen iptables
Regeln verbrauchen.
Ich habe versucht, in ps
und nachzuschauen htop
, habe aber selbst bei angezeigten Kernel-Threads nichts im Zusammenhang mit gefunden iptables
.
Ich verwende das conntrack
Modul mit diesen modulspezifischen Einstellungen: xt_recent.ip_pkt_list_tot=1
xt_recent.ip_list_tot=4096
. Ich denke, 4096
das ist ziemlich hoch. Und dann verwende ich in meiner iptables-Konfiguration zwei Arten von Blocklisten: BLACKLIST
und 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
Ich habe Netzwerkprobleme auf dem Server, bei denen meine iptables
Regeln eine Rolle spielen könnten. Zum Beispiel:
- Meine
ssh
Sitzungen werden ziemlich oft abgebrochen. - Ping meldet 0,2 % Paketverlust
wenn ich mich über erlaubte Ports verbinde, d. h.
5060
es dauert merklich länger, wennPORTSCAN
viele Elemente vorhanden sind, als wenn es leer istWas wäre die beste Möglichkeit, dieses Problem zu beheben?
- kann ich meine Iptables-Regeln optimieren?
- Wie kann ich sehen, wie viel meiner CPU-Leistung durch verbraucht wird
iptables
?
Antwort1
Prozess des Linux-Kernels:
Viele Kernelfunktionen wie Iptables werden auf Kernelebene als Kworker-Aufgaben verarbeitet und sind in Taskmanagern wie top sichtbar. Wie in den Kommentaren erwähnt, können Sie die CPU- und Speichernutzung berechnen, indem Sie die gesamte Ressourcennutzung mit und ohne Laden der iptables
Regeln vergleichen. Beachten Sie, dass ipset
bereits Speicher verbraucht wird, auch wenn Sie ihn nicht in einer Regel verwenden.
K-Arbeiterist ein Platzhalterprozess für Kernel-Arbeitsthreads, die den Großteil der eigentlichen Verarbeitung für den Kernel ausführen, insbesondere in Fällen, in denen Interrupts, Timer, I/O usw. vorhanden sind. Diese entsprechen normalerweise dem Großteil der zugewiesenen „Systemzeit“ für laufende Prozesse. Es ist nichts, was auf irgendeine Weise sicher aus dem System entfernt werden kann, und hat überhaupt nichts mit den Desktop-Anwendungen zu tun (außer wenn diese Programme Systemaufrufe durchführen, die möglicherweise erfordern, dass der Kernel etwas tut). kworker
Bedeutet auch, dass ein Linux-Kernel-Prozess „arbeitet“ (Systemaufrufe verarbeitet). Sie können mehrere davon in Ihrer Prozessliste haben: kworker/0:1
ist der auf Ihrem ersten CPU-Kern, kworker/1:1
der auf Ihrem zweiten usw. Alle Kernel-Prozesse werden als Kinder von gestartetAbonnierenProzess im Kernelbereich.
Übergeordneter Prozess:Die Prozess-ID kthreadd
ist 2 und diese Kernel-Worker können wie folgt aufgelistet werden:
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
Letzteres kann mit einem Bash- und Cron-Skript verwendet werden, um Änderungen zu überwachen. Alternativ perf
kann für eine direkte zeitgesteuerte Analyse Folgendes verwendet werden: ( 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
Navigieren Sie durch den Anrufgraphen mit←,→,↑,↓Und Enter.