
Me gustaría saber cuánto CPU
consumen mis reglas memory
actuales .iptables
Intenté buscar en ps
y htop
, pero incluso con los subprocesos del kernel mostrados y no vi nada relacionado con iptables
.
Estoy usando el conntrack
módulo con estas configuraciones específicas del módulo: xt_recent.ip_pkt_list_tot=1
xt_recent.ip_list_tot=4096
. Creo que 4096
es bastante alto. Y luego, en mi configuración de iptables, estoy usando dos tipos de listas de bloqueo: BLACKLIST
y 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
Tengo problemas de red en el servidor, donde sospecho que mis iptables
reglas podrían influir. Por ejemplo:
- Mis
ssh
sesiones se cancelan con bastante frecuencia. - Ping informa una pérdida de paquetes del 0,2%
cuando me conecto en puertos permitidos, es decir,
5060
toma mucho más tiempo cuandoPORTSCAN
hay muchos elementos, en comparación con cuando está vacío¿Cuál sería la mejor manera de solucionar este problema?
- ¿Hay alguna optimización que pueda hacer a mis reglas de iptables?
- ¿Cómo puedo ver cuánta CPU está consumiendo
iptables
?
Respuesta1
Proceso del kernel de Linux:
Muchas funciones del Kernel, como Iptables, se procesan en el nivel del Kernel como tareas de kworker y son visibles en administradores de tareas como top. Como se mencionó en los comentarios, puede calcular el uso de CPU y memoria comparando el uso total de recursos con y sin cargar las iptables
reglas. Tenga en cuenta que ipset
ya consume memoria incluso si no la usa en una regla.
trabajadores un proceso de marcador de posición para los subprocesos de trabajo del kernel, que realizan la mayor parte del procesamiento real del kernel, especialmente en los casos en los que hay interrupciones, temporizadores, E/S, etc. Estos normalmente corresponden a la gran mayoría de cualquier tiempo asignado al "sistema". a procesos en ejecución. No es algo que se pueda eliminar de forma segura del sistema de ninguna manera y no tiene ninguna relación con las aplicaciones de escritorio (excepto si estos programas realizan llamadas al sistema, lo que puede requerir que el kernel haga algo). También kworker
significa un proceso del kernel de Linux que realiza "trabajo" (procesando llamadas al sistema). Puede tener varios de ellos en su lista de procesos: kworker/0:1
el que está en el primer núcleo de su CPU, kworker/1:1
el que está en el segundo, etc. Todos los procesos del Kernel se inician como hijos dehiloproceso en el espacio del Kernel.
Proceso padre:El ID del proceso kthreadd
es 2 y los trabajadores de este kernel se pueden enumerar con:
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
Este último se puede usar con un script bash + cron para observar los cambios... alternativamente, para un análisis cronometrado directo, perf
se puede usar ( 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
Navega por el gráfico de llamadas con←,→,↑,↓y Enter.