VPN Autoconnect

39

Estoy usando Ubuntu 13.04 con Gnome y recientemente configuré una VPN (abierta). ¿Hay alguna forma de habilitarlo por defecto? Cada vez que inicio o incluso pierdo mi conexión, tengo que habilitar la VPN manualmente. ¿Hay una opción que me falta?

Paul Woitaschek
fuente

Respuestas:

66

A través del indicador nm-applet de Network Manager (el applet de bandeja de red GNOME o Unity instalado de forma predeterminada), puede configurar NetworkManager para conectarse automáticamente a una VPN cuando se conecta una red.

  1. Haga clic en el applet de la bandeja de red y haga clic en "Editar conexiones ...", o ejecute nm-connection-editor.
  2. Seleccione una conexión de red y haga clic en "Editar ..."
  3. Marque "Conectarse automáticamente a VPN cuando use esta conexión" y seleccione la VPN deseada en la lista desplegable.
  4. Salvar.

captura de pantalla de nm-connection-editor


Cuando esto está habilitado, hay un error en NetworkManager que puede interrumpir la función "conectarse automáticamente a esta red". ( Editar : este error ahora se ha marcado como "corrección liberada" en Ubuntu 16.04). Si NetworkManager intenta conectarse automáticamente y falla, verá una línea como la siguiente en /var/log/syslog:

<error> [1401130450.367538] [nm-vpn-connection.c:1374] get_secrets_cb(): Failed to request VPN secrets #2: (6) No agents were available for this request.

Parece que NetworkManager no puede obtener la contraseña VPN del usuario gnome-keyring-daemon. Una solución alternativa es dejar que NetworkManager almacene la contraseña en texto sin formato en el archivo de configuración /etc/NetworkManager/system-connections/. Para hacer esto:

  1. Abre una terminal.
  2. sudoedit /etc/NetworkManager/system-connections/<VPN>, dónde <VPN>está el archivo de configuración para su VPN (el nombre de archivo suele ser el nombre que asignó a su VPN).
  3. Cambia la línea password-flags=1apassword-flags=0
  4. Guardar y Salir.

NetworkManager ahora almacenará la contraseña de VPN en sí (ver man nm-settingspara más detalles), y la conexión automática de red volverá a funcionar.

Vincent Yu
fuente
55
Eso no existe en gnome network manager.
Paul Woitaschek
44
Al abrir nm-connection-editor, puede encontrar esto al editar una conexión en la pestaña general .
Lode
1
Esto hace que la conexión en sí no se conecte automáticamente para mí. Hay alguna solución para esto?
Tamás Barta
@Barta Eso es un error en NetworkManager. He agregado una solución a mi respuesta.
Vincent Yu
8

Echa un vistazo a vpnautoconnect.

vpnautoconnect es un demonio que te permite volver a conectar automáticamente (también en el inicio) un vpn creado con el administrador de red. Puede reconectarse muy rápidamente y monitorear el ancho de banda. Funciona con conexión pptp y openvpn.

Para obtener más información y descargar, visite el sitio web .

Prueba esto también:

use la función AUTOSTART en /etc/default/openvpn

O

Calcule el UUID de su conexión VPN.

nmcli con list | grep -i vpn

El UUID es la segunda columna con las letras, números y guiones.

Inicie la conexión en una terminal. Simplemente presione Ctrl+ Alt+ Ten su teclado para abrir Terminal. Cuando se abra, ejecute los siguientes comandos:

nmcli con up uuid <put you UUID here>

Configure esto para que se ejecute al inicio.

Vaya a Dash, escriba y elija Aplicaciones de inicio, haga clic en Agregar y agregue el comando nmcli anterior (con el UUID). Haga clic en "Agregar". En el nombre, escriba el nombre que quiera usar, y en Command coloque la línea nmcli completa arriba. Haga clic en "Agregar" nuevamente. Ahora, reinicia y pruébalo.

Fuente: SourceForge

