Im Falle des Kunden denke ich? Welche Software verwenden Sie? OpenVPN oder ein Wrapper (zB NetworkManager)?
Lekensteyn
@Lekensteyn, Wrapper network-manger-openvpn.
Oxwivi
Antworten:
62
network-manager-openvpnStellt diese Funktionalität nicht zur Verfügung, müssen Sie diese openvpndirekt nutzen .
Übergeben Sie --script-security 2 --up /path/to/your/scriptes beim Anschließen. Wenn Sie eine Konfigurationsdatei unter verwenden /etc/openvpn/, hängen Sie die nächsten Zeilen an Ihre Konfigurationsdatei an:
script-security 2# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh
--script-Sicherheitsstufe [Methode]
Diese Direktive bietet Kontrolle auf Richtlinienebene über die Nutzung von OpenVPN
von externen Programmen und Skripten. Niedrigere Werte sind mehr
restriktiv, höhere Werte sind eher tolerant. Einstellungen für
Niveau:
0 - Streng kein Aufruf externer Programme.
1 - (Standard) Ruft nur integrierte ausführbare Dateien wie ifconfig,
ip, route oder netsh.
2 - Aufrufen von integrierten und benutzerdefinierten ausführbaren Dateien zulassen
Skripte.
3 - Zulassen, dass Passwörter über die Umgebung an Skripte übergeben werden
Variablen (möglicherweise unsicher).
--up cmd
Shell-Befehl, der ausgeführt wird, nachdem das TUN / TAP-Gerät erfolgreich geöffnet wurde (Pre
--UID-Änderung des Benutzers). Das up-Skript ist nützlich zum Angeben
Routing-Befehle, die IP-Verkehr für private Zwecke weiterleiten
Subnetze, die am anderen Ende der VPN-Verbindung in existieren
Der Tunnel.
Skript-Ausführungsreihenfolge
--up Wird ausgeführt, nachdem das TCP / UDP-Socket gebunden und TUN / TAP geöffnet wurde.
--down Wird ausgeführt, nachdem TCP / UDP und TUN / TAP geschlossen wurden.
Es gibt weitere Ereignisse für die Skriptausführung, die auf der Manpage zu finden sind .
Erstellen /etc/openvpn/up.shund erteilen Sie ihm Ausführungsberechtigungen (z. B. 755 oder 700). Beispielinhalt zum Hinzufügen einer IPv6-Adresse und einer IPv6-Route (zu Bildungszwecken angezeigt, nicht direkt kopieren):
#!/bin/sh# add an IPv6 address to device $dev (environment variable)
ip -6 addr add 2001:db8::1:2/112 dev $dev
# and the IPv6 route for this net using gateway 2001:db8::1
ip -6 route add 2001:db8::1:0/112 via 2001:db8::1 dev $dev
Beachten Sie, dass dieses upSkript als root ausgeführt wird. Wenn Sie keine Userund Group-Einstellung angegeben haben, führt OpenVPN auch Skripte wie downroot aus.
Wenn Sie nicht wissen, wie Sie openvpn direkt verwenden können, geben Sie Ihre aktuellen Konfigurationsdetails an: Verbindungstyp (z. B. X509-Zertifikate), Gateway-Port, LZO-Komprimierung, TCP-Force, Verwendung von Tap-Device, Chiffre, HMAC und TLS. Erwähnen Sie auch Ihre IP-Einstellungen, wenn diese nicht automatisch sind. Lassen Sie für Ihre Privatsphäre Ihre tatsächlichen Adressen weg.
Lekensteyn
Okay, gut, ich habe mich entschieden, OpenVPN direkt zu verwenden (und ja, ich habe die .conf-Datei), aber wird die Verbindung automatisch wiederhergestellt, wenn die Verbindung unterbrochen wird? Und wie stelle ich eine automatische Verbindung her, wenn eine Internetverbindung besteht? Und schließlich habe ich nicht verstanden, wo ich die Zeilen hinzufügen muss, die Sie in der Antwort erwähnt haben.
Oxwivi
Ich habe die Antwort erweitert, um sie openvpndirekt zu verwenden . Beim Einrichten eines Servers ist mir aufgefallen, dass OpenVPN versucht, die Verbindung wiederherzustellen, wenn der Server ausfällt. Nicht sicher, ob OpenVPN weiterhin versucht, wenn Ihre Netzwerkschnittstelle ausfällt.
Lekensteyn
Mein Problem ist nicht, wenn die Netzwerkschnittstelle ausfällt - es wird versucht, die Verbindung wiederherzustellen, wenn die Internetverbindung unterbrochen und wieder hergestellt wird. Ich möchte nur eine Verbindung zum VPN herstellen, wenn ich eine Internetverbindung erhalte.
Oxwivi
Oh, und gilt das Skript für alle VPN-Verbindungen? Und bitte markieren Sie @Oxwivi, wenn Sie antworten, ich werde sonst nicht benachrichtigt.
Oxwivi
5
Auf die Frage: "Wie kann ich OpenVPN ein Skript zuordnen, damit es ausgeführt wird, wenn die VPN-Verbindung erfolgreich hergestellt wurde?" Ich möchte darauf hinweisen, dass Lekensteyn eine hervorragende Antwort geliefert hat . Zu dem Zeitpunkt, als seine Antwort verfasst wurde, fehlte es jedoch an Klarheit darüber, wie openvpn-Befehlszeilenargumente bereitgestellt werden sollten, um openvpn auf einem Ubuntu-Computer zu starten, insbesondere, damit es nach einem Neustart genauso funktioniert.
Openvpn-Befehlszeilenargumente unter Ubuntu:
Natürlich kann man openvpn von einer Kommandozeile aus mit allen verfügbaren legalen Optionen starten. Wenn man aber auf einem Ubuntu-Rechner openvpn nach einem Neustart mit denselben Befehlszeilenargumenten starten möchte, sollte man in Betracht ziehen, die Datei zu bearbeiten /etc/default/openvpn. Untersuchen Sie folgende Zeilen:
# Optional arguments to openvpn's command line
OPTARGS=""
--script-Sicherheitsstufe
Diese Direktive bietet eine Kontrolle auf Richtlinienebene über die Verwendung von external durch OpenVPN
Programme und Skripte. Niedrigere Werte sind restriktiver und höher
Werte sind freizügiger. Einstellungen für Level:
0 - Streng kein Aufruf externer Programme.
1 - (Standard) Ruft nur integrierte ausführbare Dateien wie ifconfig, ip, route,
oder netsh.
2 - Aufrufen von integrierten ausführbaren Dateien und benutzerdefinierten Skripten zulassen.
3 - Zulassen, dass Kennwörter über Umgebungsvariablen an Skripts übergeben werden
(möglicherweise unsicher).
OpenVPN-Releases vor v2.3 unterstützten auch ein Methodenflag, das angibt, wie
OpenVPN sollte externe Befehle und Skripte aufrufen. Dies kann entweder ausgeführt werden
oder System. Ab OpenVPN v2.3 wird dieses Flag nicht mehr akzeptiert. In den meisten * nix
Umgebungen, in denen der Ansatz execve () ohne Probleme verwendet wurde.
Einige Anweisungen wie --up ermöglichen die Übergabe von Optionen an das externe Skript.
Stellen Sie in diesen Fällen sicher, dass der Skriptname keine Leerzeichen oder das Zeichen enthält
Der Konfigurationsparser wird ersticken, da nicht festgestellt werden kann, wo sich das Skript befindet
Der Name endet und die Skriptoptionen beginnen.
Kombiniert mit einem abgekürzten Abschnitt auf --up
--up cmd
Führen Sie den Befehl cmd aus, nachdem das TUN / TAP-Gerät erfolgreich geöffnet wurde (UID-Änderung vor dem Benutzer).
cmd besteht aus einem Pfad zum Skript (oder ausführbaren Programm), dem optional gefolgt wird
durch Argumente. Der Pfad und die Argumente können in einfache oder doppelte Anführungszeichen gesetzt werden und / oder
Escapezeichen mit einem Backslash und sollte durch ein oder mehrere Leerzeichen getrennt werden.
Beispiel:
Auf meinem Computer mit einer openpvn-server.conf habe ich die folgenden Zeilen in meiner /etc/default/openvpnDatei:
Im Übrigen richtet die Datei nat.sh die Netzwerkadressübersetzung ein, um den privaten Netzwerkverkehr von OpenVPN-Clients an das öffentliche Internet weiterzuleiten. Das ist gut, wenn man einem öffentlichen WIFI-Zugangspunkt nicht vertraut.
Abgesehen davon, dass ein Neustart nach einem Neustart wie erwartet zulässig ist /etc/openvpn/[client or server].confund die /etc/default/openvpnDateien ordnungsgemäß konfiguriert wurden, kann openvpn mit den folgenden Schritten gestartet oder gestoppt werden:
sudo service openvpn start
sudo service openvpn stop
Weitere nützliche Optionen für service openvpninclude cond-restart,force-reload,reload, restart,soft-restart, start, status, stop.
Da dies ein ziemlich alter Thread ist, bin ich mir nicht sicher, ob er noch von Interesse ist. Wenn Sie den NetworkManager weiterhin zum Herstellen einer Verbindung mit einem VPN verwenden möchten, können Sie eine einfache udev-Regel wie die folgende hinzufügen:
Ich bin auf die Antwort bei meinen Nachforschungen gestoßen, um dieses Problem zu lösen, und habe herausgefunden, dass die beste Lösung (unter Verwendung von OpenVPN-Server) wie folgt ist:
Erstellen Sie ein Skript, das ausgeführt werden soll:
Fügen Sie der openvpn-Konfiguration (normalerweise /etc/openvpn/server.conf) die folgenden Zeilen hinzu . In der obigen Antwort wurde "up" und "down" verwendet, die beim Starten des Servers verwendet werden (Neustart). Die Direktive client-connect (und client-disconnect) wird verwendet, wenn der Client eine Verbindung herstellt (trennt).
network-manger-openvpn
.Antworten:
network-manager-openvpn
Stellt diese Funktionalität nicht zur Verfügung, müssen Sie dieseopenvpn
direkt nutzen .Übergeben Sie
--script-security 2 --up /path/to/your/script
es beim Anschließen. Wenn Sie eine Konfigurationsdatei unter verwenden/etc/openvpn/
, hängen Sie die nächsten Zeilen an Ihre Konfigurationsdatei an:Aus der OpenVPN-Manpage :
Es gibt weitere Ereignisse für die Skriptausführung, die auf der Manpage zu finden sind .
Erstellen
/etc/openvpn/up.sh
und erteilen Sie ihm Ausführungsberechtigungen (z. B. 755 oder 700). Beispielinhalt zum Hinzufügen einer IPv6-Adresse und einer IPv6-Route (zu Bildungszwecken angezeigt, nicht direkt kopieren):Beachten Sie, dass dieses
up
Skript als root ausgeführt wird. Wenn Sie keineUser
undGroup
-Einstellung angegeben haben, führt OpenVPN auch Skripte wiedown
root aus.quelle
openvpn
direkt zu verwenden . Beim Einrichten eines Servers ist mir aufgefallen, dass OpenVPN versucht, die Verbindung wiederherzustellen, wenn der Server ausfällt. Nicht sicher, ob OpenVPN weiterhin versucht, wenn Ihre Netzwerkschnittstelle ausfällt.Auf die Frage: "Wie kann ich OpenVPN ein Skript zuordnen, damit es ausgeführt wird, wenn die VPN-Verbindung erfolgreich hergestellt wurde?" Ich möchte darauf hinweisen, dass Lekensteyn eine hervorragende Antwort geliefert hat . Zu dem Zeitpunkt, als seine Antwort verfasst wurde, fehlte es jedoch an Klarheit darüber, wie openvpn-Befehlszeilenargumente bereitgestellt werden sollten, um openvpn auf einem Ubuntu-Computer zu starten, insbesondere, damit es nach einem Neustart genauso funktioniert.
Openvpn-Befehlszeilenargumente unter Ubuntu:
Natürlich kann man openvpn von einer Kommandozeile aus mit allen verfügbaren legalen Optionen starten. Wenn man aber auf einem Ubuntu-Rechner openvpn nach einem Neustart mit denselben Befehlszeilenargumenten starten möchte, sollte man in Betracht ziehen, die Datei zu bearbeiten
/etc/default/openvpn
. Untersuchen Sie folgende Zeilen:Von der Community OpenVPN Manpage auf
--script-security
Kombiniert mit einem abgekürzten Abschnitt auf
--up
Beispiel:
Auf meinem Computer mit einer openpvn-server.conf habe ich die folgenden Zeilen in meiner
/etc/default/openvpn
Datei:Im Übrigen richtet die Datei nat.sh die Netzwerkadressübersetzung ein, um den privaten Netzwerkverkehr von OpenVPN-Clients an das öffentliche Internet weiterzuleiten. Das ist gut, wenn man einem öffentlichen WIFI-Zugangspunkt nicht vertraut.
Abgesehen davon, dass ein Neustart nach einem Neustart wie erwartet zulässig ist
/etc/openvpn/[client or server].conf
und die/etc/default/openvpn
Dateien ordnungsgemäß konfiguriert wurden, kann openvpn mit den folgenden Schritten gestartet oder gestoppt werden:Weitere nützliche Optionen für
service openvpn
includecond-restart,force-reload,reload, restart,soft-restart, start, status, stop
.quelle
Da dies ein ziemlich alter Thread ist, bin ich mir nicht sicher, ob er noch von Interesse ist. Wenn Sie den NetworkManager weiterhin zum Herstellen einer Verbindung mit einem VPN verwenden möchten, können Sie eine einfache udev-Regel wie die folgende hinzufügen:
KERNEL=="vpn0", RUN+="/PATH_TO_THE_SCRIPT/SCRIPT_NAME"
Dies sollte jedes Skript ausführen, nachdem das VPN erstellt wurde.
quelle
Ich bin auf die Antwort bei meinen Nachforschungen gestoßen, um dieses Problem zu lösen, und habe herausgefunden, dass die beste Lösung (unter Verwendung von OpenVPN-Server) wie folgt ist:
Erstellen Sie ein Skript, das ausgeführt werden soll:
Fügen Sie der openvpn-Konfiguration (normalerweise
/etc/openvpn/server.conf
) die folgenden Zeilen hinzu . In der obigen Antwort wurde "up" und "down" verwendet, die beim Starten des Servers verwendet werden (Neustart). Die Direktive client-connect (und client-disconnect) wird verwendet, wenn der Client eine Verbindung herstellt (trennt).quelle