Pásalo --script-security 2 --up /path/to/your/scriptcuando te conectes. Si está utilizando un archivo de configuración ubicado en /etc/openvpn/, agregue las siguientes líneas a su archivo de configuración:
script-security 2# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh
--script-security level [método]
Esta directiva ofrece control a nivel de políticas sobre el uso de OpenVPN
de programas externos y scripts. Los valores de nivel inferior son más
restrictivo, los valores más altos son más permisivos. Configuraciones para
nivel:
0: estrictamente sin llamadas de programas externos.
1 - (Predeterminado) Solo llame a ejecutables integrados como ifconfig,
ip, ruta o netsh.
2 - Permitir llamadas de ejecutables integrados y definidos por el usuario
guiones.
3 - Permitir que las contraseñas pasen a los scripts a través del entorno
variables (potencialmente inseguras).
--up cmd
Comando de Shell para ejecutarse después de abrir con éxito el dispositivo TUN / TAP (pre
- cambio de UID del usuario). El script up es útil para especificar
comandos de ruta que enrutan el tráfico IP destinado a privado
subredes que existen en el otro extremo de la conexión VPN en
el tunel.
Orden de ejecución del guión
--up Ejecutado después del enlace de socket TCP / UDP y TUN / TAP abierto.
--down Ejecutado después del cierre de TCP / UDP y TUN / TAP.
Hay más eventos para la ejecución del script, estos se pueden encontrar en la página del manual .
Crea /etc/openvpn/up.shy dale permisos de ejecución (por ejemplo, 755 o 700). Contenido de ejemplo para agregar una dirección y ruta IPv6 (mostrado con fines educativos, no lo copie directamente):
#!/bin/sh# add an IPv6 address to device $dev (environment variable)
ip -6 addr add 2001:db8::1:2/112 dev $dev# and the IPv6 route for this net using gateway 2001:db8::1
ip -6 route add 2001:db8::1:0/112 via 2001:db8::1 dev $dev
Tenga en cuenta que este upscript se ejecuta como root. Si no ha especificado una configuración Usery Group, OpenVPN también ejecutará scripts downcomo root.
Si no sabe cómo usar openvpn directamente, agregue los detalles de su configuración actual: tipo de conexión (por ejemplo, certificados X509), puerto de puerta de enlace, compresión LZO, fuerza de TCP, uso de dispositivo de derivación, cifrado, HMAC y TLS. Mencione también su configuración de IP si no es automática. Para su privacidad, omita sus direcciones reales.
Lekensteyn
Está bien, decidí usar OpenVPN directamente (y sí, tengo el archivo .conf), pero ¿se volverá a conectar automáticamente si se pierde la conexión? ¿Y cómo hago para que se conecte automáticamente siempre que haya conexión a Internet? Y finalmente, no entendí dónde debo agregar las líneas que mencionaste en la respuesta.
Oxwivi
He ampliado la respuesta para usarla openvpndirectamente. Al configurar un servidor, noté que OpenVPN intentará volver a conectarse cuando el servidor se apagó. No estoy seguro si OpenVPN continúa intentándolo cuando su interfaz de red deja de funcionar.
Lekensteyn
Mi problema no es cuando la interfaz de red se cae; intenta volver a conectarse cuando se pierde y recupera la conexión a Internet. Solo quiero conectarme a la VPN cada vez que obtengo conexión a Internet.
Oxwivi
Ah, ¿y el script se aplica a todas las conexiones VPN? Y por favor etiqueta @Oxwivi al responder, no voy a ser notificado de otra manera.
Oxwivi
5
A la pregunta: "¿Cómo puedo asociar un script a OpenVPN para que se ejecute cuando la VPN se conecte correctamente?" Quiero señalar que Lekensteyn proporcionó una excelente respuesta . Pero, en el momento en que se compuso su respuesta, le faltaba un poco de claridad sobre cómo debían proporcionarse los argumentos de la línea de comandos de openvpn para iniciar openvpn en una máquina ubuntu, especialmente para que funcione igual después de reiniciar.
Argumentos de la línea de comandos de Openvpn en Ubuntu:
Naturalmente, uno puede iniciar openvpn desde una línea de comando con cualquier opción legal disponible. Pero, en una máquina Ubuntu, si uno quiere iniciar openvpn con los mismos argumentos de línea de comando después de un reinicio, deberían considerar editar el archivo /etc/default/openvpn. Examine las siguientes líneas:
# Optional arguments to openvpn's command line
OPTARGS=""
- nivel de seguridad de script
Esta directiva ofrece control a nivel de políticas sobre el uso de OpenVPN de externos
programas y guiones. Los valores de nivel más bajo son más restrictivos, más altos
Los valores son más permisivos. Configuraciones para el nivel:
0: estrictamente sin llamadas de programas externos.
1 - (Predeterminado) Solo llame a ejecutables integrados como ifconfig, ip, route,
o netsh.
2 - Permitir llamadas de ejecutables integrados y scripts definidos por el usuario.
3 - Permitir que las contraseñas pasen a los scripts a través de variables ambientales
(potencialmente inseguro).
Las versiones de OpenVPN anteriores a la v2.3 también admitían un indicador de método que indicaba cómo
OpenVPN debería llamar a comandos y scripts externos. Esto podría ser execve
o sistema. A partir de OpenVPN v2.3, este indicador ya no se acepta. En la mayoría * nix
entornos el enfoque execve () se ha utilizado sin problemas.
Algunas directivas como --up permiten que se pasen opciones al script externo.
En estos casos, asegúrese de que el nombre del script no contenga espacios o
el analizador de configuración se ahogará porque no puede determinar dónde está el script
el nombre termina y comienzan las opciones de script.
Combinado con una sección abreviada en --up
--up cmd
Ejecute el comando cmd después de abrir con éxito el dispositivo TUN / TAP (cambio de UID previo al usuario).
cmd consiste en una ruta al script (o programa ejecutable), seguido opcionalmente
por argumentos. La ruta y los argumentos pueden estar entre comillas simples o dobles y / o
escapó usando una barra diagonal inversa, y debe estar separado por uno o más espacios.
Ejemplo:
En mi máquina con un servidor openpvn.conf, tengo las siguientes líneas en mi /etc/default/openvpnarchivo:
Por cierto, nat.sh configura la traducción de direcciones de red para enrutar el tráfico de red privada desde clientes openvpn a Internet público; lo cual es bueno para cuando uno no confía en un punto de acceso WIFI público.
Además de permitir reiniciar como se esperaba después de un reinicio, cuando /etc/openvpn/[client or server].confy los /etc/default/openvpnarchivos están configurados correctamente, openvpn se puede iniciar o detener con:
sudo service openvpn start
sudo service openvpn stop
Otras opciones útiles disponibles para service openvpnincluir cond-restart,force-reload,reload, restart,soft-restart, start, status, stop.
Como ese es un hilo bastante antiguo, no estoy seguro si aún es de interés. Si aún desea utilizar el NetworkManager para conectarse a una VPN, puede agregar una regla udev simple como esta:
Me encontré con la respuesta en mi investigación para resolver este problema y descubrí que la mejor solución es (usando el servidor openvpn) de la siguiente manera:
Agregue las siguientes líneas en la configuración de openvpn (generalmente /etc/openvpn/server.conf). En la respuesta anterior, se usó arriba y abajo, que se usan cuando se inicia el servidor (se reinicia). La directiva cliente-conectar (y cliente-desconectar) se utilizan cuando el cliente se conecta (desconecta).
network-manger-openvpn
.Respuestas:
network-manager-openvpn
no proporciona dicha funcionalidad, debe usarlaopenvpn
directamente.Pásalo
--script-security 2 --up /path/to/your/script
cuando te conectes. Si está utilizando un archivo de configuración ubicado en/etc/openvpn/
, agregue las siguientes líneas a su archivo de configuración:Desde la página de manual de OpenVPN :
Hay más eventos para la ejecución del script, estos se pueden encontrar en la página del manual .
Crea
/etc/openvpn/up.sh
y dale permisos de ejecución (por ejemplo, 755 o 700). Contenido de ejemplo para agregar una dirección y ruta IPv6 (mostrado con fines educativos, no lo copie directamente):Tenga en cuenta que este
up
script se ejecuta como root. Si no ha especificado una configuraciónUser
yGroup
, OpenVPN también ejecutará scriptsdown
como root.fuente
openvpn
directamente. Al configurar un servidor, noté que OpenVPN intentará volver a conectarse cuando el servidor se apagó. No estoy seguro si OpenVPN continúa intentándolo cuando su interfaz de red deja de funcionar.A la pregunta: "¿Cómo puedo asociar un script a OpenVPN para que se ejecute cuando la VPN se conecte correctamente?" Quiero señalar que Lekensteyn proporcionó una excelente respuesta . Pero, en el momento en que se compuso su respuesta, le faltaba un poco de claridad sobre cómo debían proporcionarse los argumentos de la línea de comandos de openvpn para iniciar openvpn en una máquina ubuntu, especialmente para que funcione igual después de reiniciar.
Argumentos de la línea de comandos de Openvpn en Ubuntu:
Naturalmente, uno puede iniciar openvpn desde una línea de comando con cualquier opción legal disponible. Pero, en una máquina Ubuntu, si uno quiere iniciar openvpn con los mismos argumentos de línea de comando después de un reinicio, deberían considerar editar el archivo
/etc/default/openvpn
. Examine las siguientes líneas:Desde la página de manual de comunidad openvpn en
--script-security
Combinado con una sección abreviada en
--up
Ejemplo:
En mi máquina con un servidor openpvn.conf, tengo las siguientes líneas en mi
/etc/default/openvpn
archivo:Por cierto, nat.sh configura la traducción de direcciones de red para enrutar el tráfico de red privada desde clientes openvpn a Internet público; lo cual es bueno para cuando uno no confía en un punto de acceso WIFI público.
Además de permitir reiniciar como se esperaba después de un reinicio, cuando
/etc/openvpn/[client or server].conf
y los/etc/default/openvpn
archivos están configurados correctamente, openvpn se puede iniciar o detener con:Otras opciones útiles disponibles para
service openvpn
incluircond-restart,force-reload,reload, restart,soft-restart, start, status, stop
.fuente
Como ese es un hilo bastante antiguo, no estoy seguro si aún es de interés. Si aún desea utilizar el NetworkManager para conectarse a una VPN, puede agregar una regla udev simple como esta:
KERNEL=="vpn0", RUN+="/PATH_TO_THE_SCRIPT/SCRIPT_NAME"
Esto debería ejecutar cualquier script después de crear la VPN.
fuente
Me encontré con la respuesta en mi investigación para resolver este problema y descubrí que la mejor solución es (usando el servidor openvpn) de la siguiente manera:
Crea un script para ejecutar:
Agregue las siguientes líneas en la configuración de openvpn (generalmente
/etc/openvpn/server.conf
). En la respuesta anterior, se usó arriba y abajo, que se usan cuando se inicia el servidor (se reinicia). La directiva cliente-conectar (y cliente-desconectar) se utilizan cuando el cliente se conecta (desconecta).fuente