ip_conntrack: table full, dropping packet

Mirar que bonito error me he encontrado en los logs:

ip_conntrack: table full, dropping packet.

He tenido problemas con un server estático y otro ha tenido que asumir su carga.
Al principio pensé que no podía con toda la carga este servidor, pero investigando mas a fondo, me he encontrado con esos errores en el log.

ip_conntrack es un módulo de netfilter que se encarga de trazar las conexiones existentes en nuestro servidor, con el fin de poder hacer reglas mas especificas con iptables. Si recordais el artículo Asegurando Servidor Web I iptables, en el especificabamos unas reglas para permitir el paso a toda conexión establecida o relacionada.

En /proc/sys/net/ipv4/ip_conntrack_max se fija el número máximo de conexionese que puede manejar ip_conntrack.
cat /proc/sys/net/ipv4/ip_conntrack_max

32664

Para ver las conexiones establecidas, podemos echarle un ojo a /proc/net/ip_conntrack.
wc -l /proc/net/ip_conntrack

30342

tail /proc/net/ip_conntrack

tcp      6 9 CLOSE src=189.233.37.96 dst=192.168.2.3 sport=13165 dport=80 src=192.168.2.3 dst=189.233.37.96 sport=80 dport=13165 [ASSURED] use=1
tcp      6 87 TIME_WAIT src=89.248.107.98 dst=192.168.2.3 sport=33190 dport=80 src=192.168.2.3 dst=89.248.107.98 sport=80 dport=33190 [ASSURED] use=1
tcp      6 104 TIME_WAIT src=69.138.156.156 dst=192.168.2.3 sport=1623 dport=80 src=192.168.2.3 dst=69.138.156.156 sport=80 dport=1623 [ASSURED] use=1
udp      17 1 src=80.58.34.99 dst=89.149.228.152 sport=49043 dport=53 src=89.149.228.152 dst=80.58.34.99 sport=53 dport=49043 [ASSURED] use=1
tcp      6 115 TIME_WAIT src=83.35.236.169 dst=192.168.2.3 sport=11199 dport=80 src=192.168.2.3 dst=83.35.236.169 sport=80 dport=11199 [ASSURED] use=1
tcp      6 95 TIME_WAIT src=89.149.227.155 dst=195.20.15.124 sport=39415 dport=80 src=195.20.15.124 dst=89.149.227.155 sport=80 dport=39415 [ASSURED] use=1
tcp      6 115 TIME_WAIT src=189.12.14.31 dst=192.168.2.3 sport=1178 dport=80 src=192.168.2.3 dst=189.12.14.31 sport=80 dport=1178 [ASSURED] use=1
udp      17 124 src=190.12.4.34 dst=89.149.228.152 sport=32769 dport=53 src=89.149.228.152 dst=190.12.4.34 sport=53 dport=32769 [ASSURED] use=1
tcp      6 430273 ESTABLISHED src=217.76.158.201 dst=192.168.2.3 sport=3511 dport=80 src=192.168.2.3 dst=217.76.158.201 sport=80 dport=3511 [ASSURED] use=1
tcp      6 431993 ESTABLISHED src=127.0.0.1 dst=127.0.0.1 sport=39493 dport=9050 src=127.0.0.1 dst=127.0.0.1 sport=9050 dport=39493 [ASSURED] use=1

El valor de /proc/sys/net/ipv4/ip_conntrack_max viene determinado por la cantidad de ram que se tiene (con 64MB: 4096, 128MB: 8192, …). Aumentarlo es tan sencillo como cambiarle el número:
echo "65328" > /proc/sys/net/ipv4/ip_conntrack_max
Pero hay que tener en cuenta que tracear cada conexión consume unos 350bytes de memoria por cada una (y no puede ser swap).
Antes que incrementar este valor, habría que ver porqué se están produciendo tantas conexiones, ya que no es habitual que esto pase sino es debido a un problema (algún troyano, programas p2p…).

bookmark bookmark bookmark bookmark

Dejar una Respuesta.