Un túnel puede informar de que está conectado mientras nada llega a través de él, y esos dos hechos viven en lugares distintos. Uno es la tabla de rutas, que puede seguir enviando paquetes a un dispositivo que ya no es de nadie. El otro es el resolutor, que puede seguir listando un servidor en un enlace que ha desaparecido. El cambio de red no dañó el perfil, dejó huérfano el estado de la conexión anterior, y la reparación depende de cuál de los dos estés mirando en realidad.

Primero, pregunta al núcleo qué dispositivo usaría

Un listado de rutas muestra lo que existe; una consulta de ruta muestra lo que ocurriría. Pregunta por una dirección pública y lee el nombre del dispositivo en la respuesta, porque ese único campo decide si el paquete llega a algún sitio útil. Cuando la respuesta nombra un dispositivo de túnel, el núcleo le entregará los paquetes aunque no quede ningún proceso cliente en ejecución detrás de esa interfaz. Cuando la respuesta nombra el adaptador físico mientras el cliente dice estar conectado, el túnel está levantado y simplemente no es la ruta elegida.

El segundo caso es el habitual después de que un cable sustituya al wifi, y se presenta como una VPN rota.

ip route show default
ip route get 203.0.113.9

Lee después las entradas por defecto, ya que una ruta añadida por la conexión base anterior puede sobrevivir a un cambio de enlace y colocarse delante de la nueva. Una ruta por defecto a través de un dispositivo caído es peor que no tener ruta por defecto, porque el núcleo la sigue prefiriendo. Fíjate en la métrica junto a cada entrada, porque ese orden explica la preferencia más rápido que los nombres de las interfaces.

Después, lee el resolutor por enlace, no por archivo

La resolución de nombres tiene su propio estado y su propia obsolescencia. Un resolutor que lista servidores DNS por enlace conserva los servidores de un enlace de túnel que está caído pero sigue registrado, y cada consulta espera entonces a un servidor que no responderá. El síntoma es una red que parece muerta mientras la tabla de rutas está impecable.

Inspecciona el estado por enlace en lugar del archivo, porque en muchas distribuciones ese archivo es un enlace simbólico al resolutor y editarlo no hace nada o se sobrescribe enseguida. Mira qué enlace posee qué servidores y qué dominio de búsqueda, y luego pregúntate si el enlace de túnel debería seguir registrado. Si no debería, desactiva la conexión que lo posee en vez de editar a mano un estado generado. Un nombre que se resuelve mientras la consulta de ruta envía paquetes a otro sitio es un tercer fallo, distinto.

resolvectl status
resolvectl query app.internal.example

Si las direcciones se resuelven y las conexiones fallan, el resolutor está bien y la ruta no. Si las direcciones no se resuelven en absoluto, este es el sitio por donde empezar.

Cómo sobrevive una ruta obsoleta al cambio

El cliente no es dueño de la red por sí solo. En un equipo con NetworkManager un perfil de VPN se activa sobre una conexión base, y los ajustes de conexión permiten que esa base nombre la VPN que debe seguirla. Cuando la base cambia porque otro perfil pasa a ser preferido, el túnel sigue sobre la nueva base o se queda sin ninguna.

Un perfil de VPN no se levanta solo, así que el emparejamiento importa mucho más que la preferencia de conexión automática del propio perfil.

Lee la lista activa y anota qué base está levantada antes de tocar el túnel. Si la base aparece y el túnel no, la ruta falta en lugar de estar obsoleta y el arreglo es la activación. Si al activar el túnel se queja de que no existe conexión de origen, la base con la que estaba emparejado ha desaparecido, así que levántala primero o repara el emparejamiento en vez de reintentar el túnel. Reintentar un perfil cuyo padre falta produce el mismo error cada vez, lo cual es una señal útil y no una molestia.

nmcli device status
nmcli connection show --active
nmcli connection up office-vpn

Distinguir el estado obsoleto de un padre ausente

Tres estados explican casi todos los informes, y cada uno necesita una reparación distinta. Una ruta por defecto a través de un dispositivo que todavía existe pero ya no lleva el túnel es estado obsoleto, que se limpia borrando la entrada o reiniciando el perfil responsable. Un dispositivo de túnel cuyo proceso cliente ha desaparecido es un fallo de limpieza, así que el camino de desconexión merece la atención en vez de la tabla de rutas. No tener ningún dispositivo de túnel significa que falta el padre o el emparejamiento y que la tabla de rutas nunca estuvo implicada.

Reiniciar oculta cuál de los tres tenías, y por eso precisamente parece un arreglo.

Tras la reparación, pide al núcleo una dirección pública y otra interna, y luego consulta un nombre interno. Cuando la dirección funciona y el nombre no, has encontrado un problema de ámbito de dominio en el resolutor y no de enrutamiento. Anota qué estado encontraste, porque el próximo cambio de red reproducirá el que hayas dejado en paz.

Artículos relacionados