Das Profil wird heruntergeladen, importiert und bleibt dann in Zeile 12 der Datei mit einer Unrecognized option-Meldung stehen, die keysize nennt. Am Konto hat sich nichts geändert, und der Server akzeptiert weiterhin andere Clients. Geändert hat sich der Client selbst: Ubuntu 24.04 installiert OpenVPN 2.6, während der Export für 2.4 geschrieben wurde. Die Reparatur ist eine kurze Reihe von Löschungen, und die Reihenfolge zählt, weil jede veraltete Option das Parsen abbricht, bevor die nächste überhaupt gelesen wird.

Lesen Sie die Fehlerzeile, bevor Sie die Datei anfassen

OpenVPN nennt die Datei und die Zeile, in der das Parsen stoppte, also beheben Sie pro Lauf nur ein Problem. Starten Sie das Profil aus einem Terminal statt aus einem Desktop-Applet, weil das Applet stderr meist verschluckt und die Zeilennummer der einzige verlässliche Hinweis ist, den Sie bekommen: sudo openvpn --config /etc/openvpn/client/provider.ovpn. Beheben Sie diese Zeile, starten Sie erneut, und erwarten Sie, dass der nächste Fehler eine andere Option nennt.

Ein Parse-Fehler erscheint immer vor jedem TLS-Handshake, eine Meldung, die ein Zertifikat erwähnt, hat die Syntaxphase also bereits hinter sich. Diese Unterscheidung hält Sie davon ab, eine Datei zu bearbeiten, die nur an der Authentifizierung scheitert. Lesen Sie das erste Wort der Meldung statt ihre Mitte.

Drei Fehlerklassen, drei verschiedene Reparaturen

Alte Exporte scheitern auf drei unterscheidbare Weisen, und gerade das Zusammenwerfen zu einem Problem führt dazu, dass Leute Pakete neu installieren, die nie kaputt waren. Die Formulierung der Meldung sagt Ihnen, in welcher Klasse Sie sind, bevor Sie die Datei öffnen.

  • Parse-Fehler nennen eine Datei und eine Zeile und stoppen, bevor überhaupt Verkehr entsteht.
  • Aushandlungsfehler verbinden sich und melden dann, dass sich beide Enden nicht auf eine gemeinsame Verschlüsselung oder einen akzeptablen Datenkanal einigen konnten.
  • Authentifizierungsfehler kommen am weitesten und nennen ein Zertifikat, einen Benutzer oder eine abgelehnte Anmeldeinformation.

Eine Profiländerung behebt nur die erste Klasse. Aushandlung braucht eine Entscheidung an beiden Enden des Tunnels, und eine abgelehnte Anmeldeinformation ist überhaupt kein Syntaxproblem. Wenn Ihre Meldung eine gemeinsame Verschlüsselung oder einen Datenkanal erwähnt, ändern die Löschungen unten nichts.

Löschen Sie die Optionen, die 2.6 entfernt hat, in dieser Reihenfolge

Jede dieser Zeilen stoppt das Parsen für sich, deshalb meldet der Client sie einzeln. Arbeiten Sie die Liste ab und starten Sie nach jeder Löschung neu.

Löschen Sie zuerst keysize, denn es hat kein modernes Gegenstück und sein Vorhandensein markiert meist eine Verschlüsselung, die der aktuelle Client ohnehin ablehnt. Löschen Sie dann ncp-disable, das die Verschlüsselungsaushandlung steuerte, in 2.5 veraltet ist und in 2.6 fehlt. Ersetzen Sie ns-cert-type server durch remote-cert-tls server, was dieselbe Absicht über eine unterstützte Prüfung ausdrückt. Die Änderungshistorie 2.6 führt die übrigen Entfernungen neben ihren Ersatzoptionen auf, sodass alles, was der Parser weiterhin ablehnt, eine dokumentierte Antwort hat.

Bewahren Sie vor der ersten Änderung eine Kopie des ursprünglichen Profils auf. Anbieter erzeugen Exporte neu, und ein Diff gegen die unberührte Datei ist der schnellste Weg, Ihre Änderungen von ihren zu trennen. Wenn eine Löschung den Client starten lässt, der Tunnel aber weiter scheitert, sind Sie in die Aushandlungsklasse gewechselt und die restlichen Zeilen sind nicht die Ursache. Setzen Sie die Clientversion in den Dateinamen, damit die nächste Person weiß, auf welche Version sich die Änderungen beziehen.

Halten Sie BF-CBC nur als begrenzten Rückfall am Laufen

Manche Anbieter beenden die Verbindung noch auf BF-CBC, auf das sich OpenVPN 2.6 ohne Hilfe nicht einlässt, weil die Verschlüsselung einen 64-Bit-Block hat. Die enge Reparatur ist eine Rückfallliste plus der alte OpenSSL-Anbieter, kein Herabstufen des ganzen Clients.

providers legacy default
data-ciphers AES-256-GCM:AES-128-GCM
data-ciphers-fallback BF-CBC

Die erste Zeile lädt den alten Anbieter, damit OpenSSL diese Verschlüsselung noch erzeugen kann, die zweite behält moderne Aushandlung für Peers, die sie unterstützen, und die dritte gilt nur, wenn der Server nichts Besseres anbietet. Das ist eine bewusste Schwächung des Tunnels, notieren Sie also neben der Datei, warum es sie gibt. Bitten Sie den Anbieter gleichzeitig um einen neu erzeugten Export, denn der Rückfall ist eine Brücke und kein Ziel.

Greifen Sie nicht zu --compat-mode als pauschaler Antwort. Es ändert mehrere Verhaltensweisen auf einmal, darunter die Vorgaben für Aushandlung und Neuaushandlung, sodass Sie nie erfahren, welche Änderung zählte. Bevorzugen Sie die drei ausdrücklichen Zeilen oben, weil jede ihre eigene Wirkung angibt.

Prüfen Sie mit dem Profil, das der Client tatsächlich lädt

Importierte Verbindungen werden oft in ein Systemverzeichnis kopiert, daher kann das Bearbeiten der Datei im Downloadordner gar nichts ändern. Finden Sie die Kopie, die läuft: sudo grep -rl "remote " /etc/NetworkManager/system-connections /etc/openvpn. Starten Sie dann den Tunnel und lesen Sie die Logzeile, die meldet, welche Verschlüsselung für den Datenkanal tatsächlich gewählt wurde. Eine Verbindung, die den Handshake über den Rückfall abschließt, sagt Ihnen, dass der Server nie etwas Modernes angeboten hat.

Testen Sie aus einem Netzwerk, das nicht das erwartete des Anbieters ist, damit ein Captive Portal oder ein gefiltertes Gästenetz nicht als Profilfehler erscheint. Notieren Sie die Clientversion zusammen mit jeder Supportanfrage.

Sobald der Tunnel steht, senden Sie eine Anfrage, die ihn durchqueren muss, und eine, die es nicht darf, und bestätigen Sie dann, dass sich die Antwort des Resolvers wie erwartet geändert hat. Wenn das Profil jetzt parst, die Verbindung aber weiter scheitert, haben Sie das Syntaxproblem hinter sich gelassen, und der Fehlertext nennt die neue Klasse. Halten Sie die bearbeitete Datei in der Versionskontrolle, neben einer Notiz, die die angestrebte OpenVPN-Version nennt.

Ähnliche Artikel