Marcio Cunha

Cómo inspeccionar reglas de NAT y Firewall en Linux

Comprenda los fundamentos del enrutamiento y la traducción de direcciones en Linux. Aprenda a usar iptables y nftables para diagnosticar tráfico bloqueado.

Marcio Cunha•6 min
También disponible en:EnglishPortuguês
Resumen
  • El enrutamiento de paquetes en Linux determina hacia dónde van los datos basándose en la tabla de rutas del núcleo.
  • La traducción de direcciones de red ajusta las IPs de origen y destino para permitir el acceso de redes privadas a internet.
  • Iptables utiliza tablas y cadenas tradicionales para filtrar paquetes y aplicar reglas de seguridad de forma eficiente.
  • Nftables reemplaza al ecosistema antiguo unificando el filtrado en una infraestructura moderna y flexible.
  • El seguimiento de conexiones permite que el firewall reconozca si un paquete pertenece a una sesión ya establecida.

Cómo el núcleo de Linux decide el destino de los paquetes de red

Cuando un servidor Linux recibe un flujo de datos de la red, debe decidir inmediatamente qué hacer con cada pieza de información entrante. En la práctica, esto significa que el sistema operativo analiza las cabeceras de los paquetes —que funcionan como la dirección y el remitente en una carta postal— para entender si el mensaje es para él mismo o si debe ser reenviado a otro equipo. Este proceso central se conoce como enrutamiento de paquetes.

Para realizar esta tarea sin interrupciones, el núcleo mantiene una tabla interna de rutas que indica qué interfaz de red debe utilizarse para alcanzar destinos específicos. Cuando un paquete llega y no encuentra un camino claro, se descarta silenciosamente o genera un mensaje de error de vuelta al remitente. Comprender este flujo inicial es el primer paso en cualquier diagnóstico de red, especialmente cuando queremos averiguar por qué una aplicación en la nube no logra comunicarse con su base de datos.

El papel de la traducción de direcciones de red en la conectividad moderna

A menudo, las computadoras dentro de una red corporativa o doméstica utilizan direcciones IP privadas que no funcionan directamente en el internet público. Para resolver este problema de escasez de direcciones, utilizamos la traducción de direcciones de red, conocida como NAT. En la práctica, este mecanismo altera la dirección IP de origen de un paquete saliente a una IP pública válida, guardando un registro en una tabla interna para recordar quién envió el mensaje original.

Cuando llega la respuesta del servidor externo, el enrutador o servidor Linux consulta este registro, deshace la alteración y entrega los datos de vuelta a la computadora correcta en la red interna. Este truco inteligente ahorra miles de millones de direcciones IP en todo el mundo, pero también añade complejidad al depurar por qué falla una conexión externa. Si la tabla de traducción se corrompe o se queda sin memoria, las conexiones simplemente dejan de funcionar, generando esa sensación frustrante de que internet se ha caído a medias.

Descubriendo el tráfico bloqueado con el iptables tradicional

Durante años, iptables fue la utilidad estándar en Linux para configurar reglas de filtrado de paquetes y NAT, operando directamente sobre estructuras del núcleo llamadas netfilter. En la práctica, organiza las reglas en tablas como filter para seguridad y nat para traducción de direcciones, divididas en cadenas que representan los momentos en que el paquete atraviesa el sistema. Si desea inspeccionar qué está bloqueando el acceso a un puerto específico, listar estas reglas activas es el primer paso lógico.

Para inspeccionar las reglas actuales del cortafuegos junto con los contadores de paquetes activos, ejecutamos un comando que muestra exactamente cuántos mensajes pasaron por cada regla de seguridad:

sudo iptables -L -v -n --line-numbers

Este comando emite un informe detallado con el número de regla, la cantidad de paquetes procesados y la acción correspondiente, ayudando a identificar rápidamente si un paquete está cayendo en una regla genérica de bloqueo. Para investigaciones más profundas sobre la traducción de direcciones y conexiones activas, podemos combinar herramientas de diagnóstico como cómo usar tcpdump para capturar paquetes de red en Linux directamente en la interfaz de red correspondiente, aislando el problema exacto.

