¿OpenVPN sigue empujando rutas antiguas? Comprueba qué ha cargado
O el servidor nunca leyó tu cambio, o el cliente nunca instaló lo que recibió. Compara el proceso en marcha, la lista empujada y la ruta de vuelta.
Añades una ruta, reinicias el servicio, te reconectas y la tabla del cliente queda exactamente como antes. Pueden ser ciertas dos cosas distintas: que el servidor nunca cargara tu cambio o que el cliente nunca instalara lo que recibió. No tienen nada en común salvo el síntoma, así que el primer paso es averiguar cuál de los dos tienes.
La comparación de abajo va del proceso hacia fuera, porque el proceso es la única autoridad sobre qué archivo está en vigor.
El archivo que editaste y el archivo que lee el proceso
Empieza por la unidad y la línea de comandos que produjo. En un host con systemd, systemctl cat openvpn@server imprime la línea ExecStart, y una unidad de instancia suele derivar su ruta de configuración del nombre de la instancia, así que un demonio iniciado como openvpn@office lee un archivo distinto del iniciado como openvpn@server. Compara eso con el argv del proceso en marcha. Una herramienta de gestión de configuración añade otra forma de perder el cambio: puede escribir un archivo correcto en una ubicación que la unidad nunca menciona, y entonces un despliegue en verde parece no haber hecho nada.
Las marcas de tiempo lo resuelven rápido: si el archivo es más nuevo que la hora de inicio del proceso, el proceso no pudo haberlo leído. El firmware del router añade un tercer caso, porque muchos modelos guardan su configuración en la flash y la reconstruyen durante el arranque, lo que convierte editar un archivo en disco en la capa equivocada por completo.
Qué empuja el servidor y qué instala el cliente
Una ruta empujada tiene que sobrevivir a dos filtros. En el servidor debe estar en la configuración cargada, no en un bloque comentado ni en un archivo específico de cliente cuyo nombre no coincida. En el cliente, pull debe estar activado y ningún pull-filter puede estar descartando la opción. Conéctate con verbosity 4 y lee las opciones empujadas que informa el cliente: si la ruta aparece en esa lista, el servidor hizo su trabajo y es el cliente quien elige no instalarla.
Los archivos específicos de cliente son una fuente frecuente de confusión. Un archivo nombrado según el common name del certificado empuja opciones solo a ese cliente, y una diferencia de un carácter detiene el envío en silencio, sin error en ninguno de los dos lados. El servidor registra el common name que vio al conectar, así que compara ese valor con el nombre del archivo, no con lo que crees que se llama el cliente.
El prefijo empujado y la ruta de vuelta son problemas distintos
Un cliente que ignora a propósito redirect-gateway para conservar su ruta local a internet crea una segunda laguna, sin relación. Las sondas del servidor llegan a la dirección del túnel y las respuestas nunca llegan, porque una respuesta dirigida a la IP del túnel del servidor se enruta por la puerta de enlace predeterminada normal del cliente. La ruta de subred empujada no tiene la culpa aquí; lo que falta es una ruta que devuelva el tráfico de la red del túnel del servidor por el dispositivo de túnel.
Añadir esa ruta en el cliente corrige las respuestas a las sondas que origina el servidor. No sustituye a la ruta de subred empujada, y lo contrario también es cierto, porque las dos describen direcciones de viaje opuestas.
Compara las tablas en ambos extremos
Tras cualquier cambio, reconéctate y lee la tabla del cliente para el prefijo empujado y para el dispositivo de túnel. Luego prueba en ambos sentidos: del cliente a un host de la subred empujada, y de ese host de vuelta al cliente. Una ruta que existe pero no transporta tráfico significa una de tres cosas: el otro extremo no reenvía, un cortafuegos descarta el flujo, o la respuesta no tiene camino de vuelta.
Mantén tres identificadores juntos: la ruta de configuración, el nombre de la unidad o instancia y la identidad del cliente con la que probaste.
Esos tres convierten la próxima incidencia en una comprobación de cinco minutos en lugar de otra investigación, y son lo que necesita un compañero cuando el túnel pasa a ser problema de otra persona.
Un problema de rutas que sobrevive a un reinicio a menudo no es un problema de enrutamiento en absoluto; el fallo está por encima de la tabla que no dejas de leer.