¿Cómo Resolver la Inestabilidad en las Recopilaciones por Pérdida de Paquetes?
Este artículo muestra cómo resolver el problema de pérdida intermitente de conexión o de paquetes que ocurre cuando la tabla de seguimiento de conexiones (conntrack) del kernel Linux está llena.
1. Problema y Causas
Sección titulada «1. Problema y Causas»Linux usa nf_conntrack (Network Filter Connection Tracking) para rastrear todas las conexiones de red activas (TCP, UDP, ICMP, etc.), necesario para el correcto funcionamiento del firewall (iptables/nftables) y del NAT (Network Address Translation).
Cuando el número de conexiones activas alcanza el límite máximo configurado, el kernel no puede rastrear nuevas conexiones y, por defecto, las descarta. Esto se manifiesta como:
- Pérdida de conexión y paquetes en Linux.
- Fallo intermitente para establecer nuevas conexiones.
- Mensajes de error en el registro del sistema (
/var/log/messagesodmesg), como:kernel: nf_conntrack: table full, dropping packetnf_conntrack: table full

Este problema influye en el monitoreo de Monsta, causando fallos de recopilación en monitores de forma aleatoria, ya que Monsta envía la solicitud y no recibe una respuesta.
Motivos que pueden causar el agotamiento de la tabla:
- Alto Tráfico de Conexiones de Corta Duración: Servidores que manejan muchas conexiones que se abren y cierran rápidamente pueden llenar la tabla con rapidez. Una gran cantidad de monitores en Monsta puede contribuir.
- Ataques de Denegación de Servicio (DDoS/DoS): Un ataque de inundación de paquetes, especialmente SYN floods (que intentan abrir muchas conexiones TCP incompletas), o grandes volúmenes de tráfico UDP (que usa conntrack para rastreo básico) pueden agotar la tabla inmediatamente.
- Timeouts Demasiado Largos: Si el tiempo que el kernel tarda en “olvidar” una conexión inactiva (timeout) es muy largo, las entradas quedan atascadas en la tabla, incluso si la conexión se ha cerrado. Esto es especialmente problemático para conexiones TCP en el estado
TIME_WAIT(el timeout predeterminado de 60 segundos suele ser demasiado largo para entornos de alto tráfico).
Cómo confirmar el problema
Sección titulada «Cómo confirmar el problema»Puede verificar el estado de la tabla con los siguientes comandos:
# Límite máximo de conexiones (nf_conntrack_max)cat /proc/sys/net/netfilter/nf_conntrack_max
# Número actual de conexiones activas (nf_conntrack_count)cat /proc/sys/net/netfilter/nf_conntrack_countSi el nf_conntrack_count está muy cerca o es igual a nf_conntrack_max, la tabla está llena.
2. Solución: Aumentar y Optimizar los Límites
Sección titulada «2. Solución: Aumentar y Optimizar los Límites»La solución es aumentar el límite máximo de conexiones (nf_conntrack_max) y optimizar los parámetros de rendimiento de la tabla. Para cambiarlo de forma permanente (sin perder las configuraciones al reiniciar Linux), siga los pasos:
2.1 Edite el archivo de configuración del sistema /etc/sysctl.conf con un editor de texto (vi, nano…)
Sección titulada «2.1 Edite el archivo de configuración del sistema /etc/sysctl.conf con un editor de texto (vi, nano…)»vi /etc/sysctl.conf2.2 Añada las siguientes líneas al final del archivo
Sección titulada «2.2 Añada las siguientes líneas al final del archivo»####################################################### Optimización de Conntrack para alto tráfico######################################################net.netfilter.nf_conntrack_max = 262144net.netfilter.nf_conntrack_buckets = 65536net.netfilter.nf_conntrack_tcp_timeout_time_wait = 302.3 Guarde y cierre el archivo
Sección titulada «2.3 Guarde y cierre el archivo»2.4 Aplique las nuevas configuraciones sin necesidad de reiniciar el sistema
Sección titulada «2.4 Aplique las nuevas configuraciones sin necesidad de reiniciar el sistema»sysctl -p3. Verificación
Sección titulada «3. Verificación»Después de aplicar los cambios, verifique el nuevo límite.
cat /proc/sys/net/netfilter/nf_conntrack_max# El resultado debe ser 262144