VPN Autoconnect

39

J'utilise Ubuntu 13.04 avec Gnome et j'ai récemment créé un VPN (ouvert). Est-il possible de l'activer par défaut? Chaque fois que je démarre ou que ma connexion est perdue, je dois activer le VPN manuellement. Y a-t-il une option qui me manque?

Paul Woitaschek
la source

Réponses:

66

Grâce à l'applet nm de Network Manager (l'applet de plateau réseau GNOME ou Unity installé par défaut), vous pouvez configurer NetworkManager pour qu'il se connecte automatiquement à un VPN lorsqu'un réseau est connecté.

  1. Cliquez sur l'applet de la barre d'état réseau et cliquez sur "Modifier les connexions ..." ou exécutez nm-connection-editor.
  2. Sélectionnez une connexion réseau et cliquez sur "Modifier ..."
  3. Cochez la case "Se connecter automatiquement au VPN lors de l'utilisation de cette connexion" et sélectionnez le VPN souhaité dans la liste déroulante.
  4. Sauver.

capture d'écran nm-connection-editor


Lorsque cette option est activée, NetworkManager contient un bogue qui peut annuler la fonction "Se connecter automatiquement à ce réseau". ( Edit : ce bug a maintenant été marqué comme "correctif publié" dans Ubuntu 16.04). Si NetworkManager essaie de se connecter automatiquement et échoue, vous verrez une ligne comme celle-ci dans /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.

Il semble que NetworkManager ne puisse pas obtenir le mot de passe VPN de l'utilisateur gnome-keyring-daemon. Une solution consiste à laisser NetworkManager stocker le mot de passe en texte clair dans le fichier de configuration /etc/NetworkManager/system-connections/. Pour faire ça:

  1. Ouvrez un terminal.
  2. sudoedit /etc/NetworkManager/system-connections/<VPN>, où <VPN>est le fichier de configuration de votre VPN (le nom du fichier est généralement le nom que vous avez attribué à votre VPN).
  3. Changer la ligne password-flags=1enpassword-flags=0
  4. Sauvegarder et quitter.

NetworkManager va maintenant stocker le mot de passe VPN lui-même (voir man nm-settingspour plus de détails), et la connexion automatique au réseau fonctionnera à nouveau.

Vincent Yu
la source
5
Cela n'existe pas dans le gestionnaire de réseau gnome.
Paul Woitaschek
4
Lors de l'ouverture, nm-connection-editorvous pouvez trouver ceci lors de l'édition d'une connexion dans l' onglet général .
Lode
1
Cela empêche la connexion elle-même de se connecter automatiquement. Y a-t-il une solution à cela?
Tamás Barta
@Barta C'est un bogue dans NetworkManager. J'ai ajouté une solution de contournement à ma réponse.
Vincent Yu
8

Jetez un coup d'oeil à vpnautoconnect.

vpnautoconnect est un démon qui vous permet de reconnecter automatiquement (au démarrage également) un vpn créé avec le gestionnaire de réseau. Il peut se reconnecter très rapidement et surveiller la bande passante. Il fonctionne avec les connexions pptp et openvpn.

Pour plus d'informations et pour télécharger, visitez le site Web .

Essayez ceci aussi:

utiliser la fonction AUTOSTART dans /etc/default/openvpn

Ou

Déterminez l'UUID de votre connexion VPN.

nmcli con list | grep -i vpn

L'UUID est la deuxième colonne avec les lettres, les chiffres et les tirets.

Commencez la connexion dans un terminal. Appuyez simplement sur Ctrl+ Alt+ Tsur votre clavier pour ouvrir Terminal. Lorsqu'il s'ouvre, exécutez les commandes ci-dessous:

nmcli con up uuid <put you UUID here>

Configurez-le pour qu'il soit exécuté au démarrage.

