OpenVPN Connect vs. OpenVPN GUI: waar Windows profielen bewaart
Twee Windows-clients, twee profielmodellen: de GUI toont .ovpn-bestanden uit een map, Connect houdt een importopslag bij. Verwijder of importeer daarna correct.
Op Windows heeft "waar is mijn OpenVPN-profiel" twee verschillende antwoorden, en de verkeerde keuze kost een middag. De community-OpenVPN GUI behandelt een map als zijn profielenlijst: elk .ovpn-bestand in de geconfigureerde map verschijnt in het systeemvakmenu, en een bestand dat uit die map wordt verwijderd, verdwijnt. OpenVPN Connect werkt vanuit een importopslag, dus het bewaart een profiel dat je van schijf hebt verwijderd en negeert een bestand dat je erin hebt gekopieerd. De vergelijking hieronder is degene die ik gebruik om te bepalen welke map ik open voordat ik iets aanraak.
Een maplijst tegenover een importopslag
De community-GUI somt bestanden op bij het starten: hij leest één configuratiemap, gekozen bij de installatie, en een .ovpn-bestand dat daar staat is een profiel. Sluit de client, kopieer een bestand naar die map, start hem opnieuw, en de vermelding staat in het menu.
Connect bouwt zijn lijst juist op uit records die het tijdens de import heeft geschreven, dus een gekopieerd bestand is onzichtbaar terwijl een geïmporteerd profiel het verwijderen van de oorspronkelijke download overleeft. Dat ene verschil verklaart de meeste meldingen dat de twee clients profielen op verschillende plekken bewaren, want dat doen ze.
De community-GUI: welke map daadwerkelijk wordt gebruikt
Twee mappen zijn belangrijk. Een installatie per gebruiker leest %USERPROFILE%\OpenVPN\config; een installatie voor alle gebruikers leest C:\Program Files\OpenVPN\config, of het x86-pad wanneer de client 32-bit is. Als een profiel alleen voor één Windows-account verschijnt, staat het in de map per gebruiker en het andere account zal het nooit zien.
Leid het pad niet af uit het installatieprogramma. De GUI accepteert een --config_dir-argument en onthoudt de map waarmee hij is gestart, dus een snelkoppeling kan heel ergens anders naartoe wijzen. Controleer het doel van de snelkoppeling en het veld Start in, of de GUI-instellingen, voordat je een bestand aanmaakt.
Verwijderen is bestanden verwijderen. Sluit eerst de GUI zodat hij de vermelding niet in het geheugen houdt, verwijder het .ovpn samen met eventuele certificaat- of sleutelbestanden ernaast, en start de client daarna opnieuw.
De map voor alle gebruikers vereist een verhoogde verwijdering. Een verwijdering die daar stil niets doet, is UAC, geen bug van de client.
Connect: de importopslag en de dubbele AppData-valkuil
Huidige 2.x- en 3.x-builds bewaren profielen onder %APPDATA%\OpenVPN Connect\profiles. Builds rond 2.5 gebruikten in plaats daarvan %ProgramFiles(x86)%\OpenVPN Technologies\OpenVPN Client\etc\profile, waardoor oudere en nieuwere forumantwoorden tegenstrijdig lijken. Een machine die ter plaatse is bijgewerkt, kan nog beide bevatten.
De paden raken vervormd als ze worden naverteld. %AppData% wordt al omgezet naar AppData\Roaming, dus het schrijven van %AppData%\Roaming\OpenVPN Connect\profiles breidt uit naar AppData\Roaming\Roaming en wijst nergens heen. Gebruik de variabele of het letterlijke pad, nooit een mengeling van beide.
Verwijder via de client: open Profiles, gebruik het potloodpictogram, kies Delete. Dat verwijdert het record en de opgeslagen kopie samen. De map verwijderen terwijl Connect draait kan een record achterlaten dat niets opent, en dat is de klacht "profile still shows up" in zijn andere vorm.
De geïmporteerde kopie is degene die de client uitvoert. Het .ovpn bewerken dat in Downloads achterblijft verandert niets, omdat Connect zijn opgeslagen kopie leest; om een remote of een cipher te wijzigen bewerk je het profiel in de client, of bewerk je het bestand en importeer je het opnieuw .
Waarom een verwijderd profiel terugkomt
Twee installaties van dezelfde clientfamilie is de gebruikelijke reden. Een GUI per gebruiker en een GUI voor alle gebruikers hebben aparte configuratiemappen, dus verwijderen uit de ene laat de andere intact en het systeemvak vermeldt de naam nog steeds. Programs and Features is waar je bevestigt of beide zijn geïnstalleerd.
De tweede reden is een profiel dat nooit in de map stond die je hebt gecontroleerd. Een .ovpn één keer openen vanuit een netwerkshare of een Downloads-map kan hem naar de configuratiemap per gebruiker kopiëren, en geïmporteerde Connect-profielen bestaan alleen in AppData. Zoek voordat je iets bewerkt de bestandsnaam onder zowel %USERPROFILE% als %APPDATA%. Een profielmap bevat meestal de privésleutel naast het .ovpn, dus plak de map nooit in een ticket of chat om te bewijzen welk profiel je hebt verwijderd - noem in plaats daarvan de bestandsnaam en het tijdstempel.
Oudere GUI-builds bewaren clientvoorkeuren ook in het register. Als het systeemvak na het verdwijnen van het bestand nog een naam vermeldt en er maar één installatie is, start de client dan één keer opnieuw en controleer de configuratiemap van de snelkoppeling opnieuw voordat je overweegt registersleutels aan te raken.
Twee tunnels tegelijk: eerst adapters, dan de route
De GUI kan meerdere verbindingen houden, één per virtuele adapter; voeg adapters toe via het Startmenu-item dat TAP-Windows6 installeert, en bevestig daarna het aantal in Network Connections, want twee gelijktijdige tunnels hebben twee adapters nodig en beide moeten hun adres automatisch krijgen. Routering is de moeilijkere grens. Twee profielen die elk al het verkeer omleiden, strijden om de standaardroute, en slechts één kan die bezitten, dus je krijgt tussenliggende fouten in plaats van twee werkende tunnels. Houd één volledige tunnel en geef de tweede een split-tunnelprofiel dat alleen zijn eigen subnet pusht.
Overlappende privébereiken kunnen niet worden opgelost door een adapter toe te voegen. Als beide servers 10.8.0.0/24 uitdelen, botst de tweede tunnel op adresniveau en geen enkele clientconfiguratie zal ze scheiden.
Adapternamen vertellen je waar je naar kijkt. Get-NetAdapter in PowerShell vermeldt TAP-Windows-adapters en de Wintun-adapter bij naam, wat sneller is dan pictogrammen tellen in Network Connections wanneer een tunnel op de verkeerde omhoogkwam.
Een benoemd profiel starten vanuit een script
De GUI neemt een profielnaam relatief ten opzichte van zijn configuratiemap, dus een launcher ziet er zo uit: "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect "myvpn.ovpn". Een absoluut pad, of een proces dat in een andere werkmap is gestart, mislukt stil, waardoor een snelkoppeling die met dubbelklikken werkt onder Task Scheduler breekt.
Stel de werkmap in in plaats van te hopen. In een AutoHotkey-launcher is dat SetWorkingDir, C:\Program Files\OpenVPN\config; in Task Scheduler is dat het veld Start in van de actie. --config_dir met hetzelfde pad doorgeven maakt de launcher van beide onafhankelijk.
Voordat je klaar bent, exporteer je het profiel, noteer je de adapter, het subnet en het subnet dat het routeert, en houd je de certificaten van elke klant in een eigen submap. Bevestig dan dat de map toebehoort aan de client die je daadwerkelijk uitvoert, en verwijder via de client wanneer die client een importopslag heeft. Die volgorde voorkomt dat hetzelfde profiel na de volgende herstart weer verschijnt.