Abrir UDP 500 en el cortafuegos hace que el túnel negocie, y después la conexión deja de pasar tráfico. La lista de puertos estaba incompleta, no equivocada. IKEv2 comienza en un socket y, en muchas implementaciones reales, continúa en otro, mientras que la carga útil puede no ser un puerto en absoluto. Leer las etapas en orden explica qué regla falta.

Dos puertos, dos trabajos

IKEv2 comienza con un intercambio de claves en UDP 500, donde los pares se autentican y establecen una asociación de seguridad para el túnel. La ruta de datos que sigue es un asunto aparte: puede ser ESP nativo, que es un número de protocolo IP y no un puerto, o tráfico encapsulado en UDP en 4500. Mantenerlos separados en una revisión del cortafuegos es la diferencia entre un túnel que negocia y un túnel que funciona. Un socket lleva el control y el otro la carga útil.

Por eso una regla que solo permite 500 produce el síntoma más confuso de toda la familia de protocolos: la negociación tiene éxito y no sigue nada útil. El estado muestra un par, el registro muestra una IKE SA establecida y la aplicación sigue agotando el tiempo. El permiso que falta pertenece a un flujo distinto del que acaba de funcionar.

Por qué existe 4500

Muchos dispositivos NAT no pueden reenviar otro protocolo que no sea TCP o UDP, y algunos reescriben las direcciones de forma que rompen la comprobación de integridad de ESP. Encapsular ESP dentro de UDP resuelve ambos problemas, a costa de una cabecera adicional y un segundo puerto que permitir. Ese encapsulado es la razón por la que el segundo puerto existe.

Cuando se detecta NAT, IKE también se traslada a 4500 para que todo el tráfico comparta una sola ruta a través del traductor. Un marcador de cuatro bytes que no es ESP distingue los mensajes de control de los datos en ese socket. El cambio es una decisión del protocolo, no una preferencia del administrador.

Dónde cambia el puerto de origen

Un traductor puede reescribir el puerto de origen del cliente, así que la tupla que ve el servidor no coincide con la tupla del cliente. Mira ambos lados de cada salto NAT antes de concluir que se ignora una regla. Diagnosticar solo en el cliente puede producir una regla que parece correcta y aun así falla.

Las implementaciones compatibles con MOBIKE también pueden pasar a 4500 sin NAT detectado, y algunas instalaciones fuerzan esa ruta deliberadamente. Ver 4500 es, por tanto, evidencia de una decisión, no prueba de un router doméstico.

Comprueba ambos flujos en cada frontera

Recorre las tres fronteras: la red del cliente, cualquier cortafuegos intermedio y el servidor. Cada una necesita los flujos que documenta la instalación, no los flujos de un artículo sobre otro caso.

sudo swanctl --list-sas
sudo tcpdump -ni any 'udp port 500 or udp port 4500'
sudo iptables -S | grep -E '500|4500|esp'
ip xfrm state

La línea ESP de una lista de cortafuegos es una coincidencia de protocolo, así que una regla de puerto nunca la cubre. Si el operador usa un puerto personalizado, sigue la configuración documentada en ambos extremos, porque un cliente no puede crear un receptor en el servidor eligiendo un número conocido.

Registra dónde se detuvo la negociación y si se instaló una asociación de seguridad hija, porque ese par separa una ruta bloqueada de un error de autenticación o de política. Después repite la prueba con la verificación del servidor activada, porque la accesibilidad no es autenticación. Ese último paso separa un puerto permitido de un par de confianza.

Artículos relacionados