Automatische Wiederverbindung mit VPN beim Trennen der Verbindung?


12

Ich bin ein Ubuntu GNOME-Benutzer und habe mich gefragt, ob es eine Möglichkeit gibt, beim Trennen der Verbindung automatisch wieder eine Verbindung zu einem VPN herzustellen . Ich verwende das OpenVPN- Protokoll.

Ich habe Network Manager gründlich überprüft, konnte jedoch keine solche Option finden, nur um eine Verbindung zum VPN herzustellen, wenn eine Verbindung zu einem bestimmten WLAN besteht.

Antworten:


18

Ab 18.10 (frühere Versionen können nicht eingecheckt werden) haben VPN-Verbindungen in NetworkManager eine Einstellung, vpn.persistentdie genau das tut: Bei Verbindungsverlust wird erneut eine Verbindung zu einem VPN hergestellt, bis Sie die Verbindung manuell trennen. Es ist "no"standardmäßig eingestellt und wird leider weder in den Gnome-Netzwerkeinstellungen noch im nm-Verbindungseditor angezeigt.

Sie können dies jedoch über eine CLI wie folgt einstellen:

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

Die Verbindung muss natürlich bestehen, bevor Sie das tun


2
dies ist das, was ich wollte. Vielen Dank
Wyatt8740

Warum wird diese Einstellung nicht angezeigt, da sie verfügbar ist? Und wo / wie hast du es herausgefunden? Es gibt keine Erwähnung davon unter developer.gnome.org/NetworkManager/stable/nmcli.html, aber da das Ausführen des Befehls erfolgreich zu sein scheint, denke ich, dass es funktioniert ...
Al F

@alf Ich glaube, ich habe diese Einstellung nur durch Stöbern in nmcli im Terminal gefunden, aber sie ist auch unter developer.gnome.org/NetworkManager/stable/… und in der
Manpage zu

17

OpenVPN verfügt über einen integrierten Mechanismus, um tote Links automatisch zu erkennen und die Verbindung wiederherzustellen. Gehen Sie im Netzwerk-Manager zu "Verbindungen bearbeiten", wählen Sie Ihre VPN-Verbindung aus und wählen Sie "Bearbeiten". Klicken Sie auf der Registerkarte "VPN" auf "Erweitert ..." und wechseln Sie zur Registerkarte "Allgemein". Dort haben Sie zwei relevante Möglichkeiten:

"Ping-Intervall angeben" teilt OpenVPN mit, wie oft überprüft werden soll, ob die Verbindung noch besteht. "Ping angeben oder Ping neu starten" gibt an, wie lange gewartet werden soll, bis eine Aktion ausgeführt wird, und welche Aktion ausgeführt werden soll.

Beispiel: Meine Einstellung ist "30 / ping-restart / 300". Dies bedeutet, dass OpenVPN alle 30 Sekunden überprüft, ob die Verbindung noch aktiv ist. Wenn die Verbindung 300 Sekunden lang unterbrochen ist, wird ein Neustart eingeleitet.

Auf diese Weise sind keine externen Skripte erforderlich ...


1
Dies sollte die akzeptierte Antwort sein.
Necbot

5
Dies gilt zumindest nicht für Ubuntu 18.04. Ich habe Ping-Intervall und Ping-Neustart, aber es wird sich trotzdem selbst deaktivieren.
Anzeigename

@SargeBorsch: Die Antwort von m0NKey bR4in scheint zu funktionieren (Einstellung vpn.persistentauf yes).
kontextify

1

Nach einigem Graben fand ich diese Antwort , testete sie (unter Ubuntu GNOME 15.04) und bis jetzt scheint sie zu funktionieren.

Das einzige, was ich hinzufügen könnte, ist, dass die Skriptdatei nach dem Erstellen nicht unbedingt in Ihrem Ordner / home gespeichert werden muss. Sie können es überall speichern, ausführbar machen und zur Liste der Startprogramme hinzufügen.


0

Nachdem ich behauptet hatte, es sei ein SMOP (Simple Matter of Programming), schrieb ich ein Bash-Skript, das auf "Link Down" überwacht und dann ein Benutzerskript ausführt. Weniger CPU-Auslastung, reaktionsschneller als die while true....sleep 30Methode. Siehe meine Antwort hier . Es geht um "rotierende WiFi-Verbindungen", wird aber wahrscheinlich auch für Sie funktionieren


0

Dieses Skript funktioniert am 16.04, wo es nmcli con statusnicht mehr funktioniert:

#!/bin/bash
CON="purple"
STATUS=`nmcli con show --active | grep purple | cut -f1 -d " "`
if [ -z "$STATUS" ]; then
    nmcli con up $CON
fi

Etwas kürzer STATUS="$(nmcli con show -f name | grep purple)". Oder Sie können einfach überprüfen, ob die tatsächliche Verbindung aktiv ist, indem Sienmcli con show --active id 'purple'
smac89

0

Ich denke, die vollständige Antwort basierend auf anderen Antworten lautet wie folgt:

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