Sie verbinden sich, die Tunnelschnittstelle erscheint, und ein benötigtes Präfix fehlt schlicht in der Tabelle. Der nächste Schritt ist meist die Suche nach einem Skript, das es hinzufügt. Diese Suche führt zu Antworten, die einen OpenVPN-Helfer in ein Profil kleben, und die Hälfte dieser Antworten macht die Lage schlechter statt besser, weil eine fehlende Route drei mögliche Eigentümer hat und nur einer davon ein fehlendes Skript ist.

Entscheiden Sie, welcher Eigentümer zuständig ist, bevor Sie etwas schreiben.

Drei Eigentümer, ein fehlendes Präfix

Das Präfix kann fehlen, weil es niemand geliefert hat, weil das Profil es abgelehnt hat oder weil es an einer Stelle installiert wurde, an der Sie nicht nachsehen. Das sind verschiedene Fehler mit verschiedenen Behebungen.

Der erste ist am leichtesten zu prüfen: Hat der Server oder das Plugin die Route je angeboten? Ein Backend, das das Präfix nie erhalten hat, kann es nicht installieren, und ein Hilfsskript kann keine Erreichbarkeit erfinden, die der Peer nie beschrieben hat. Der zweite ist die Profilrichtlinie, die Routen unterdrücken kann, die die Verbindung sonst nehmen würde. Der dritte ist eine Tabelle oder Regel, die die Route an einer Stelle halten kann, die die Standardabfrage nie konsultiert.

Ein vierter Eigentümer sind Sie, später: ein Skript, das die Route beim Verbinden hinzufügt, sie beim Trennen aber nicht entfernt. Das erzeugt ein Präfix, das den Tunnel überlebt, auf eine tote Schnittstelle zeigt und den Nächsten verwirrt, der die Maschine debuggt.

Lesen Sie das Profil, bevor Sie etwas hinzufügen

Beginnen Sie mit den eigenen Eigenschaften der gespeicherten Verbindung. Lesen Sie sie, ohne Geheimnisse auszugeben, und verwenden Sie die UUID, wenn der Profilname mehrdeutig ist.

nmcli -f vpn.service-type,ipv4.never-default,ipv4.ignore-auto-routes,ipv4.route-table,ipv4.routes connection show office

vpn.service-type sagt Ihnen, welches Backend die Verbindung besitzt, und das ist wichtig, weil Plugin-Daten backendspezifisch sind. Ein Schlüssel, den ein Plugin akzeptiert, ist für ein anderes keine unterstützte Anweisung, also ist ein aus der Dokumentation eines anderen Clients kopiertes Snippet kein Beweis für irgendetwas.

ipv4.ignore-auto-routes und ipv4.never-default beantworten unterschiedliche Fragen. Das erste kann Routen ablehnen, die die Verbindung sonst automatisch nehmen würde, und das zweite steuert, ob das Profil die Standardroute werden darf. Ein Profil, das automatische Routen ignoriert und sich auf nichts anderes verlässt, verbindet sich sauber und installiert fast nichts.

ip -4 rule show
ip -4 route show table all

Diese beiden Befehle klären die dritte Möglichkeit. Suchen Sie Ihr Präfix in jeder Tabelle, nicht nur in main, und prüfen Sie, ob eine Richtlinienregel die betreffende Abfrage woandershin schickt. Steht das Präfix in einer anderen Tabelle und konsultiert sie niemand, haben Sie keine fehlende Route; Sie haben eine Abfrage, die sie nie erreicht.

Was ein Skript nicht beheben kann

Ein Hilfsskript hinzuzufügen gibt vpn.data von NetworkManager ein Programm zum Ausführen. Das ist ein echter Mechanismus, und er ist für die meisten dieser Fälle der falsche, weil das Skript die Kontrolle erhält, nachdem die Profilrichtlinie bereits entschieden hat, was akzeptiert wird.

OpenVPNs script-security ist die andere wiederkehrende Verwechslung. Es ist eine OpenVPN-Einstellung, die regelt, welche Skripte der Client ausführen darf und was er in deren Umgebung ablegen darf; Stufe 3 erlaubt das Durchreichen von Anmeldedaten über die Umgebung, was eine Entscheidung zum Umgang mit Geheimnissen und keine Routing-Korrektur ist. Es in ein Profil zu kleben, dessen Backend nicht OpenVPN ist, oder es zu erhöhen, wenn kein Skript es braucht, fügt Angriffsfläche hinzu, ohne eine Route hinzuzufügen.

Dann ist da der Neustart-Reflex. Ein Neustart des NetworkManager-Dienstes reißt jede verwaltete Verbindung ab und baut sie neu auf, auch die, über die Sie verbunden sind, wenn Sie remote arbeiten. Das ist eine disruptive Aktion, keine harmlose Diagnose, und auf einem Server kann es der Unterschied zwischen einer Sitzung sein, die überlebt, und einer, die es nicht tut.

Die Entscheidung, der Reihe nach

Stellen Sie drei Fragen nacheinander. Hat der Peer das Präfix geliefert, was das Log des Backends oder seine eigene Statusausgabe zeigt? Wenn ja, ist das Profil so konfiguriert, dass es Routen akzeptiert und installiert, oder unterdrückt es sie? Wenn die Route irgendwo existiert, ist der Abfragepfad für den Verkehr, den Sie testen, korrekt?

Erst wenn die erste Antwort ja ist, die zweite ja ist und die dritte stimmt, wird ein ergänzendes Skript vertretbar, und selbst dann sollten Sie fragen, ob das Backend die Route nativ unterstützt. Die VPN-Einstellungsreferenz dokumentiert service-type und das plugin-spezifische Datenwörterbuch, und dort sollte man anfangen, bevor man annimmt, ein Schlüssel existiere.

Nach einer genehmigten Korrektur verbinden Sie sich erneut und testen das Ziel erst über die Adresse und dann über den Namen, trennen Sie dann die Verbindung und verbinden Sie sich erneut, um zu bestätigen, dass der Zustand wiederholbar ist. Ein Eigentümer, eine Tabelle und eine Route, die mit dem Tunnel verschwindet, ist das Ergebnis, das es wert ist.

Ähnliche Artikel