OpenVPN startet nicht, und die Fehlermeldung zeigt auf eine Zeile, die in Ordnung aussieht: Unrecognized option or missing or extra parameter(s) in office.ovpn:42: ca. Das Zertifikat hat sich nicht geändert, die Datei lässt sich in einem Editor öffnen, und am Pfad wirkt nichts falsch. Der Parser beanstandet nicht den Namen der Option; er beanstandet, wie viele Argumente mit ihr angekommen sind. Vier Prüfungen klären fast jeden dieser Fälle, und sie lohnen sich in der Reihenfolge der Kosten.

Warum der Parser die Option beschuldigt

Jede Konfigurationszeile wird an Leerzeichen und an Anführungszeichen getrennt, bevor eine Option sie überhaupt sieht. Ein Wert mit einem Leerzeichen kommt deshalb als mehrere Argumente an, wenn er nicht eingefasst ist, und die Option, der die Zeile gehörte, meldet die Abweichung. Unter Windows macht das Standardinstallationsverzeichnis das gewiss, weil C:\Program Files von der Anlage her mitten im Pfad liegt. Das Zertifikat wird bei diesem Fehler nie geöffnet, daher beweist die Prüfung, ob die Datei existiert, nichts Nützliches.

Die gemeldete Zeilennummer stimmt meistens, und die gemeldete Option ist die, welche die Zeile verbraucht hat. Wenn die genannte Option eine ist, die Sie sicher nie geschrieben haben, lesen Sie die Zeile darüber, denn ein verlorenes Anführungszeichen in einem früheren Block verschiebt die Auswertung. So kommt am Ende ein Zertifikatsblock in den Verdacht, die Argumentanzahl verursacht zu haben.

ca C:\Program Files\OpenVPN\config\office-ca.crt

Setzen Sie jeden Pfad mit Leerzeichen in Anführungszeichen

Ein Paar doppelte Anführungszeichen um den Wert ist die ganze Reparatur, und unter Windows werden Schrägstriche akzeptiert, sodass Escaping nie Teil des Problems wird. Korrigieren Sie jede Pfadoption im selben Durchgang, denn der Parser hält beim ersten Fehler an, und der nächste wartet nur auf den nächsten Neustart. Der Satz umfasst meist ca, cert, key, tls-auth und auth-user-pass.

ca "C:/Program Files/OpenVPN/config/office-ca.crt"
cert "C:/Program Files/OpenVPN/config/office.crt"
key "C:/Program Files/OpenVPN/config/office.key"

Eine Suche nach dem Verzeichnisnamen findet jedes Vorkommen schneller, als die Datei zu lesen. Führen Sie sie vor jeder Bearbeitung aus, damit die Liste vollständig ist:

Select-String -Path .\office.ovpn -Pattern 'Program Files'

Das Profil in einen Pfad ohne Leerzeichen zu verschieben ist eine gültige Alternative, und sie ist nur gültig, wenn jeder Pfad mitwandert. Ein halb migriertes Profil erzeugt denselben Fehler mit einem anderen Dateinamen, was schwerer zu erkennen ist, weil die Meldung jetzt auf einen Pfad zeigt, den Sie gerade angelegt haben. Wählen Sie einen Ansatz und führen Sie ihn zu Ende.

Holen Sie die Modusdeklaration vor den Zertifikaten zurück

Die zweite häufige Ursache erzeugt eine andere Meldung mit demselben verlorenen Nachmittag. Ein Client-Profil muss seinen Modus nahe dem Anfang deklarieren, und diese Deklaration geht leicht verloren, wenn nur die Zertifikatsblöcke in eine neue Datei eingefügt werden. Ohne sie liest OpenVPN die Datei mit einem anderen Satz von Vorgaben, und der Schaden zeigt sich viel später als Konflikt zwischen Optionen oder als gescheiterte Anmeldung. Die fehlende Zeile ist billig zu prüfen und teuer zu vergessen.

client
dev tun
proto udp
remote vpn.example.net 1194

Halten Sie eine Direktive pro Zeile ein, solange Sie dort sind. Zusammengefügte Zeilen erzeugen genau den Argumentanzahl-Fehler aus dem ersten Abschnitt, und die gemeldete Zeile wirkt vernünftig, weil die Zusammenfügung dort geschah, wo der Editor den Text umbrach. Lesen Sie die rohe Zeile, nicht die dargestellte.

Kodierungsschaden sieht aus wie ein Optionsname

Eine als UTF-16 gespeicherte Datei samt Byte-Order-Mark verbirgt ihre erste Option vor dem Parser, und verirrte Bytes können sich in der Meldung an den Optionsnamen hängen. Speichern Sie die Datei als UTF-8 ohne Byte-Order-Mark, öffnen Sie sie dann erneut und bestätigen Sie, dass das erste Zeichen ein normaler Buchstabe ist. Editoren, PowerShell-Umleitung und aus einem Chatfenster eingefügter Text ändern die Kodierung, ohne zu fragen.

Format-Hex .\office.ovpn | Select-Object -First 1

Ein Byte-Order-Mark erscheint als führende Markierungsbytes vor jedem Text, und diese Zeichen von Hand zu löschen ist ein verlorener Zug, weil der Editor sie beim nächsten Speichern zurückschreibt. Speichern Sie die Datei stattdessen mit einer ausdrücklichen Kodierung erneut. Zeilenenden sind nachsichtiger, aber eine Datei ohne Zeilenumbruch am Ende kann nach einer Bearbeitung die letzte Direktive dennoch mit der vorherigen verschmelzen.

Welche Prüfung zuerst, und warum

Beginnen Sie mit der Kodierung, denn sie kostet einen Befehl und entwertet jede andere Lesart der Datei. Dann die Anführungszeichen, dann die Modusdeklaration und die übrigen Pflichtdirektiven, und erst danach die Zertifikate, Schlüssel und Zugangsdaten. In dieser Reihenfolge zu arbeiten hält jeden Schritt umkehrbar, denn ein Zertifikat, das getauscht wurde, um ein Anführungszeichenproblem zu beheben, hinterlässt eine funktionierende Installation mit einem neuen Fehler, der zwei Bearbeitungen vom Original entfernt ist. Die Reihenfolge zählt mehr als die einzelnen Prüfungen.

Bewahren Sie eine unberührte Kopie der Datei so auf, wie der Betreiber sie geliefert hat. Wenn eine spätere Bearbeitung sie zerstört, zeigt ein Vergleich mit dieser Kopie, ob sich ein Anführungszeichen, ein Zeilenumbruch oder ein Markierungsbyte verschoben hat, was schneller ist als den Fehler erneut zu lesen. Die Optionsreferenz für jede Direktive steht im OpenVPN-Handbuch für die installierte Version.

Ähnliche Artikel