Migrando a Nftables y su arquitectura unificada

Aunque iptables todavía funciona en la mayoría de las distribuciones Linux tradicionales, sufre de duplicación de código y caídas de rendimiento cuando el volumen de reglas crece masivamente en grandes centros de datos. Para solucionar estas limitaciones, la comunidad desarrolló nftables, reemplazando el marco antiguo con una sintaxis única y unificada para gestionar tanto firewalls IPv4 como IPv6. En la práctica, nftables elimina la necesidad de herramientas separadas y ofrece estructuras de datos mucho más eficientes, como tablas hash, que aceleran la búsqueda de reglas en servidores de alto tráfico.

Para listar todas las reglas configuradas en el nuevo sistema nftables de forma legible, utilizamos un comando directo que reemplaza toda la complejidad del ecosistema anterior:

sudo nft list ruleset

Este listado organizado por tablas y familias de protocolos simplifica enormemente la auditoría de seguridad y la identificación de reglas NAT mal configuradas. A diferencia de iptables, donde cada tabla se gestionaba de forma aislada, nftables permite agrupar múltiples criterios de inspección en una sola línea de comandos, haciendo que la resolución de problemas de red sea mucho más rápida y predecible para los administradores de sistemas.

Diagnosticando el seguimiento de conexiones y estados de red

Una de las innovaciones más importantes en los cortafuegos modernos basados en Linux es el seguimiento de conexiones, conocido como conntrack, que permite al sistema ver los paquetes no como eventos aislados, sino como parte de una conversación en curso. En la práctica, esto significa que si permitimos que un paquete salga de nuestro servidor para alcanzar un sitio externo, el firewall anota que la conexión es válida y autoriza automáticamente la respuesta de retorno sin requerir una regla de entrada compleja.

Cuando una aplicación sufre caídas misteriosas o conexiones colgadas, inspeccionar la tabla de estados del núcleo ayuda a revelar el agotamiento de recursos o conexiones zombis atascadas. Podemos ver las conexiones activas procesadas actualmente por el subsistema de NAT y cortafuegos ejecutando el siguiente comando:

sudo conntrack -L

Este listado muestra el protocolo utilizado, el tiempo de vida restante de la conexión y las direcciones involucradas en ambos extremos de la comunicación. Si la tabla está llena, los nuevos paquetes se descartarán independientemente de las reglas de firewall configuradas, un escenario clásico de fallo sistémico que confunde a muchos profesionales principiantes. Para complementar esta implementación en entornos de producción, consulte también nuestros análisis técnicos sobre Cómo probar cristal oscilador de cuarzo en placa y Por qué gRPC y Protocol Buffers superan a las APIs JSON tradicionales.

Consideraciones finales sobre la inspección de tráfico en Linux

Dominar la inspección de reglas de NAT y firewall en Linux transforma la forma en que abordamos problemas complejos de infraestructura y conectividad de red. En lugar de adivinar por qué un servicio quedó inaccesible, el administrador cuenta con una metodología empírica basada en la lectura correcta de los estados del núcleo, tablas de enrutamiento y contadores de paquetes. Como exploramos a lo largo de este artículo, herramientas como iptables, nftables y el seguimiento de conexiones forman un ecosistema poderoso para garantizar la seguridad y el flujo correcto de datos en cualquier entorno de servidor.

Mantener la curiosidad técnica y probar estos comandos en entornos controlados es el camino más seguro para ganar confianza en la operación de sistemas Linux en producción. Ya sea depurando reglas heredadas o migrando estructuras a nftables, la claridad sobre el camino que toma cada paquete dentro de la máquina es la clave definitiva para mantener servicios resilientes y libres de cuellos de botella ocultos.