El servidor dice que envió la ruta, el cliente dice que está conectado, y el destino sigue siendo inalcanzable. Tres causas producen exactamente esa imagen. La adición de la ruta se ejecutó antes de que existiera el dispositivo, al cliente le faltaban permisos para cambiar la tabla, o una política le indicó al cliente ignorar las opciones enviadas.

Desde fuera parecen idénticas y necesitan correcciones distintas. Lea el registro del cliente en el punto donde se toma la decisión de la ruta.

Demuestre que la ruta está ausente, no solo rota

Empiece demostrando que la ruta está ausente en lugar de rota. En Linux, ip route show dev tun0 enumera lo que el cliente instaló en el dispositivo de túnel. En Windows, route print o Get-NetRoute muestra lo mismo en forma de tabla.

Una ruta que existe pero no reenvía tráfico es un problema distinto. Eso traslada la investigación a las reglas de reenvío y cortafuegos, no a la instalación de la ruta.

Tiempos: la adición se ejecutó antes de que existiera el dispositivo

El cliente analiza el PUSH_REPLY del servidor después de que el canal de control está activo y de que ha configurado la interfaz. Solo entonces toca la tabla de enrutamiento, con el mecanismo que proporcione la plataforma. Linux pasa por netlink; Windows usa una API que necesita un token elevado. Un script o un cliente que añade rutas en cuanto lee la configuración puede ejecutarse antes de que exista el dispositivo TUN/TAP, y el núcleo rechaza la adición.

La misma carrera explica por qué una ruta escrita a mano funciona mientras que la automática no: cuando la escribe, la interfaz ya está activa.

route-delay existe para este caso, y route-up nombra un script que se ejecuta después de configurar la interfaz y las rutas. Ponga las rutas que dependen de la dirección del túnel en ese gancho en lugar de en una etapa temprana.

Permisos: quién puede cambiar la tabla

Cambiar la tabla de enrutamiento de Windows necesita un token elevado. Una GUI iniciada por un usuario estándar puede establecer la dirección del adaptador a través del servicio y aun así no poder añadir una ruta. El registro muestra entonces un error del tipo acceso denegado en lugar de un envío ausente.

Iniciar la GUI como administrador, o usar el cliente basado en servicio, cambia ese resultado. Una tarea programada que inicia el cliente sin el token requerido no lo hace.

Compruebe con qué cuenta se ejecuta realmente el cliente antes de cambiar nada. La versión y el modo de servicio deciden qué causas son posibles, así que anote ambas junto a la salida de la ruta.

Política: las rutas enviadas pueden descartarse a propósito

route-nopull hace que el cliente ignore las rutas que envía el servidor, incluida una ruta predeterminada enviada, mientras la dirección del túnel sigue aceptándose. Las opciones de DNS y DHCP enviadas se descartan por la misma directiva. Ese cliente no es defectuoso; espera líneas de ruta explícitas en su propia configuración.

route-noexec es un control distinto: detiene al cliente por completo de ejecutar cambios de ruta. Una topología que el cliente no puede mapear puede producir un resultado similar, con la ruta registrada como rechazada en lugar de añadida. Lea la línea del registro que informa de la decisión en lugar de adivinar cuál de las tres se aplica. Después compruebe el perfil efectivo, porque un importador o una herramienta de gestión puede añadir opciones que el usuario nunca editó.

Un perfil que parece limpio en un editor de texto puede seguir llevando una directiva añadida en tiempo de ejecución.

Compare la lista de envío con la tabla

Tras conectar, ponga la lista de envío del servidor junto a la tabla del cliente. En Linux eso es ip route show dev tun0; en Windows, route print o Get-NetRoute. Si la ruta está ausente, corrija primero la instalación. Si está presente y el tráfico falla, pase a la política de reenvío y cortafuegos.

Anote la versión del cliente, la cuenta con la que se ejecuta y si está basado en servicio. Esos tres hechos dicen a la siguiente persona qué causas quedaron descartadas.

Artículos relacionados