OpenVPN se nespustí a chybová zpráva ukazuje na řádek, který vypadá v pořádku: Unrecognized option or missing or extra parameter(s) in office.ovpn:42: ca. Certifikát se nezměnil, soubor se otevírá v editoru a na cestě nic nevypadá špatně. Parser nenamítá název volby; namítá, kolik argumentů s ní dorazilo. Čtyři kontroly vyřeší téměř každý takový případ a vyplatí se je provést v pořadí podle nákladů.

Proč parser obviňuje volbu

Každý řádek konfigurace se rozdělí na mezery a na uvozovky dřív, než ho některá volba uvidí. Hodnota, která obsahuje mezeru, proto dorazí jako několik argumentů, pokud není uzavřená v uvozovkách, a volba, které řádek patřil, ohlásí nesoulad. Ve Windows to jistí výchozí instalační adresář, protože C:\Program Files stojí už ze své konstrukce uprostřed cesty. V této chybě se certifikát nikdy neotevře, takže ověření, zda soubor existuje, nic užitečného nedokazuje.

Uvedené číslo řádku bývá správné a uvedená volba je ta, která řádek spotřebovala. Když je jmenovaná volba ta, kterou jste podle svého vědomí nikdy nenapsali, přečtěte řádek nad ní, protože ztracená uvozovka v dřívějším bloku posouvá parsing. Takhle nakonec blok s certifikátem dostane vinu za počet argumentů.

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

Uzavřete do uvozovek každou cestu s mezerou

Jeden pár dvojitých uvozovek kolem hodnoty je celá oprava a dopředná lomítka jsou ve Windows přijatelná, takže escapování se nikdy nestane součástí problému. Opravte všechny volby cest v jednom průchodu, protože parser se zastaví na první chybě a další už jen čeká na další restart. Sada obvykle zahrnuje ca, cert, key, tls-auth a 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"

Hledání podle názvu adresáře najde každý výskyt rychleji než čtení souboru. Spusťte ho před jakoukoli úpravou, aby byl seznam úplný:

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

Přesun profilu do cesty bez mezer je platná alternativa a platí jen tehdy, když se s ním přesune každá cesta. Napůl přesunutý profil reprodukuje stejnou chybu s jiným názvem souboru, což je těžší postřehnout, protože zpráva teď ukazuje na cestu, kterou jste právě vytvořili. Zvolte jeden přístup a dokončete ho.

Vraťte deklaraci režimu před certifikáty

Druhá častá příčina dává jinou zprávu se stejným ztraceným odpolednem. Profil klienta musí deklarovat svůj režim blízko začátku a tato deklarace se snadno ztratí, když se do nového souboru vloží jen bloky certifikátů. Bez ní OpenVPN čte soubor s jinou sadou výchozích hodnot a škoda se objeví mnohem později jako konflikt mezi volbami nebo selhání přihlášení. Chybějící řádek je levné zkontrolovat a drahé zapomenout.

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

Dokud jste tam, držte jednu direktivu na řádek. Spojené řádky dávají přesně chybu počtu argumentů z první části a uvedený řádek vypadá rozumně, protože spojení nastalo tam, kde editor zalomil text. Čtěte surový řádek, ne zobrazený.

Poškození kódování vypadá jako název volby

Soubor uložený jako UTF-16 včetně značky pořadí bajtů skrývá parseru svou první volbu a zatoulané bajty se mohou ve zprávě přilepit k názvu volby. Uložte soubor jako UTF-8 bez značky pořadí bajtů, pak ho znovu otevřete a ověřte, že první znak je běžné písmeno. Editory, přesměrování v PowerShellu i text vložený z okna chatu mění kódování bez ptaní.

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

Značka pořadí bajtů se objevuje jako úvodní bajty značky před jakýmkoli textem a mazat tyto znaky ručně je prohraný tah, protože je editor při dalším uložení zapíše zpět. Místo toho soubor znovu uložte s výslovným kódováním. Konce řádků jsou shovívavější, ale soubor bez nového řádku na konci může po úpravě poslední direktivu ještě sloučit s předchozí.

Kterou kontrolu provést první a proč

Začněte kódováním, protože stojí jeden příkaz a zneplatní každé další čtení souboru. Pak uvozovky, potom deklarace režimu a ostatní povinné direktivy, a teprve po nich certifikáty, klíče a přihlašovací údaje. Práce v tomto pořadí udržuje každý krok vratný, protože certifikát vyměněný kvůli opravě problému s uvozovkami nechá fungující instalaci s novou závadou dvě úpravy od originálu. Pořadí je důležitější než jednotlivé kontroly.

Uchovejte nedotčenou kopii souboru tak, jak ji dodal operátor. Pokud ji pozdější úprava rozbije, rozdíl proti této kopii ukáže, zda se posunula uvozovka, nový řádek nebo bajt značky, což je rychlejší než znovu číst chybu. Referenci voleb pro každou direktivu najdete v příručce OpenVPN pro nainstalovanou verzi.

Související články