OpenVPN start niet, en de foutmelding wijst naar een regel die er goed uitziet: Unrecognized option or missing or extra parameter(s) in office.ovpn:42: ca. Het certificaat is niet veranderd, het bestand opent in een editor, en niets aan het pad ziet er verkeerd uit. De parser maakt geen bezwaar tegen de naam van de optie; hij maakt bezwaar tegen hoeveel argumenten er mee zijn gekomen. Vier controles lossen bijna elk geval op, en ze zijn de moeite waard in de volgorde van de kosten.

Waarom de parser de optie de schuld geeft

Elke configuratieregel wordt op witruimte en op aanhalingstekens gesplitst voordat een optie hem ooit ziet. Een waarde met een spatie komt daarom als meerdere argumenten aan tenzij hij is omhuld, en de optie die de regel bezat meldt de afwijking. Op Windows maakt de standaard installatiemap dat zeker, omdat C:\Program Files door de opbouw midden in het pad staat. Het certificaat wordt bij deze fout nooit geopend, dus controleren of het bestand bestaat bewijst niets nuttigs.

Het gemelde regelnummer is meestal juist, en de gemelde optie is degene die de regel heeft verbruikt. Wanneer de genoemde optie er een is waarvan u weet dat u hem nooit hebt geschreven, lees dan de regel erboven, want een verloren aanhalingsteken in een eerder blok verschuift het parseren. Zo wordt een certificaatblok uiteindelijk beschuldigd van het aantal argumenten.

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

Zet aanhalingstekens om elk pad met een spatie

Eén paar dubbele aanhalingstekens om de waarde is de hele reparatie, en op Windows worden schuine strepen geaccepteerd, dus escapen wordt nooit deel van het probleem. Repareer elke padoptie in dezelfde doorgang, want de parser stopt bij de eerste fout en de volgende wacht gewoon op de volgende herstart. De set omvat meestal ca, cert, key, tls-auth en 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"

Een zoekopdracht op de mapnaam vindt elk voorkomen sneller dan het bestand lezen. Voer die uit voordat u iets bewerkt, zodat de lijst compleet is:

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

Het profiel naar een pad zonder spaties verplaatsen is een geldig alternatief, en het is alleen geldig als elk pad meeverhuist. Een half gemigreerd profiel reproduceert dezelfde fout met een andere bestandsnaam, wat moeilijker te zien is omdat de melding nu naar een pad wijst dat u net hebt gemaakt. Kies één aanpak en maak die af.

Haal de modusverklaring terug vóór de certificaten

De tweede veelvoorkomende oorzaak geeft een andere melding met dezelfde verspilde middag. Een clientprofiel moet zijn modus bij de bovenkant verklaren, en die verklaring raakt gemakkelijk zoek wanneer alleen de certificaatblokken in een nieuw bestand worden geplakt. Zonder die verklaring leest OpenVPN het bestand met een andere set standaardwaarden, en de schade verschijnt veel later als een conflict tussen opties of een mislukte aanmelding. De ontbrekende regel is goedkoop te controleren en duur om te vergeten.

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

Houd één richtlijn per regel aan zolang u daar bent. Samengevoegde regels geven precies de argumentaantal-fout uit het eerste deel, en de gemelde regel lijkt redelijk omdat de samenvoeging gebeurde waar de editor de tekst afbrak. Lees de ruwe regel, niet de weergegeven regel.

Coderingsschade ziet eruit als een optienaam

Een bestand dat als UTF-16 is opgeslagen, met byteordermarkering, verbergt zijn eerste optie voor de parser, en losse bytes kunnen zich in de melding aan de optienaam hechten. Sla het bestand op als UTF-8 zonder byteordermarkering, open het daarna opnieuw en bevestig dat het eerste teken een gewone letter is. Editors, PowerShell-omleiding en tekst die uit een chatvenster is geplakt veranderen allemaal de codering zonder te vragen.

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

Een byteordermarkering verschijnt als voorloopmarkeringsbytes vóór alle tekst, en die tekens met de hand verwijderen is een verliezende zet omdat de editor ze bij de volgende opslag terugschrijft. Sla het bestand in plaats daarvan opnieuw op met een expliciete codering. Regeluiteinden zijn vergevingsgezinder, maar een bestand zonder nieuwe regel aan het einde kan de laatste richtlijn na een bewerking nog steeds samenvoegen met de vorige.

Welke controle eerst, en waarom

Begin met de codering, want die kost één opdracht en maakt elke andere lezing van het bestand ongeldig. Dan de aanhalingstekens, dan de modusverklaring en de andere verplichte richtlijnen, en pas daarna de certificaten, sleutels en inloggegevens. In die volgorde werken houdt elke stap omkeerbaar, omdat een certificaat dat is vervangen om een aanhalingstekenprobleem op te lossen een werkende installatie achterlaat met een nieuwe fout die twee bewerkingen van het origineel verwijderd is. De volgorde is belangrijker dan de afzonderlijke controles.

Bewaar een onaangeroerde kopie van het bestand zoals de operator het heeft geleverd. Als een latere bewerking het kapotmaakt, laat een verschil met die kopie zien of een aanhalingsteken, een nieuwe regel of een markeringsbyte is verschoven, wat sneller is dan de fout opnieuw lezen. De optiereferentie voor elke richtlijn staat in de OpenVPN-handleiding voor de geïnstalleerde versie.

Gerelateerde artikelen