VPN Autoconnect


39

Ich benutze Ubuntu 13.04 mit Gnome und habe kürzlich ein (offenes) VPN eingerichtet. Gibt es eine Möglichkeit, es standardmäßig zu aktivieren? Jedes Mal, wenn ich boote oder sogar meine Verbindung verliere, muss ich das VPN manuell aktivieren. Gibt es eine Option, die mir fehlt?

Antworten:


66

Über das nm-Applet der Network Manager-Anzeige (das standardmäßig installierte GNOME- oder Unity-Network Tray-Applet) können Sie NetworkManager so konfigurieren, dass bei einer Netzwerkverbindung automatisch eine Verbindung zu einem VPN hergestellt wird.

  1. Klicken Sie auf das Network Tray-Applet und klicken Sie auf "Verbindungen bearbeiten ...", oder führen Sie es aus nm-connection-editor.
  2. Wählen Sie eine Netzwerkverbindung und klicken Sie auf "Bearbeiten ..."
  3. Aktivieren Sie "Automatisch mit VPN verbinden, wenn Sie diese Verbindung verwenden" und wählen Sie das gewünschte VPN in der Dropdown-Liste aus.
  4. Sparen.

nm-connection-editor Screenshot


Wenn dies aktiviert ist, gibt es einen Fehler in NetworkManager , der die Funktion "Automatisch mit diesem Netzwerk verbinden" unterbrechen kann. ( Edit : Dieser Fehler wurde in Ubuntu 16.04 als "Update veröffentlicht" markiert.) Wenn NetworkManager versucht, automatisch eine Verbindung herzustellen, und dies fehlschlägt, sehen Sie eine Zeile wie die folgende in /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.

Es scheint, dass NetworkManager das VPN-Kennwort des Benutzers nicht abrufen kann gnome-keyring-daemon. Eine Problemumgehung besteht darin, NetworkManager das Kennwort im Klartext in der Konfigurationsdatei in speichern zu lassen /etc/NetworkManager/system-connections/. Um dies zu tun:

  1. Öffnen Sie ein Terminal.
  2. sudoedit /etc/NetworkManager/system-connections/<VPN>, wo <VPN>ist die Konfigurationsdatei für Ihr VPN (der Dateiname ist normalerweise der Name, den Sie Ihrem VPN zugewiesen haben).
  3. Ändern Sie die Zeile password-flags=1inpassword-flags=0
  4. Speichern und schließen.

NetworkManager speichert nun das VPN-Passwort selbst (siehe man nm-settingsDetails) und die automatische Netzwerkverbindung funktioniert wieder.


5
Das gibt es in gnome network manager nicht.
Paul Woitaschek

4
Beim Öffnen nm-connection-editorfinden Sie dies beim Bearbeiten einer Verbindung in der Registerkarte Allgemein .
Lode

1
Dadurch wird die Verbindung selbst für mich nicht automatisch hergestellt. Gibt es eine Lösung dafür?
Tamás Barta

@Barta Das ist ein Fehler in NetworkManager. Ich habe meiner Antwort eine Problemumgehung hinzugefügt.
Vincent Yu

8

Schauen Sie sich vpnautoconnect an.

vpnautoconnect ist ein Daemon, mit dem Sie automatisch (auch beim Start) eine neue Verbindung zu einem mit dem Netzwerkmanager erstellten VPN herstellen können. Es kann sehr schnell eine neue Verbindung herstellen und die Bandbreite überwachen. Es funktioniert mit pptp- und openvpn-Verbindungen.

Für weitere Informationen und zum Download besuchen Sie die Website .

Versuchen Sie dies auch:

Verwenden Sie die AUTOSTART-Funktion in /etc/default/openvpn

Oder

Ermitteln Sie die UUID Ihrer VPN-Verbindung.

nmcli con list | grep -i vpn

Die UUID ist die zweite Spalte mit den Buchstaben, Zahlen und Bindestrichen.

Starten Sie die Verbindung in einem Terminal. Drücken Sie einfach Ctrl+ Alt+ Tauf Ihrer Tastatur, um das Terminal zu öffnen. Führen Sie beim Öffnen die folgenden Befehle aus:

nmcli con up uuid <put you UUID here>

Stellen Sie dies so ein, dass es beim Start ausgeführt wird.

Gehen Sie zu Dash, geben Sie Startup Applications ein, wählen Sie Add aus, und fügen Sie den obigen Befehl nmcli (mit der UUID) hinzu. Klicken Sie auf "Hinzufügen". Geben Sie in den Namen den Namen ein, den Sie verwenden möchten, und setzen Sie in Command die gesamte Zeile nmcli darüber. Klicken Sie erneut auf "Hinzufügen". Starten Sie jetzt neu und versuchen Sie es.

Quelle: SourceForge


Ich habe es installiert und konfiguriert, meinen Computer neu gestartet, aber es funktioniert nicht.
Paul Woitaschek

Ich habe meiner Antwort weitere Informationen hinzugefügt.
Mitch

Gibt es Unterlagen für vpnautoconnect? Ihre Website ist eine verlassene SourceForge-Projektseite, und das Paket enthält keine Manpages. Tough es klingt vielversprechend.
Tamás Barta

Ich kann anscheinend keine finden, aber ich werde weiter suchen.
Mitch

Aktionsliste wurde umbenannt Show in 15.04 oder 15.10
Croll

2

Ich würde empfehlen, das Skript in diesem Artikel zu lesen :

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

Um den Wert von YourVPNUUIDfür $ VPNNAME herauszufinden, führen Sie einfach Folgendes aus:

nmcli con list | grep -i vpn

2

vpnautoconnect hat in 12.04 LTS für mich nicht funktioniert, und ich scheine nicht der einzige zu sein.

