Je vindt een bestand met de naam config.json, er wordt een VPN-server in genoemd, en de aanname volgt meteen: dit moet de OpenVPN-verbinding zijn. Vaak is dat niet zo. Een JSON-bestand met die naam kan bij een desktopfrontend horen dat de client start, bij een daemon die zijn eigen instellingen opslaat, of bij het exportformaat van een product, en elk daarvan heeft zijn eigen schema.

De bestandsnaam is de minst nuttige aanwijzing. Begin bij het proces dat het bestand leest, controleer daarna of het formaat dat het verwacht überhaupt JSON is, en beslis pas dan of het bewerken van het bestand de ondersteunde manier is om iets te veranderen.

Begin bij het proces, niet bij de bestandsnaam

Kijk wat er werkelijk draait. Een service-unit, een startscript of een trayprogramma noemt het binaire bestand dat het start en vaak het configuratiepad dat het doorgeeft. De map met het bestand is een tweede aanwijzing: applicatiedatamappen, serviceconfiguratiemappen en gebruikersprofielmappen wijzen op verschillende eigenaren.

Lees daarna de documentatie van het product dat die component bezit. Hoort de JSON bij een wrapper, dan zijn de sleutels de sleutels van de wrapper, en een plausibel ogend object dat naar het voorbeeld van een ander product is gebouwd, wordt afgewezen of stil genegeerd.

Twee bestanden met dezelfde naam in verschillende mappen zijn een veelvoorkomende valkuil. Het ene kan gegenereerde toestand zijn die de service bij elke start herschrijft, het andere de sjabloon die een mens hoort te bewerken. De verkeerde aanpassen levert een oplossing op die tot de volgende herstart standhoudt.

Wat een Community OpenVPN-profiel werkelijk is

Community OpenVPN 2.6 leest een op opties gebaseerd tekstformaat. Een profiel is een reeks richtlijnen: een regel voor de clientmodus, een apparaatregel, een extern eindpunt, plus opties voor identiteit, versleuteling en routes, en het kan certificaat- en sleutelmateriaal in inline-blokken opnemen.

Dat formaat wordt regel voor regel door de client zelf geparseerd. Er een JSON-document via de optie config aan geven schakelt geen JSON-parser in; de eerste regel wordt als onbekende richtlijn afgewezen. Een JSON-bestand hernoemen zodat het op .ovpn eindigt, converteert de inhoud ook niet, en een geldig optiebestand wordt niet ongeldig omdat de extensie ongewoon is.

OpenVPN Connect en OpenVPN 3 Linux hebben hun eigen import- en beheerpaden voor profielen. Die producten kunnen een profiel accepteren en het in hun eigen database of servicetoestand opslaan, wat niet hetzelfde is als een JSON-bestand dat toevallig een server beschrijft.

Toestand bewerken die een ander component bezit

Is de JSON gegenereerd, dan is het bewerken ervan een race. Een draaiende service kan het bij het afsluiten, bij het opnieuw verbinden of bij de volgende instellingswijziging terugschrijven, en een handmatige bewerking verdwijnt zonder foutmelding. Geef de voorkeur aan de importopdracht van het product, de beheer-API of de instellingsinterface, want die paden werken de interne toestand bij die het bestand vertegenwoordigt. Een bestand dat na een herstart terugspringt, vertelt je welk pad het duurzame was.

Bewerk je toch een gegenereerd bestand, stop dan eerst de service, maak een back-up en breng de kleinst mogelijke wijziging aan. Controleer daarna of de service het bestand bij de start herschrijft, want een bestand dat bij de start terugspringt, betekent dat de echte bron van waarheid elders ligt en dat de bewerking nooit stand had gehouden.

Wachtwoorden en inline privésleutels zijn een apart onderwerp. JSON kan net zo gemakkelijk een volledige sleutel dragen als een optiebestand, dus behandel elke export als geheim, houd die buiten gedeelde schijven en verberg waarden voordat je structuur in een forumpost plakt.

De wijziging verifiëren en het bestand beschermen

Verifiëren is niet „de JSON parseert”. Parseren bewijst alleen dat de accolades bij elkaar passen; het zegt niets over of de eigenaar de sleutels herkent. Controleer de eigen toestand van het product: de lijst met actieve profielen, de geselecteerde verbinding en een herverbinding die echt de nieuwe waarden gebruikt. Een profiel dat in de lijst staat maar nooit het geselecteerde wordt, is nog steeds niet het profiel in gebruik.

Let op het log van het component dat je hebt bewerkt, niet alleen dat van de VPN-client. Een wrapper die je bestand weigert, meldt dat meestal in zijn eigen log, en een client die het bestand nooit heeft ontvangen, ziet er hetzelfde uit als een client die slechte instellingen heeft ontvangen.

Bewaar een kopie van het werkende bestand en noteer de productversie waartegen je hebt getest. Deze formaten veranderen tussen releases, en een structuur die vorig jaar werkte, kan na een upgrade worden afgewezen met een melding die het schema helemaal niet noemt.

Samenvatting van de doorloop: identificeer het proces, lees de documentatie, bevestig of het bestand überhaupt JSON is, gebruik het ondersteunde bewerkingspad en verifieer via de eigen toestand van het product. De bestandsnaam heeft geen van die vragen ooit beantwoord.

Gerelateerde artikelen