Mitch
fuente
Lo instalé y configuré, reinicié mi computadora pero no funciona.
Paul Woitaschek
He agregado más información en mi respuesta.
Mitch
¿Hay alguna documentación disponible para vpnautoconnect? Su sitio web es una página abandonada del proyecto SourceForge, y el paquete no proporciona páginas de manual. Difícil suena prometedor.
Tamás Barta
Parece que no puedo encontrar ninguno, pero seguiré buscando.
Mitch
La lista de acciones ha cambiado de nombre para mostrar en 15.04 o 15.10
Croll
2

Recomendaría revisar el script en este artículo :

#!/bin/bash

# YourVPN here is the name of desired vpn connection to monitor
# edit this line:
##################
VPNNAME=YourVPNUUID
# enter desired time between checks here (in seconds)
SLEEPTIME=15
##################

nice=0

for (( ; ; )); do

# creating infinite loop

tested=$(nmcli con status uuid $VPNNAME | grep -c UUID)
#possible results:
# 0 - no connection - need to start
# 1 - working connection, continue.

case $tested in
"0")
echo "Not connected - starting"

#increase nice counter
nice=$[nice+1]

#if "nice start" fails for 3 times
if [ $nice -ge 3 ];
then
#TRY to knock hard way, resetting the network-manager (sometimes it happens in my kubuntu 12.04).
      echo "HARD RESTART!"
      nmcli nm enable false
      nmcli nm enable true
      sleep 5
      nmcli con up uuid $VPNNAME
      nice=0
else
#not yet 3 falures - try starting normal way
      echo "trying to enable."
      nmcli con up uuid $VPNNAME
fi

;;

"1")
echo "VPN seems to work" 

;;
esac

sleep $SLEEPTIME

done

Para averiguar el valor de YourVPNUUID$ VPNNAME simplemente ejecute lo siguiente;

nmcli con list | grep -i vpn
rhoover
fuente
2

vpnautoconnect no funcionó para mí en 12.04 LTS, y no parece ser el único.

Lo investigué un poco y combiné un código existente para hacer mi primer script bash. Comprueba si una determinada conexión VPN está activa y se conectará si no. Si está conectado, dormirá durante un tiempo determinado, por ejemplo, 1 minuto, y repetirá el proceso indefinidamente.

#! /bin/bash

while true
do
   connection="Auto Ethernet"
   vpn_connection="My VPN connection"
   run_interval="60"

   active_connection=$(nmcli dev status | grep "${connection}")
   active_vpn=$(nmcli dev status | grep "${vpn_connection}")

   if [ "${active_connection}" -a ! "${active_vpn}" ];
   then
      nmcli con up id "${vpn_connection}"
   fi

   sleep $run_interval
done

Instrucciones:

  1. Cree un archivo de texto en blanco llamado, por ejemplo, vpn-auto-connector.sh (lo guardé en mi carpeta de inicio. Haga clic con el botón derecho en el archivo y elija Propiedades-> Permisos y marque "Permitir ejecutar archivo como programa". (Puede que tenga que almacenar el archivo en otro lugar y / o alterar los permisos de lectura / escritura / ejecución también si su computadora tiene múltiples usuarios).

  2. Copie el código de arriba al archivo que creó. Reemplace los valores de las siguientes tres variables:

    conexión = "Auto Ethernet"

    vpn_connection = "Mi conexión VPN"

    run_interval = "60"

    Se pueden encontrar abriendo el administrador de red. En mi caso, connection = "Auto Ethernet" es mi conexión por cable activa (no se ha probado con la conexión inalámbrica) y vpn_connection = "Mi conexión VPN" es el nombre de mi conexión VPN. run_interval = "60" es el intervalo de tiempo en segundos sobre cuándo repetir el script.

  3. Abra Aplicaciones-> Herramientas del sistema-> Preferencias-> Aplicaciones de inicio. Agregue un nombre adecuado, por ejemplo, "VPN Auto Connector", y para el comando elija el archivo .sh que guardó anteriormente. Ahora el script bash se ejecutará al inicio y seguirá comprobando si la conexión VPN está activa. Puede probarlo desconectando la conexión VPN y debería activarse automáticamente nuevamente.

PinkMistGenerator
fuente
Muchas gracias. Este script es fácil de entender.
Evan Hu
0

Vpnautoconnect funciona bien en Ubuntu 12.04, 13.04 y 13.10 (creo que en la 13.10 la opción "conectarse automáticamente" en Network-Manager se ha solucionado y funciona ahora)

Por lo tanto, si tiene problemas para instalarlo o hacer que funcione, o no encuentra la opción "openvpn" en el menú desplegable de Network-Manager para crear una conexión vpn abierta, puede seguir este tutorial, que le brinda Todos Los pasos, muy claros y fáciles de aplicar.

Echa un vistazo AQUÍ

Y déjame saber :-)

