Von OpenVPN gepushte Routen nicht installiert: Timing, Rechte oder Richtlinie
Eine gepushte Route kann in einem Timing-Rennen, fehlenden Rechten oder einer Client-Richtlinie verschwinden. Vergleichen Sie zuerst die Push-Liste des Servers mit der echten Tabelle.
Der Server sagt, er habe die Route gepusht, der Client sagt, er sei verbunden, und das Ziel ist weiterhin nicht erreichbar. Genau dieses Bild erzeugen drei Ursachen. Das Hinzufügen der Route lief, bevor das Gerät existierte, dem Client fehlten die Rechte zum Ändern der Tabelle, oder eine Richtlinie wies den Client an, gepushte Optionen zu ignorieren.
Von außen sehen sie identisch aus und erfordern unterschiedliche Korrekturen. Lesen Sie das Client-Log an der Stelle, an der die Entscheidung über die Route fällt.
Beweisen Sie, dass die Route fehlt, nicht nur dass sie defekt ist
Beginnen Sie mit dem Beweis, dass die Route fehlt und nicht defekt ist. Unter Linux listet ip route show dev tun0 auf, was der Client auf dem Tunnelgerät installiert hat. Unter Windows zeigt route print oder Get-NetRoute dasselbe in Tabellenform.
Eine Route, die existiert, aber keinen Datenverkehr weiterleitet, ist ein anderes Problem. Das verlagert die Untersuchung auf Weiterleitungs- und Firewall-Regeln, nicht auf die Installation der Route.
Timing: Das Hinzufügen lief, bevor das Gerät existierte
Der Client wertet das PUSH_REPLY des Servers aus, nachdem der Kontrollkanal steht und nachdem er die Schnittstelle konfiguriert hat. Erst dann berührt er die Routing-Tabelle, und zwar mit dem Mechanismus, den die Plattform bereitstellt. Linux geht über netlink; Windows nutzt eine API, die ein erhöhtes Token benötigt. Ein Skript oder ein Client, der Routen hinzufügt, sobald er die Konfiguration liest, kann laufen, bevor das TUN/TAP-Gerät existiert, und der Kernel lehnt das Hinzufügen ab.
Dasselbe Rennen erklärt, warum eine von Hand getippte Route funktioniert, die automatische aber nicht: Wenn Sie sie tippen, ist die Schnittstelle bereits oben.
route-delay gibt es genau für diesen Fall, und route-up benennt ein Skript, das läuft, nachdem Schnittstelle und Routen konfiguriert sind. Routen, die von der Tunneladresse abhängen, gehören in diesen Hook und nicht in eine frühe Phase.
Rechte: Wer darf die Tabelle ändern
Das Ändern der Windows-Routing-Tabelle erfordert ein erhöhtes Token. Eine GUI, die ein Standardbenutzer gestartet hat, kann die Adapteradresse über den Dienst setzen und trotzdem keine Route hinzufügen. Das Log zeigt dann einen Fehler im Stil „Zugriff verweigert“ statt eines fehlenden Push.
Die GUI als Administrator zu starten oder den dienstbasierten Client zu verwenden, ändert dieses Ergebnis. Eine geplante Aufgabe, die den Client ohne das erforderliche Token startet, nicht.
Prüfen Sie unter welchem Konto der Client tatsächlich läuft, bevor Sie etwas ändern. Version und Dienstmodus entscheiden, welche Ursachen überhaupt möglich sind, also notieren Sie beides neben der Routenausgabe.
Richtlinie: Gepushte Routen können absichtlich verworfen werden
route-nopull bringt den Client dazu, vom Server gepushte Routen zu ignorieren, einschließlich einer gepushten Standardroute, während die Tunneladresse weiterhin akzeptiert wird. Gepushte DNS- und DHCP-Optionen werden von derselben Direktive verworfen. Ein solcher Client ist nicht fehlerhaft; er erwartet ausdrückliche Routenzeilen in seiner eigenen Konfiguration.
route-noexec ist eine andere Kontrolle: Es hindert den Client vollständig daran, Routenänderungen auszuführen. Eine Topologie, die der Client nicht abbilden kann, kann ein ähnliches Ergebnis erzeugen, wobei die Route als abgelehnt statt hinzugefügt protokolliert wird. Lesen Sie die Logzeile, die die Entscheidung meldet, statt zu raten, welche der drei Ursachen zutrifft. Prüfen Sie dann das effektive Profil, denn ein Importer oder ein Verwaltungswerkzeug kann Optionen hinzufügen, die der Benutzer nie bearbeitet hat.
Ein Profil, das in einem Texteditor sauber aussieht, kann zur Laufzeit dennoch eine hinzugefügte Direktive tragen.
Vergleichen Sie die Push-Liste mit der Tabelle
Setzen Sie nach dem Verbinden die Push-Liste des Servers neben die Tabelle des Clients. Unter Linux ist das ip route show dev tun0; unter Windows route print oder Get-NetRoute. Fehlt die Route, korrigieren Sie zuerst die Installation. Ist sie vorhanden und scheitert der Verkehr, gehen Sie zu Weiterleitungs- und Firewall-Richtlinie über.
Notieren Sie die Client-Version, das Konto, unter dem er läuft, und ob er dienstbasiert ist. Diese drei Fakten sagen der nächsten Person, welche Ursachen ausgeschlossen wurden.