Eine kopierte rasphone.pbk löschte die anderen systemweiten VPNs
Das globale Telefonbuch zu ersetzen, um ein einziges VPN auszuliefern, löscht jede andere darin gespeicherte Verbindung. Besitzen Sie ein benanntes Profil, prüfen Sie es in der Vorschau und belegen Sie dann, dass der Rest überlebt.
Das neue VPN erschien, die Authentifizierung funktionierte, und ein VPN eines Drittanbieters, das zwei Jahre auf der Maschine gelebt hatte, verschwand im selben Neustart. Nichts im Bereitstellungsprotokoll erwähnte es, weil nichts in der Bereitstellung sich damit befasste. Das Paket hatte das globale Telefonbuch ersetzt, und die andere Verbindung war ein Eintrag in dieser Datei. Das ist ein Kopiervorgang, der sich genau so verhält, wie ein Kopiervorgang sich verhalten soll.
Die Lösung ist keine bessere Kopie. Sie besteht darin, die Datei nicht zu kopieren.
Was das Telefonbuch tatsächlich enthält
Ein Telefonbuch ist ein Container für Verbindungsdefinitionen, kein Profil. Einträge pro Benutzer liegen unter dem Benutzerprofil, und Einträge für alle Benutzer liegen unter dem maschinenweiten ProgramData-Pfad, weshalb eine Bereitstellung, die diese Datei schreibt, jeden lokalen Benutzer auf einmal trifft. Dieselbe Datei enthält auch Einträge anderer Anbieter, und daher kommt der Kollateralschaden.
Auch eine Verbindungsdefinition ist nicht die ganze Geschichte. Routen, DNS-Richtlinie, vertrauenswürdiges CA-Material und Identität werden von getrennten Eigentümern bereitgestellt.
Ermitteln Sie, welcher Bereich das Profil besitzt
Listen Sie beide Bereiche auf, bevor Sie etwas schreiben. Get-VpnConnection liefert die Einträge des aktuellen Benutzers und Get-VpnConnection -AllUserConnection liefert die maschinenweiten, und derselbe Name kann in beiden mit unterschiedlichen Einstellungen existieren. Legen Sie fest, welchen Bereich Ihre Bereitstellung besitzt, und schreiben Sie es auf, denn die Aktualisierung des falschen Bereichs lässt den Benutzer über das alte Profil verbinden, während Ihre Änderung in einer Datei liegt, die niemand liest. Eine geplante Aufgabe, die als SYSTEM läuft sieht ebenfalls einen anderen Satz von Profilen als der angemeldete Benutzer.
Den Eigentümer zu benennen ist der Schritt, der den nächsten Ingenieur davon abhält, das Kopieren der ganzen Datei zu wiederholen.
Erstellen oder aktualisieren Sie die benannte Verbindung, sonst nichts
Für ein natives Windows-Profil erstellt Add-VpnConnection einen Eintrag, und -AllUserConnection wählt den maschinenweiten Bereich. Führen Sie es zuerst mit -WhatIf aus, damit die Vorschau in Ihrem Protokoll landet und nicht in einer Benutzerbeschwerde:
Add-VpnConnection -Name 'Office VPN' -ServerAddress 'vpn.example.com' -TunnelType Ikev2 -AuthenticationMethod Eap -EapConfigXmlStream $approvedEapXml -AllUserConnection -WhatIfDas EAP-XML muss von einer legitimen Stelle kommen: exportiert aus einem funktionierenden Referenzprofil oder erzeugt von Ihren Verwaltungswerkzeugen für das tatsächliche Gateway. Ohne korrekte Servertrauens-Einstellungen verbindet das Profil entweder mit dem falschen Ziel oder scheitert überall, und beides ist kein erfolgreicher Rollout.
Wenn der Eintrag bereits existiert, vergleichen Sie seine Einstellungen und aktualisieren Sie ihn mit Set-VpnConnection, statt ihn zu löschen und neu zu erstellen. Löschen ist der Weg, auf dem eine funktionierende Konfiguration Felder verliert, die niemand dokumentiert hat, und auf dem unbeteiligte Einträge in eine breite Aufräumaktion geraten.
Prüfen Sie, ob ein zweites Verwaltungssystem beim nächsten Richtlinien-Refresh das alte Profil zurücksetzt. Piloten scheitern hier häufiger als am Cmdlet.
Pilotieren Sie auf einer Maschine, die bereits ein anderes VPN hat
Wählen Sie eine Testmaschine mit einem unbeteiligten maschinenweiten Eintrag, stellen Sie bereit, und prüfen Sie dann drei Dinge: Das neue Profil erscheint im vorgesehenen Bereich, die Authentifizierung erreicht eine private Ressource, und der unbeteiligte Eintrag verbindet weiterhin. Stellen Sie zweimal weitere bereit und bestätigen Sie, dass der zweite Lauf nur das Profil ändert, das er besitzt. Diese dritte Prüfung fängt ein Paket, das für seinen eigenen Eintrag idempotent und für alles andere zerstörerisch ist.
Das Entfernen folgt derselben Regel: Remove-VpnConnection -Name 'Office VPN' -AllUserConnection zieht einen Eintrag zurück und lässt den Rest der Datei in Ruhe.
Halten Sie die vorherige vorgesehene Konfiguration verfügbar, damit ein begrenzter Rollback das erneute Importieren eines Profils bedeutet und nicht die Wiederherstellung eines ganzen Maschinenzustands.