¿Reconexión automática a VPN al desconectar?

16

Soy un usuario de Ubuntu GNOME y me preguntaba si hay una manera de poder reconectarme automáticamente a una VPN en la desconexión . Estoy usando el protocolo OpenVPN .

He comprobado minuciosamente Network Manager pero no pude encontrar esa opción, solo para conectarme a la VPN cuando estoy conectado a un WiFi específico.

Patrik
fuente

Respuestas:

20

A partir de la 18.10 (no se puede verificar en versiones anteriores), las conexiones VPN en NetworkManager tienen una configuración vpn.persistentque hace exactamente eso: se vuelve a conectar a una VPN en caso de pérdida de conexión hasta que se desconecte manualmente. Está configurado "no"de forma predeterminada y desafortunadamente no está expuesto ni en la Configuración de red de Gnome ni en nm-connection-editor.

Pero puede configurarlo a través de una CLI como esta:

nmcli connection modify <Your VPN connection name> vpn.persistent yes

La conexión debe existir antes de hacerlo, por supuesto.

m0NKey bR4in
fuente
2
Esto es lo que quería. Un millón de gracias
Wyatt8740
Dado que esta configuración está disponible, ¿por qué la configuración de red no la muestra? ¿Y dónde / cómo te enteraste? No se menciona esto en developer.gnome.org/NetworkManager/stable/nmcli.html, pero dado que la ejecución del comando parece tener éxito, supongo que funciona ...
Al F
@alf Creo que encontré esta configuración simplemente pinchando en nmcli en el terminal, pero también está documentado en developer.gnome.org/NetworkManager/stable/… y en la página de
manual de
19

OpenVPN tiene un mecanismo incorporado para detectar automáticamente enlaces muertos y reconectarse. En Network Manager, vaya a "Editar conexiones", seleccione su conexión VPN y elija "Editar". En la pestaña "VPN", haga clic en "Avanzado ..." y vaya a la pestaña "General". Ahí tienes dos opciones relevantes:

"Especificar intervalo de ping" le dice a OpenVPN con qué frecuencia verificar si el enlace sigue vivo. "Especificar salida o reiniciar ping" le dice cuánto tiempo esperar hasta que tome medidas y qué medidas tomar.

Ejemplo: Mi configuración es "30 / ping-restart / 300". Esto significa que OpenVPN verifica cada 30 segundos si el enlace aún está activo. Si el enlace está inactivo durante 300 segundos, inicia un reinicio.

De esta manera no hay necesidad de scripts externos ...

OttoEisen
fuente
1
Esta debería ser la respuesta aceptada.
necbot
55
Esto no es cierto para Ubuntu 18.04 al menos. Tengo un intervalo de ping y un reinicio de ping, pero se deshabilitará de todos modos.
Nombre para mostrar el
@SargeBorsch: la respuesta de m0NKey bR4in parece funcionar (configurada vpn.persistenten yes).
kontextify
1

Después de un poco de búsqueda, encontré esta respuesta , la probé (en Ubuntu GNOME 15.04) y hasta ahora parece funcionar.

Lo único que puedo agregar es que una vez que se crea el archivo de script, no necesariamente debe guardarse en su carpeta / home. Puede guardarlo en cualquier lugar, hacerlo ejecutable y agregarlo a la lista de programas de inicio.

Patrik
fuente
0

Después de afirmar que era un SMOP (Simple Matter of Programming), escribí un script bash que monitorea "Link Down" y luego ejecuta un script de usuario. Menos uso de CPU, más receptivo que el while true....sleep 30método. Mira mi respuesta aquí . Se trata de "rotar las conexiones WiFi", pero probablemente también funcione para usted

Waltinator
fuente
0

este script funcionará en 16.04 donde nmcli con statusya no funciona:

#!/bin/bash
CON="purple"
STATUS=`nmcli con show --active | grep purple | cut -f1 -d " "`
if [ -z "$STATUS" ]; then
    nmcli con up $CON
fi
Jorge
fuente
Un poco mas corto STATUS="$(nmcli con show -f name | grep purple)". O simplemente puede verificar si la conexión real está activa haciendonmcli con show --active id 'purple'
smac89
0

Creo que la respuesta completa basada en otras respuestas es la siguiente:

#!/bin/bash +x
  while [ "true" ]
   do
        CON="Your-VPN-Name"
        STATUS=`nmcli con show --active | grep $CON | cut -f1 -d " "`
        if [ -z "$STATUS" ]; then
                echo "Disconnected, trying to reconnect..."
                (sleep 1s && nmcli con up $CON)
        else
                echo "Already connected !"
        fi
        sleep 30
   done
Ali Mohebbi
fuente