Un rasphone.pbk copié a effacé les autres VPN à l'échelle du système
Remplacer le carnet d'adresses global pour livrer un seul VPN efface toutes les autres connexions qu'il contient. Possédez un profil nommé, prévisualisez-le, puis prouvez que le reste survit.
Le nouveau VPN est apparu, l'authentification a fonctionné, et un VPN tiers qui vivait sur la machine depuis deux ans a disparu dans le même redémarrage. Rien dans le journal de déploiement ne le mentionnait, parce que rien dans le déploiement ne s'en occupait. Le paquet avait remplacé le carnet d'adresses global, et l'autre connexion était une entrée de ce fichier. C'est une opération de copie qui se comporte exactement comme une opération de copie doit se comporter.
Le correctif n'est pas une meilleure copie. C'est de ne pas copier le fichier.
Ce que contient réellement le carnet d'adresses
Un carnet d'adresses est un conteneur de définitions de connexion, pas un profil. Les entrées par utilisateur vivent sous le profil de l'utilisateur, et les entrées pour tous les utilisateurs vivent sous le chemin ProgramData à l'échelle de la machine, c'est pourquoi un déploiement qui écrit ce fichier touche tous les utilisateurs locaux d'un coup. Le même fichier porte aussi des entrées créées par d'autres fournisseurs, et c'est de là que viennent les dégâts collatéraux.
Une définition de connexion n'est pas toute l'histoire non plus. Les routes, la stratégie DNS, le matériel d'autorité de certification de confiance et l'identité sont fournis par des propriétaires distincts.
Déterminez quelle portée possède le profil
Listez les deux portées avant d'écrire quoi que ce soit. Get-VpnConnection renvoie les entrées de l'utilisateur courant et Get-VpnConnection -AllUserConnection renvoie celles à l'échelle de la machine, et le même nom peut exister dans les deux avec des paramètres différents. Décidez quelle portée votre déploiement possède et notez-le, car mettre à jour la mauvaise portée laisse l'utilisateur se connecter avec l'ancien profil pendant que votre changement reste dans un fichier que personne ne lit. Une tâche planifiée exécutée en tant que SYSTEM voit aussi un ensemble de profils différent de celui de l'utilisateur connecté.
Nommer le propriétaire est l'étape qui empêche l'ingénieur suivant de répéter la copie du fichier entier.
Créez ou mettez à jour la connexion nommée, rien d'autre
Pour un profil Windows natif, Add-VpnConnection crée une entrée, et -AllUserConnection choisit la portée à l'échelle de la machine. Lancez-le d'abord avec -WhatIf, pour que l'aperçu atterrisse dans votre transcription plutôt que dans une plainte d'utilisateur :
Add-VpnConnection -Name 'Office VPN' -ServerAddress 'vpn.example.com' -TunnelType Ikev2 -AuthenticationMethod Eap -EapConfigXmlStream $approvedEapXml -AllUserConnection -WhatIfLe XML EAP doit venir d'un endroit légitime : exporté d'un profil de référence qui fonctionne, ou généré par vos outils de gestion pour la passerelle réelle. Sans les bons paramètres de confiance du serveur, le profil se connecte soit à la mauvaise chose, soit échoue partout, et aucune des deux n'est un déploiement réussi.
Quand l'entrée existe déjà, comparez ses paramètres et mettez-la à jour avec Set-VpnConnection au lieu de la supprimer et de la recréer. Supprimer est la façon dont une configuration qui fonctionne perd des champs que personne n'a documentés, et dont des entrées sans rapport se retrouvent prises dans un nettoyage large.
Vérifiez s'il existe un second système de gestion qui remettra l'ancien profil lors du prochain rafraîchissement de stratégie. Les pilotes échouent ici plus souvent qu'au cmdlet.
Faites un pilote sur une machine qui a déjà un autre VPN
Choisissez une machine de test avec une entrée sans rapport à l'échelle de la machine, déployez, puis vérifiez trois choses : le nouveau profil apparaît dans la portée prévue, l'authentification atteint une ressource privée, et l'entrée sans rapport se connecte encore. Déployez deux fois de plus et confirmez que la seconde exécution ne change que le profil qu'elle possède. Cette troisième vérification attrape un paquet idempotent pour sa propre entrée et destructeur pour tout le reste.
La suppression suit la même règle : Remove-VpnConnection -Name 'Office VPN' -AllUserConnection retire une entrée et laisse le reste du fichier tranquille.
Gardez la configuration prévue précédente disponible, pour qu'un retour arrière limité signifie réimporter un profil au lieu de restaurer tout l'état de la machine.