Die richtige OpenVPN-Verbindung beenden: Vordergrund, systemd oder NM
Der Befehl, der einen Tunnel trennt, hängt davon ab, wer ihn gestartet hat. Vergleichen Sie Vordergrund, systemd, NetworkManager und OpenVPN 3 als Eigentümer, bevor Sie ein Signal senden.
Ein Terminalfenster zu schließen ist nicht dasselbe wie einen Tunnel zu schließen, und einen Prozess zu töten ist nicht dasselbe wie einen Dienst zu stoppen. Unter Linux hängt der Befehl, der die Verbindung tatsächlich trennt, davon ab, welche Komponente die Verbindung gestartet hat und damit ihren Lebenszyklus besitzt. Der folgende Vergleich deckt die vier Anordnungen ab, auf die Sie am ehesten treffen, und die Kennung, die jede davon braucht.
Vordergrund- und daemonisierte Clients
Ein Client, der von Hand in einem Terminal gestartet wurde, gehört zu diesem Terminal. Ctrl+C liefert einen Interrupt, der Client baut seine Schnittstelle ab, und der Tunnel endet. Sonst muss niemand benachrichtigt werden.
Ein Client, der über einen Shell-Wrapper gestartet und im Hintergrund gelassen wurde, gehört zu niemandem Bestimmten, und genau dann greifen Leute zu killall. Suchen Sie zuerst den Prozess, bestätigen Sie, dass seine Befehlszeile das gemeinte Profil nennt, und senden Sie dann das normale Beendigungssignal. Ein überwachter Prozess, der unter seinem Supervisor getötet wird, wird einfach neu gestartet, deshalb ist die Identifizierung des Eigentümers wichtiger als die Wahl eines Signals. Senden Sie nur dann ein Signal an die Prozessgruppe, wenn Sie bestätigt haben, dass kein anderer Tunnel sie teilt.
SIGUSR1 ist keine Trennung; es bittet den Client, den Tunnel neu zu starten.
systemd-Instanzen
Wenn eine Unit die Verbindung besitzt, ist die Unit das Objekt, das gestoppt werden muss. Vorlageninstanzen wie openvpn-client@office tragen den Profilnamen, und das Stoppen des Vorlagenziels statt der Instanz kann jeden Client auf dem Host betreffen.
systemctl list-units 'openvpn-client@*'
systemctl stop [email protected]
Lesen Sie die ExecStart der Unit, wenn Sie unsicher sind, welches Profil die Instanz geladen hat.
Eine aktivierte Unit kommt beim nächsten Start zurück, was eine separate Entscheidung vom Stoppen jetzt ist. Deaktivieren Sie sie erst, nachdem Sie entschieden haben, dass die Verbindung nicht zurückkehren soll, und halten Sie diese Entscheidung dort fest, wo der nächste Administrator sie findet.
NetworkManager-Profile
Ein von NetworkManager verwaltetes Profil ist kein Prozess, dem Sie ein Signal senden können. Der Manager besitzt den Lebenszyklus, und das Objekt, auf das zu reagieren ist, ist die aktive Verbindung, identifiziert durch UUID und nicht durch Anzeigenamen. Das Lesen der aktiven Liste zeigt zuerst auch, ob ein zweiter Tunnel unter einem Namen läuft, den Sie nicht erwartet haben.
nmcli connection show --active
nmcli connection down uuid actual-uuid
Anzeigenamen wiederholen sich, und der Dateiname eines Profils ist nicht seine Kennung, also kopieren Sie die UUID aus der Auflistung. Kommt die Verbindung sofort zurück, aktiviert sie etwas: ein secondaries-Eintrag an einer Basisverbindung, ein Dispatcher-Skript oder ein Autoconnect-Flag. Die Verbindung des Managers zu stoppen ist der richtige erste Schritt, und die Reaktivierung ist die nächste Frage. Löschen Sie das Profil nicht, um die Reaktivierung zu stoppen, denn das entfernt auch die Anmeldedaten, die Sie morgen brauchen könnten.
Die Befehlsreferenz des Managers dokumentiert, wie ein Down-Ziel ausgewählt wird.
OpenVPN 3-Sitzungen
OpenVPN 3 Linux verwendet ein Sitzungsmodell statt eines Prozesses pro Tunnel. Sie prüfen die Sitzungen, die der Dienst kennt, und handeln dann an einem Sitzungspfad. Der Pfad ist die Kennung, und er ist nicht mit einem Konfigurationsnamen austauschbar.
openvpn3 sessions-list
openvpn3 session-manage --path /net/openvpn/v3/sessions/... --disconnect
Jede Sitzung zu trennen ist eine andere Aktion und sollte bewusst erfolgen.
Derselbe Host kann Sitzungen mehrerer Benutzer halten, also listen Sie vor dem Handeln auf und bestätigen Sie den Eigentümer der Sitzung, die Sie gleich beenden.
Was danach zu prüfen ist
Prüfen Sie nach jedem dieser Stopps drei Dinge: Die Liste der aktiven Verbindungen enthält den Tunnel nicht mehr, die Schnittstelle ist verschwunden, und eine Routensuche für eine interne Adresse wählt kein Tunnelgerät mehr. Dann entscheiden Sie, was beim nächsten Start passiert.
ip -brief address
ip route get 10.8.0.1
Eine Schnittstelle von Hand zu entfernen stoppt den Eigentümer nicht, und es lässt die Bereinigung halb erledigt.
Jetzt zu trennen, den nächsten automatischen Start zu verhindern und danach Nicht-VPN-Verkehr zuzulassen sind drei getrennte Entscheidungen. Treffen Sie jede ausdrücklich.