Allez dans Dash, tapez et choisissez Applications de démarrage, cliquez sur Ajouter et ajoutez la commande nmcli ci-dessus (avec l'UUID). Cliquez sur "Ajouter". Dans le nom, tapez le nom que vous souhaitez utiliser, puis dans Command, placez la ligne entière nmcli au-dessus. Cliquez sur "Ajouter" à nouveau. Maintenant, redémarrez et essayez-le.

Source: SourceForge

Mitch
la source
Je l'ai installé et configuré, j'ai redémarré mon ordinateur mais cela ne fonctionne pas.
Paul Woitaschek
J'ai ajouté quelques informations supplémentaires dans ma réponse.
Mitch
Y a-t-il de la documentation disponible pour vpnautoconnect? Leur site Web est une page de projet SourceForge abandonnée et le package ne fournit pas de pages de manuel. Dur, cela semble prometteur.
Tamás Barta
Je n'arrive pas à en trouver, mais je vais continuer à chercher.
Mitch
La liste des actions a été renommée pour apparaître dans 15.04 ou 15.10
Croll
2

Je recommanderais de vérifier le script dans cet article :

#!/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

Pour connaître la valeur de YourVPNUUIDpour $ VPNNAME, exécutez simplement ce qui suit:

nmcli con list | grep -i vpn
rhoover
la source
2

vpnautoconnect n'a pas fonctionné pour moi dans 12.04 LTS, et je ne semble pas être le seul.

Je l'ai un peu étudié et j'ai combiné du code existant pour créer mon premier script bash. Il vérifie si une connexion VPN donnée est active et se connectera sinon. S'il est connecté, il dormira pendant un temps donné, par exemple 1 minute, et répétera le processus indéfiniment.

#! /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

Instructions:

  1. Créez un fichier texte vierge nommé par exemple vpn-auto-connector.sh (je l'ai enregistré dans mon dossier personnel. Cliquez sur le fichier avec le bouton droit de la souris et choisissez Propriétés-> Autorisations et cochez la case "Autoriser l'exécution du fichier en tant que programme". (Vous devrez peut-être stocker le fichier ailleurs et / ou modifiez les autorisations de lecture / écriture / exécution si votre ordinateur a plusieurs utilisateurs.)

  2. Copiez le code ci-dessus dans le fichier que vous avez créé. Remplacez les valeurs des trois variables suivantes:

    connection = "Auto Ethernet"

    vpn_connection = "Ma connexion VPN"

    run_interval = "60"

    Ils peuvent être trouvés en ouvrant le gestionnaire de réseau. Dans mon cas, connection = "Auto Ethernet" est ma connexion câblée active (je n'ai pas encore testé avec le sans fil) et vpn_connection = "Ma connexion VPN" est le nom de ma connexion VPN. run_interval = "60" est l'intervalle de temps en secondes permettant de répéter le script.

  3. Ouvrez Applications-> Outils système-> Préférences-> Applications de démarrage. Ajoutez un nom approprié, par exemple "VPN Auto Connector", puis choisissez le fichier .sh que vous avez enregistré précédemment. Maintenant, le script bash sera exécuté au démarrage et continuera de vérifier si la connexion VPN est active. Vous pouvez l'essayer en déconnectant la connexion VPN. Elle devrait être réactivée automatiquement.

PinkMistGenerator
la source
Grand merci. Ce script est facile à comprendre.
Evan Hu
0

Vpnautoconnect fonctionne correctement dans Ubuntu 12.04, 13.04 et 13.10 (je pense que dans le 13.10, l'option "se connecter automatiquement" dans Network-Manager a été corrigée et fonctionne maintenant)

Donc, si vous avez des problèmes pour l'installer ou le faire fonctionner, ou que vous ne trouvez pas l'option "openvpn" dans le menu déroulant de Network-Manager pour créer une connexion vpn ouverte, vous pouvez suivre ce tuto, qui vous donne les étapes, très claires et faciles à appliquer.

Regardez ICI

Et laisse moi savoir :-)

Pouchette
la source
0

Voici un script très robuste et fiable qui:

  • Vérifiez si vous êtes connecté à un VPN
  • Sinon, connectez-vous au dernier réseau VPN actif

Ceci est particulièrement utile si vous vous connectez régulièrement à différents VPN puisqu'il n'est pas nécessaire de spécifier une seule connexion VPN à laquelle vous reconnecter.

#!/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
Client
la source
C'est vraiment intéressant, mais cela génère plusieurs erreurs sur: $ nmcli -version outil nmcli, version 0.9.10.0 $ lsb_release -a Aucun module LSB n'est disponible. Identifiant du distributeur: Ubuntu Description: Ubuntu 15.04 Sortie: 15.04 Code: vivid
gare
0

Je suis sur Ubuntu 14.04 LTS sur plusieurs machines. En raison de certaines conditions préalables particulières:

  1. Je ne veux pas enregistrer le mot de passe dans le gestionnaire de mots de passe
  2. J'utilise un invité VirtualBox qui perd un VPN lors d'une reconnexion réseau
  3. La boîte de dialogue de mot de passe s'ouvre plusieurs fois lors de la reconnexion
  4. J'utilise un serveur VPN de secours (basculement)
  5. Utiliser un fichier de configuration pour mes uuids

Je travaille avec ce script très éprouvé et très fiable:

Il y a cependant quelques réserves avec l'applet du gestionnaire de réseau que je pourrais résoudre temporairement (voir la section Dépannage de l'article).

vpnautoconnect ne fonctionne pas pour moi.

apos
la source
0

répondre par @vincentYo a l'air franc, mais je ne pouvais pas le faire, alors j'ai fait comme ci-dessous.

step1: créer un script shell et ajouter une commande vpn

vim auto_vpn.sh

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

step2: ouvrez un fichier sudoer et dites au noyau de ne pas demander le mot de passe pour ce fichier.

sudo vim / etc / sudoers

la plupart des choses à l'intérieur de ce fichier seront commentées, ajoutez simplement comme ci-dessous

nom d'utilisateur ALL = (root) NOPASSWD: your_shell_script.sh

Exemple:

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

étape 3: configurez un travail cron, qui déclenchera ce script shell; en dessous, le travail cron sera exécuté toutes les minutes (bcz mon internet reste allumé et éteint, donc chaque minute)

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

Je l'utilise depuis plusieurs jours et fonctionne très bien à Ubuntu 16.04 LTS ..Chears !!

Sharath BJ
la source