El script del hook se activa, lee ppp0 y aplica rutas a cualquier interfaz que tenga ese nombre en ese momento. A veces es el túnel que querías; a veces es una sesión que se conectó un minuto antes. La siguiente reconexión mueve el número, y el mismo script configura en silencio el enlace equivocado. La solución es tomar la interfaz de la invocación que acaba de ejecutarse y llevar el perfil previsto junto a ella.

Sigue una sesión desde las opciones hasta el hook

Empieza donde se crea la sesión. xl2tpd inicia pppd con el archivo de opciones que indica el pppoptfile de ese túnel, así que el complemento, el número de unidad y cualquier marcador de perfil se deciden allí y no en un archivo global. Un gestor de conexiones puede generar sus propias opciones, lo que significa que editar /etc/ppp/options no es prueba de que el túnel que te importa haya cambiado. Cuando el enlace sube, pppd ejecuta los scripts de notificación del despachador de la distribución. Esos scripts reciben el nombre de la interfaz como primer argumento y el marcador de perfil como sexto.

El entorno lleva los mismos hechos con nombres como IFNAME y PPP_IPPARAM, pero su disponibilidad depende del despachador instalado. Lee el despachador antes de confiar en una variable: algunas distribuciones conservan el orden de argumentos original, otras filtran el entorno antes de llamar a tu script. Un script que solo usa $1 y el sexto argumento funciona en ambos casos.

Lee la interfaz de la invocación

El hook tradicional recibe la interfaz primero. Ese valor posicional es el identificador de interfaz que describe la sesión que activó el script. Guárdalo en una variable al principio y luego usa esa variable para rutas, reglas de firewall y desmontaje.

ipparam office-vpn

Adjunta un marcador de perfil donde se definen las opciones, no dentro del script. Con esa línea en el archivo de opciones del túnel, cada sesión creada desde ese archivo lleva office-vpn como sexto argumento. El script puede ramificar según el marcador mientras sigue actuando sobre la interfaz real. Mantén los dos separados en el código, porque el marcador es estable y la interfaz se asigna por sesión.

Pide un nombre solo si el rechazo es correcto

Un nombre fijo parece más simple que leer argumentos, pero cambia el comportamiento ante fallos. La opción unit pide un número para una conexión saliente, y pppd recurre a una asignación dinámica cuando esa unidad ya está ocupada. Nada en ese resultado reserva ppp0 para tu perfil.

ifname ppp-office

La opción ifname se comporta distinto: si el nombre solicitado ya está en uso o no se puede asignar, pppd sale en lugar de elegir otro. Es una decisión de política, no un cambio de nombre estético. Úsala cuando deba rechazarse una segunda instancia concurrente del mismo perfil, y confirma que el pppd instalado y tu gestor de conexiones pasan la opción.

En cualquier caso, el nombre que ve el script es el que hay que tratar. Un nombre configurado no elimina la necesidad de leer la invocación, porque una sesión reiniciada aún puede presentar un nombre distinto al anterior.

Haz que el desmontaje coincida con la sesión que configuraste

Las rutas y las reglas de firewall sobreviven al script que las creó, así que el desmontaje debe eliminar exactamente los objetos que posee la sesión. Etiqueta las reglas con el marcador de perfil además de la interfaz, y borra por esa etiqueta. Si dos túneles pueden estar activos, borrar todo lo que menciona ppp es como una desconexión rompe la otra conexión.

Prueba el caso que expone el error: levanta la segunda sesión PPP mientras la primera sigue conectada, luego reconecta la primera y observa qué interfaz informa el hook. Una ejecución exitosa con una sola sesión no demuestra nada sobre la asignación de nombres. Repítelo con la VPN detenida para confirmar que el desmontaje no deja una ruta obsoleta.

Guarda el marcador, la interfaz y la ruta del hook en las notas de despliegue. Cuando el número cambia tras un reinicio, esos tres valores explican por qué el script se comportó distinto sin ninguna edición de configuración.

Artículos relacionados