En algún hilo de un foro, se ofrece ifconfig-noexec como la corrección que mantiene viva una sesión SSH cuando sube un túnel. El razonamiento suena plausible hasta que compruebas qué toca la opción. Impide que OpenVPN configure la dirección de la interfaz del túnel y entrega esos valores a scripts en su lugar; sobre adónde van las respuestas a tu conexión de gestión no dice nada. Creer lo contrario produce un túnel sin dirección utilizable y una sesión SSH que igualmente muere.

Qué delega realmente la opción

De forma predeterminada, el cliente levanta el dispositivo de túnel y asigna las direcciones local y remota que le entregó el servidor. Con ifconfig-noexec establecido, ese paso se omite y los valores negociados se exportan al entorno del script para que otra cosa los aplique.

La propiedad se mueve. No se inventa nada en su lugar.

Así que la pregunta que responde la opción es quién configura la interfaz, y la pregunta que no responde es cómo encuentran los paquetes el camino de vuelta hacia ti. Mantenlas separadas o pasarás una noche editando rutas para compensar una interfaz sin dirección.

Tres opciones parecidas con trabajos distintos

La familia se confunde con facilidad porque los nombres difieren en una palabra y los síntomas se solapan. Lee lo que suprime cada una antes de elegir cualquiera.

OpciónQué deja de ocurrir
ifconfig-noexecLa configuración propia de la dirección del túnel por OpenVPN; los valores van a scripts en su lugar
route-noexecLa adición y eliminación automática de rutas; los detalles de la ruta van a un script
route-nopullLas rutas que empuja el servidor y las opciones relacionadas como DNS se rechazan

Son alternativas que hay que entender por separado, no un conjunto para pegar junto. Suprimir la configuración de dirección no suprime los cambios de ruta, las reglas de cortafuegos ni las opciones empujadas que llevan DNS. Un script delegado también es libre de cambiar rutas, y eso es una decisión que entregas en lugar de evitar.

Si un cliente de proveedor envuelve el motor, usa su integración compatible en lugar de dejar una directiva de bajo nivel en un perfil y esperar que el envoltorio la respete. Los envoltorios a menudo regeneran el perfil al conectar, así que una edición manual desaparece sin error. Comprueba dónde guarda el cliente sus ajustes antes de pasar una noche con el archivo. Eso se aplica a cada fila de la tabla, no solo a la que viniste a buscar.

La sesión SSH que querías proteger

Una conexión SSH tiene una dirección de origen, una dirección de destino y una ruta de respuesta. En un servidor que acaba de instalar un túnel completo predeterminado, la respuesta a tu dirección pública coincide con el túnel, y la puerta de enlace VPN la descarta.

Nada en la configuración de dirección de la interfaz del túnel cambia eso.

Lo que lo arregla es una ruta más específica para tu dirección de gestión a través de la puerta de enlace previa al túnel, o una regla de política que dirija ese tráfico, más los ajustes de filtrado que aplique tu host. Los dos problemas a veces aparecen juntos, y así es como uno se toma por cura del otro. Pruébalos por separado: sube el túnel sin la opción, mira la dirección de la interfaz y la ruta de respuesta, y luego decide cuál de los dos está realmente roto.

Qué tiene que asumir un script delegado

Si de verdad quieres que otro propietario configure la interfaz, enumera el trabajo: aplica las direcciones local y remota, levanta el dispositivo, restaura o elimina el direccionamiento al desmontar, y haz lo mismo otra vez tras reconectar. Los valores de una sesión exitosa no deben codificarse de forma fija, porque el servidor puede entregar otro par la próxima vez.

Las variables de entorno que exporta el cliente son la única entrada admitida para ese trabajo.

env | grep -E '^ifconfig_|^route_'

Dentro de un script route-up esas variables están disponibles; desde una tarea cron o un shell manual no lo están. Confirma qué gancho de ciclo de vida usa tu versión, y confirma que el gancho se ejecuta con privilegios suficientes para cambiar la interfaz, ya que el cliente puede haber bajado ya a un usuario sin privilegios.

Prueba todo el ciclo de vida, no una sola sesión

Sube el túnel, comprueba la dirección en el dispositivo, reconecta y vuelve a comprobarla. Una configuración que funciona una vez y falla en el segundo intento normalmente significa que el paso delegado solo se ejecuta en la primera conexión.

Después prueba juntos los dos criterios de aceptación: una conexión SSH nueva por la ruta de gestión prevista funciona, y una aplicación permitida usa el túnel correctamente.

Una sesión SSH antigua que sobrevive por casualidad mientras el túnel no tiene dirección no es un éxito, y es exactamente el estado que produce esta opción cuando nadie asume el trabajo. Comprueba primero la dirección de la interfaz, luego la ruta de respuesta de gestión, luego la aplicación. Si dos de las tres están mal, la opción movió trabajo sin darle un propietario.

Artículos relacionados