Enumerar una conexión en la configuración de strongSwan solo demuestra que se cargó una definición. No significa que se haya contactado con el par, que exista una SA de IKE ni que algún tráfico esté protegido. El demonio trata las definiciones y las asociaciones vivas como objetos distintos, y la distancia entre ellos es una decisión de diseño deliberada. Saber qué objeto estás inspeccionando convierte un fallo vago en un siguiente comando concreto.

Cargar no es conectar

Una conexión cargada es una declaración de lo que podrá negociarse después: direcciones del par, credenciales, propuestas y selectores de tráfico. Nada en esa declaración exige que el demonio haya marcado a nadie. Una puerta de enlace puede esperar al otro lado, iniciar al arrancar o esperar a que un tráfico coincidente la despierte. Las tres son válidas, y las tres se ven idénticas en el archivo de configuración hasta que lees la política de inicio.

Los operadores se meten en problemas al leer la lista de definiciones como una lista de estado. El perfil está ahí, así que se da por hecho que el túnel está levantado, y la hora siguiente se va en depurar rutas para una asociación que nunca se construyó.

El error contrario es igual de común. Un perfil ausente manda a la gente a buscar un fallo de red cuando la configuración nunca se cargó. Nombra el objeto y luego ejecuta el comando que lo observa.

Tres objetos, tres observaciones

strongSwan mantiene una definición cargada, una SA de IKE y una SA CHILD. La primera es configuración, la segunda es una relación de control autenticada y la tercera es protección negociada para el tráfico seleccionado. Incluso tienen nombres separados, así que un perfil llamado hq puede poseer un child llamado hq-lan.

La tabla asigna cada capa al comando que la muestra. Lee la fila antes de leer el registro.

LayerWhat it containsCommand
DefinitionPeer addresses, credentials, proposals, and traffic selectorsswanctl --list-conns
IKE SAOne authenticated control channel to the peerswanctl --list-sas
CHILD SAKeys and selectors for the traffic being protectedChild rows under the IKE SA

Solicitar el hijo construye primero su SA de IKE padre cuando no existe ninguna. Solicitar solo la SA de IKE es otra llamada. Un canal de control que se autentica bien no garantiza el hijo que pediste.

Esa diferencia importa durante un fallo parcial. Una SA de IKE puede estar sana mientras el hijo falla por un desajuste de selector o una propuesta que el par no acepta. Los dos objetos fallan por razones distintas, así que merecen observaciones separadas.

Elige la acción de inicio a propósito

En swanctl.conf, el start_action de un hijo decide el comportamiento tras la carga. El valor por defecto none deja la definición para inicio manual o uso como respondedor. start la marca, mientras que trap deja una política que negocia en cuanto aparece tráfico coincidente.

Así que tanto «cargar nunca inicia un túnel» como «cargar siempre inicia uno» son falsos. La acción forma parte del perfil y debe coincidir con el rol del par. Dos puertas de enlace que esperan ambas al otro lado producen silencio, no un túnel.

Con trap, el tráfico tiene que coincidir con los selectores, así que un ping no relacionado no despertará nada. Con start, la dirección del par debe ser utilizable y ambos lados deben ponerse de acuerdo en autenticación y propuestas. Ninguna de las dos acciones sustituye la comprobación de esas condiciones.

La recuperación es una política aparte

El arranque no es un keepalive. La detección de par muerto, el cierre explícito por parte del par, la renovación de claves y el reinicio del proceso son eventos de ciclo de vida distintos con sus propios ajustes. Configura cada uno a propósito en lugar de esperar que un inicio inicial los cubra todos.

Un túnel que sube al arrancar y muere una hora después es una cuestión de recuperación. La política de inicio hizo su trabajo y luego dejó de importar. Mira los ajustes de DPD y de renovación de claves antes de culpar a la negociación inicial.

Sustituir definiciones cargadas es una operación propia. Las políticas de inicio no predeterminadas tienen acciones inversas documentadas, y una recarga es un cambio operativo en lugar de la suposición de que cada asociación se actualizó en su sitio. Haz las recargas por etapas, donde una reconexión sea aceptable. Conserva la configuración antigua hasta que la nueva esté probada.

Comprueba qué existe antes de depurar el enrutamiento

Ejecuta las tres observaciones en orden: definiciones cargadas, SA de IKE activas y entradas de hijo. Cada respuesta estrecha la siguiente pregunta. Salta un paso y acabarás depurando una capa que nunca se construyó.

Empieza por lo que está cargado y por lo que está realmente establecido:

swanctl --list-conns
swanctl --list-sas

Si falta el hijo mientras el perfil es correcto, inícialo por su nombre y observa qué pasa. La salida suele decir si el padre subió primero.

swanctl --initiate --child hq-lan

Una SA CHILD activa no es la meta. Las reglas de reenvío, las rutas y la propia autorización de la aplicación aún tienen que cuadrar. El ciclo de vida responde a lo que se negoció; no puede decidir quién puede usar el servicio.

Artículos relacionados