El nombre de una cadena no es un gancho: iptables frente a nftables
Una cadena es un contenedor; el gancho decide si el núcleo la consulta. Compare las cadenas integradas de iptables con las cadenas base de nftables antes de editar reglas.
Ambos firewalls pueden filtrar el tráfico VPN reenviado, y enlazan las reglas con la ruta del paquete de formas distintas. iptables tiene cadenas integradas dentro de una tabla, así que FORWARD existe como punto de gancho con nombre. nftables separa el nombre de una cadena de su tipo, gancho y prioridad, lo que significa que una cadena normal llamada FORWARD no filtra absolutamente nada. Comparar los dos modelos explica por qué una entrada que parece correcta en una herramienta no tiene efecto en la otra.
Una cadena es un contenedor. Que el núcleo la consulte depende de la implementación y de cómo el conjunto de reglas la engancha.
Dos modelos, dos enganches distintos
En iptables, la tabla filter trae tres cadenas integradas, INPUT, FORWARD y OUTPUT, y -N crea una cadena definida por el usuario que solo surte efecto cuando se salta a ella desde una de ellas. El manual de nftables define en cambio cadenas base, que declaran su tipo, gancho y prioridad, y cadenas normales, que no lo hacen. Una cadena base puede llevar cualquier nombre que se desee, y una cadena normal llamada FORWARD no gana ninguna propiedad por su etiqueta. Esa es toda la diferencia, y resulta invisible en un tutorial que solo muestra texto de reglas.
Los backends de compatibilidad añaden una segunda razón para no inferir el comportamiento del nombre de un comando. La documentación de iptables menciona operaciones que difieren bajo iptables-nft, así que trate nftables nativo, iptables-nft y un conjunto de reglas antiguo como tres sistemas y no como tres grafías de uno.
Lea el error en su contexto real
Una tabla ausente, un fallo de permisos, una función del núcleo no disponible y una cadena con nombre ausente son cuatro hallazgos distintos, y solo uno trata de la cadena. Anote la versión de la herramienta, la familia de direcciones y la tabla solicitadas, el espacio de nombres de red y el primer error exacto. Después compruebe qué componente posee el conjunto de reglas: un servicio de firewall o una puerta de enlace gestionada por un producto puede generar sus propias cadenas y su orden. Añadir una cadena nativa junto a ellas deja intacta la política gestionada y hace el inventario más confuso.
El espacio de nombres de un contenedor puede contener un conjunto de reglas distinto del host, así que un comando ejecutado en el contexto equivocado no puede mostrar qué cadena vio un paquete reenviado. Elevar privilegios porque una cadena esperada no era visible no es un diagnóstico.
Los contadores prueban alcance, no veredicto
Los contadores de reglas le dicen que se alcanzó una regla. No le dicen que una regla posterior permitió la operación, ni prueban que se denegaran todas las rutas alternativas. Léalos durante un flujo autorizado e inofensivo, junto con el orden de las reglas y el enganche de la cadena, y trátelos como una observación y no como un veredicto. Un contador distinto de cero en una regla de descarte significa que el tráfico la alcanzó; no dice nada del tráfico que no lo hizo.
El reenvío IP del núcleo es un ajuste completamente aparte. Que exista una cadena no habilita el reenvío, y que falte una etiqueta conocida no significa que el reenvío se haya detenido.
Describa el flujo que espera proteger
Anote una solicitud de cliente tras la desencapsulación: su origen, su destino, la familia de direcciones y si termina en la puerta de enlace o la atraviesa. La entrada del servicio local y el tráfico reenviado se observan en puntos distintos, así que necesitan reglas y pruebas distintas. Para una VPN puenteada, verifique también la ruta del puente, porque una cadena a nivel IP no controla automáticamente las tramas Ethernet.
Conserve un acceso de recuperación independiente antes de cambiar una puerta de enlace remota. Luego confirme el flujo previsto y las denegaciones necesarias bajo el mismo conjunto de reglas. Una cadena nueva y vacía con un nombre conocido no es una reparación.
La comparación termina en una pregunta: ¿qué gancho llama realmente el núcleo para este paquete? Responda eso y el nombre de la cadena deja de importar.