Bolsita
fuente
0

Aquí hay un script muy robusto y confiable que:

  • Comprueba si estás conectado a alguna VPN
  • Si no, conéctese a la VPN activa más reciente

Esto es especialmente útil si se conecta rutinariamente a diferentes VPN, ya que no tiene que especificar una sola conexión VPN para volver a conectarse.

#!/bin/bash

nmcli --mode multiline --fields uuid,vpn connection status | grep -qc "^VPN:.*yes" 1>/dev/null 2>&1

if [ $? -ne 0 ]; then
        last_vpn_uuid=`nmcli --mode tabular --fields uuid,type,timestamp connection list | grep -E "\s+vpn\s+" | sort -k3 -nr | head -n1 | awk '{ print $1 }'`

        nmcli connection up uuid "$last_vpn_uuid"
fi
Huésped
fuente
Esto es realmente interesante, pero arroja varios errores en: $ nmcli -version herramienta nmcli, versión 0.9.10.0 $ lsb_release -a No hay módulos LSB disponibles. ID de distribuidor: Ubuntu Descripción: Ubuntu 15.04 Lanzamiento: 15.04 Nombre en clave: vivid
gare
0

Estoy en Ubuntu 14.04 LTS en varias máquinas. Debido al hecho, que tengo algunos requisitos previos especiales:

  1. No quiero guardar la contraseña en el administrador de contraseñas
  2. Estoy usando un invitado VirtualBox que pierde VPN en la reconexión de red
  3. El diálogo de contraseña se abre varias veces al volver a conectar
  4. Estoy usando un servidor VPN de respaldo (failover)
  5. Usando un archivo de configuración para mis uuids

Estoy trabajando con este script muy probado y muy confiable:

Sin embargo, existen algunas advertencias con el applet de administrador de red que podría resolver temporalmente (consulte la sección Solución de problemas del artículo).

vpnautoconnect no funciona para mí.

apos
fuente
0

la respuesta de @vincentYo parece directa, pero no pude hacerlo, así que hice lo siguiente.

Paso 1: crea un script de shell y agrega el comando vpn

vim auto_vpn.sh

#!/bin/sh vpnc --enable-1des

Paso 2: abra un archivo sudoer y dígale al kernel que no solicite una contraseña para este archivo.

sudo vim / etc / sudoers

la mayoría de las cosas dentro de este archivo serán comentadas, solo agregue como a continuación

nombre de usuario ALL = (root) NOPASSWD: your_shell_script.sh

ejemplo:

sharath ALL = (root) NOPASSWD: /home/sharath/workspace/work/src/auto_vpn.sh

Paso 3: configure un trabajo cron, que activará este script de shell, debajo del trabajo cron se ejecutará cada minuto (porque mi internet se mantiene encendido y apagado, así que cada minuto)

* * * * * sudo /home/sharath/workspace/work/src/auto_vpn.sh

Estoy usando esto desde hace muchos días, trabajando bien en ubuntu 16.04 LTS ...

Sharath BJ
fuente