Ich habe ein bisschen recherchiert und vorhandenen Code kombiniert, um mein erstes Bash-Skript zu erstellen. Es prüft, ob eine bestimmte VPN-Verbindung aktiv ist, und stellt eine Verbindung her, wenn dies nicht der Fall ist. Wenn es angeschlossen ist, wird es für eine bestimmte Zeit, z. B. 1 Minute, schlafen und den Vorgang auf unbestimmte Zeit wiederholen.

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

Anleitung:

  1. Erstellen Sie eine leere Textdatei mit dem Namen vpn-auto-connector.sh (Ich habe sie in meinem Home-Ordner gespeichert. Klicken Sie mit der rechten Maustaste auf Datei und wählen Sie Eigenschaften-> Berechtigungen und aktivieren Sie "Datei als Programm ausführen lassen". (Möglicherweise müssen Sie die Datei speichern an einer anderen Stelle und / oder ändern Sie die Lese- / Schreib- / Vorleseberechtigungen auch, wenn Ihr Computer mehrere Benutzer hat.)

  2. Kopieren Sie den obigen Code in die von Ihnen erstellte Datei. Ersetzen Sie die Werte der folgenden drei Variablen:

    connection = "Auto Ethernet"

    vpn_connection = "Meine VPN-Verbindung"

    run_interval = "60"

    Sie können durch Öffnen des Netzwerkmanagers gefunden werden. In meinem Fall ist connection = "Auto Ethernet" meine aktive kabelgebundene Verbindung (nicht mit WLAN getestet) und vpn_connection = "My VPN connection" ist der Name meiner VPN-Verbindung. run_interval = "60" ist das Zeitintervall in Sekunden, in dem das Skript wiederholt werden soll.

  3. Öffnen Sie Anwendungen-> Systemprogramme-> Einstellungen-> Startanwendungen. Fügen Sie einen geeigneten Namen hinzu, z. B. "VPN Auto Connector", und wählen Sie für den Befehl die zuvor gespeicherte .sh-Datei aus. Jetzt wird das Bash-Skript beim Start ausgeführt und überprüft, ob die VPN-Verbindung aktiv ist. Sie können es versuchen, indem Sie die VPN-Verbindung trennen, und es sollte automatisch wieder aktiviert werden.


Vielen Dank. Dieses Skript ist leicht zu verstehen.
Evan Hu

0

Vpnautoconnect funktioniert einwandfrei in Ubuntu 12.04, 13.04 und 13.10 (Ich denke, dass in 13.10 die Option "Automatisch verbinden" im Network-Manager behoben wurde und jetzt funktioniert)

Wenn Sie Probleme haben, es zu installieren oder zum Laufen zu bringen, oder die Option "openvpn" im Dropdown-Menü von Network-Manager nicht finden, um eine offene VPN-Verbindung herzustellen, können Sie diesem Tuto folgen, das Ihnen alles gibt die schritte, sehr klar und einfach anzuwenden.

Schauen Sie sich HIER um

Und lass mich wissen :-)


0

Hier ist ein sehr robustes und zuverlässiges Skript, das Folgendes ermöglicht:

  • Überprüfen Sie, ob Sie mit einem VPN verbunden sind
  • Wenn nicht, stellen Sie eine Verbindung zum zuletzt aktiven VPN her

Dies ist besonders nützlich, wenn Sie routinemäßig eine Verbindung zu verschiedenen VPNs herstellen, da Sie keine einzige VPN-Verbindung angeben müssen, zu der eine erneute Verbindung hergestellt werden soll.

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

Das ist wirklich interessant, wirft aber einige Fehler auf: $ nmcli -version nmcli tool, version 0.9.10.0 $ lsb_release -a Es sind keine LSB-Module verfügbar. Distributor ID: Ubuntu Beschreibung: Ubuntu 15.04 Veröffentlichung: 15.04 Codename: vivid
gare

0

Ich bin auf Ubuntu 14.04 LTS auf mehreren Rechnern. Aufgrund der Tatsache, dass ich einige besondere Voraussetzungen habe:

  1. Ich möchte das Passwort nicht im Passwort-Manager speichern
  2. Ich verwende einen VirtualBox-Gast, der bei erneuter Netzwerkverbindung das VPN verliert
  3. Der Kennwortdialog wird beim erneuten Herstellen der Verbindung mehrmals geöffnet
  4. Ich verwende einen Backup-VPN-Server (Failover)
  5. Verwenden einer Konfigurationsdatei für meine UUIDs

Ich arbeite mit diesem sehr bewährten und sehr zuverlässigen Skript:

Es gibt jedoch einige Probleme mit dem Netzwerkmanager-Applet, die ich vorübergehend lösen könnte (siehe Abschnitt Fehlerbehebung im Artikel).

vpnautoconnect funktioniert bei mir nicht.


0

answer by @vincentYo sieht einfach aus, aber ich habe es nicht geschafft, also habe ich es wie folgt gemacht.

Schritt 1: Erstellen Sie ein Shell-Skript und fügen Sie den Befehl vpn hinzu

vim auto_vpn.sh

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

Schritt 2: Öffnen Sie eine Sudoer-Datei und teilen Sie dem Kernel mit, kein Kennwort für diese Datei anzufordern.

sudo vim / etc / sudoers

Die meisten Dinge in dieser Datei werden kommentiert, fügen Sie einfach wie folgt hinzu

Benutzername ALL = (root) NOPASSWD: your_shell_script.sh

Beispiel:

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

Schritt 3: Richten Sie einen Cron-Job ein, der dieses Shell-Skript auslöst. Unten wird der Cron-Job jede Minute ausgeführt.

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

Ich benutze dies seit vielen Tagen, funktioniert gut in Ubuntu 16.04 LTS ..Chears !!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.