# rm-rf.es

nf_conntrack: table full, dropping packet en kernel 2.6.32

El error del título podemos verlo tanto en la salida del comando dmesg como en el log messages. Básicamente nos está indicando que se están denegando paquetes debido a que la tabla/buffer de netfilter nf_conntrack/ip_conntrack, donde se almacena un registro de las conexiones activas en la máquina está llena:

# dmesg
...
...
nf_conntrack: table full, dropping packet.
nf_conntrack: table full, dropping packet.
nf_conntrack: table full, dropping packet.
nf_conntrack: table full, dropping packet.
nf_conntrack: table full, dropping packet.
nf_conntrack: table full, dropping packet.
nf_conntrack: table full, dropping packet.
nf_conntrack: table full, dropping packet.
nf_conntrack: table full, dropping packet.
nf_conntrack: table full, dropping packet.
...
...

El problema puede residir tanto en un ataque puntual o que realmente el tráfico legítimo que recibe la máquina es muy grande. Tanto en un caso como en otro la solución rápida es modificar este parámetro del kernel y aumentar su valor. Os recomiendo revisar este otro artículo sysctl y /proc/sys – modificar parámetros de kernel para ampliar la información.

Lo primero que debemos ver es, por un lado el valor máximo actual y el valor en uso:

$ cat /proc/sys/net/netfilter/nf_conntrack_count
62686
$ cat /proc/sys/net/netfilter/nf_conntrack_max
65536

La primera orden nos dice el número de entradas en la tabla y el segundo el máximo. Como vemos estamos a punto de llegar al límite. Cuando esto suceda se comenzarán a descartar paquetes. Podemos entonces ampliar temporalmente (no sobrevive a renicios) el nº de entradas máximas en la tabla (ponemos el doble):

# sysctl -w net.netfilter.nf_conntrack_max=131072
net.netfilter.nf_conntrack_max = 131072

Si quisieramos hacerlo persistente a reinicios, lo modificaríamos en el fichero /etc/sysctl.conf añadiendo:

net.netfilter.nf_conntrack_max=131072
Salir de la versión móvil