OpenVPN Connect ou OpenVPN GUI : où Windows conserve les profils
Deux clients Windows, deux modèles de profils : le GUI liste les fichiers .ovpn d'un dossier, Connect tient un magasin d'import. Ensuite, supprimez ou importez correctement.
Sous Windows, la question "où est mon profil OpenVPN" a deux réponses différentes, et choisir la mauvaise coûte un après-midi. Le GUI communautaire OpenVPN traite un répertoire comme sa liste de profils : chaque fichier .ovpn du dossier configuré apparaît dans le menu de la zone de notification, et un fichier retiré de ce dossier disparaît. OpenVPN Connect travaille à partir d'un magasin d'import, il conserve donc un profil que vous avez supprimé du disque et ignore un fichier que vous y avez copié. La comparaison ci-dessous est celle que j'utilise pour décider quel dossier ouvrir avant de toucher quoi que ce soit.
Une liste de dossier face à un magasin d'import
Le GUI communautaire énumère les fichiers au démarrage : il lit un répertoire de configuration, choisi à l'installation, et un fichier .ovpn qui s'y trouve est un profil. Fermez le client, copiez un fichier dans ce dossier, relancez-le, et l'entrée est dans le menu.
Connect, lui, construit sa liste à partir d'enregistrements écrits lors de l'import, si bien qu'un fichier copié est invisible tandis qu'un profil importé survit à la suppression du téléchargement d'origine. Cette seule différence explique la plupart des témoignages selon lesquels les deux clients stockent les profils à des endroits différents, car c'est vrai.
Le GUI communautaire : quel dossier est réellement utilisé
Deux dossiers comptent. Une installation par utilisateur lit %USERPROFILE%\OpenVPN\config ; une installation pour tous les utilisateurs lit C:\Program Files\OpenVPN\config, ou le chemin x86 lorsque le client est en 32-bit. Si un profil n'apparaît que pour un compte Windows, il se trouve dans le dossier par utilisateur et l'autre compte ne le verra jamais.
Ne déduisez pas le chemin de l'installateur. Le GUI accepte un argument --config_dir et se souvient du répertoire avec lequel il a été lancé, si bien qu'un raccourci peut pointer ailleurs. Vérifiez la cible du raccourci et le champ Start in, ou les paramètres du GUI, avant de créer le moindre fichier.
Supprimer, c'est supprimer des fichiers. Fermez d'abord le GUI pour qu'il ne garde pas l'entrée en mémoire, supprimez le .ovpn ainsi que les fichiers de certificat ou de clé conservés à côté, puis relancez le client.
Le dossier pour tous les utilisateurs exige une suppression élevée. Une suppression qui n'y fait rien en silence relève d'UAC, pas d'un bug du client.
Connect : le magasin d'import et le double piège d'AppData
Les versions 2.x et 3.x actuelles conservent les profils sous %APPDATA%\OpenVPN Connect\profiles. Les versions autour de la 2.5 utilisaient plutôt %ProgramFiles(x86)%\OpenVPN Technologies\OpenVPN Client\etc\profile, ce qui explique que les réponses anciennes et récentes des forums semblent se contredire. Une machine mise à niveau sur place peut encore contenir les deux.
Les chemins se déforment quand on les raconte. %AppData% se résout déjà en AppData\Roaming, donc écrire %AppData%\Roaming\OpenVPN Connect\profiles se développe en AppData\Roaming\Roaming et ne pointe nulle part. Utilisez la variable ou le chemin littéral, jamais un mélange des deux.
Supprimez via le client : ouvrez Profiles, utilisez l'icône en forme de crayon, choisissez Delete. Cela retire l'enregistrement et la copie stockée ensemble. Supprimer le dossier pendant que Connect tourne peut laisser un enregistrement qui n'ouvre rien, ce qui est la plainte "profile still shows up" sous son autre forme.
La copie importée est celle que le client exécute. Modifier le .ovpn laissé dans Downloads ne change rien, car Connect lit sa copie stockée ; pour changer un remote ou un cipher, modifiez le profil dans le client, ou modifiez le fichier et importez-le de nouveau .
Pourquoi un profil supprimé revient
Deux installations de la même famille de clients en sont la raison habituelle. Un GUI par utilisateur et un GUI pour tous les utilisateurs ont des répertoires de configuration distincts, donc supprimer de l'un laisse l'autre intact et la zone de notification liste encore le nom. Programs and Features est l'endroit où vous confirmez que les deux sont installés.
La deuxième raison est un profil qui n'a jamais été dans le dossier que vous avez vérifié. Ouvrir un .ovpn une fois depuis un partage réseau ou un dossier Downloads peut le copier dans le répertoire de configuration par utilisateur, et les profils Connect importés n'existent que dans AppData. Avant de modifier quoi que ce soit, cherchez le nom du fichier sous %USERPROFILE% et %APPDATA%. Un dossier de profil contient généralement la clé privée à côté du .ovpn, alors ne collez jamais le dossier dans un ticket ou un chat pour prouver quel profil vous avez retiré - citez plutôt le nom du fichier et l'horodatage.
Les anciennes versions du GUI conservent aussi les préférences du client dans le registre. Si la zone de notification liste encore un nom après la disparition du fichier et qu'une seule installation est présente, redémarrez le client une fois et revérifiez le répertoire de configuration du raccourci avant d'envisager de toucher aux clés de registre.
Deux tunnels à la fois : d'abord les adaptateurs, ensuite la route
Le GUI peut contenir plusieurs connexions, une par adaptateur virtuel ; ajoutez des adaptateurs depuis l'entrée du menu Start qui installe TAP-Windows6, puis confirmez le nombre dans Network Connections, car deux tunnels simultanés ont besoin de deux adaptateurs et les deux devraient obtenir leur adresse automatiquement. Le routage est la limite la plus difficile. Deux profils qui redirigent tout le trafic se disputent la route par défaut, et un seul peut la posséder, vous obtenez donc des échecs intermittents au lieu de deux tunnels fonctionnels. Gardez un tunnel complet et donnez au second un profil split-tunnel qui ne pousse que son propre sous-réseau.
Les plages privées qui se chevauchent ne se corrigent pas en ajoutant un adaptateur. Si les deux serveurs distribuent 10.8.0.0/24, le second tunnel entre en collision au niveau de l'adresse et aucune configuration client ne les séparera.
Les noms d'adaptateurs vous disent ce que vous regardez. Get-NetAdapter dans PowerShell liste les adaptateurs TAP-Windows et l'adaptateur Wintun par leur nom, ce qui est plus rapide que compter les icônes dans Network Connections quand un tunnel est monté sur le mauvais.
Démarrer un profil nommé depuis un script
Le GUI prend un nom de profil relatif à son répertoire de configuration, donc un lanceur ressemble à ceci : "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect "myvpn.ovpn". Un chemin absolu, ou un processus démarré dans un autre répertoire de travail, échoue silencieusement, ce qui explique qu'un raccourci qui fonctionne par double-clic casse sous Task Scheduler.
Définissez le répertoire de travail au lieu d'espérer. Dans un lanceur AutoHotkey, c'est SetWorkingDir, C:\Program Files\OpenVPN\config ; dans Task Scheduler, c'est le champ Start in de l'action. Passer --config_dir avec le même chemin rend le lanceur indépendant des deux.
Avant de terminer, exportez le profil, notez son adaptateur, son sous-réseau et le sous-réseau qu'il route, et gardez les certificats de chaque client dans son propre sous-dossier. Confirmez ensuite que le dossier appartient au client que vous exécutez réellement, et supprimez via le client quand ce client a un magasin d'import. C'est cet ordre qui empêche le même profil de réapparaître après le prochain redémarrage.