Skopiowany rasphone.pbk usunął pozostałe systemowe VPN-y
Zastąpienie globalnej książki telefonicznej, aby wdrożyć jeden VPN, usuwa każde inne połączenie w niej zapisane. Miej nazwany profil, podejrzyj go, a potem udowodnij, że reszta przetrwa.
Nowy VPN się pojawił, uwierzytelnianie działało, a VPN innego dostawcy, który mieszkał na maszynie od dwóch lat, zniknął w tym samym restarcie. Nic w dzienniku wdrożenia o tym nie wspomniało, bo nic we wdrożeniu się tym nie zajmowało. Pakiet zastąpił globalną książkę telefoniczną, a tamto połączenie było wpisem w tym pliku. To operacja kopiowania, która zachowuje się dokładnie tak, jak operacja kopiowania powinna się zachowywać.
Rozwiązaniem nie jest lepsza kopia. Rozwiązaniem jest niekopiowanie pliku.
Co właściwie zawiera książka telefoniczna
Książka telefoniczna to kontener definicji połączeń, a nie profil. Wpisy poszczególnych użytkowników żyją w profilu użytkownika, a wpisy wszystkich użytkowników żyją w ścieżce ProgramData na poziomie maszyny, dlatego wdrożenie, które zapisuje ten plik, dotyka wszystkich lokalnych użytkowników naraz. Ten sam plik zawiera też wpisy utworzone przez innych dostawców i stąd bierze się szkoda uboczna.
Definicja połączenia też nie jest całą historią. Trasy, zasady DNS, materiał zaufanego CA i tożsamość zapewniają odrębni właściciele.
Ustal, który zakres jest właścicielem profilu
Wypisz oba zakresy, zanim cokolwiek zapiszesz. Get-VpnConnection zwraca wpisy bieżącego użytkownika, a Get-VpnConnection -AllUserConnection zwraca te na poziomie maszyny, i ta sama nazwa może istnieć w obu z różnymi ustawieniami. Zdecyduj, do którego zakresu należy twoje wdrożenie, i zapisz to, bo aktualizacja niewłaściwego zakresu zostawia użytkownika łączącego się przez stary profil, podczas gdy twoja zmiana leży w pliku, którego nikt nie czyta. Zaplanowane zadanie uruchamiane jako SYSTEM widzi też inny zestaw profili niż zalogowany użytkownik.
Nazwanie właściciela to krok, który powstrzymuje następnego inżyniera przed powtórzeniem kopiowania całego pliku.
Utwórz lub zaktualizuj nazwane połączenie, nic więcej
Dla natywnego profilu Windows Add-VpnConnection tworzy jeden wpis, a -AllUserConnection wybiera zakres na poziomie maszyny. Uruchom go najpierw z -WhatIf, aby podgląd trafił do twojego zapisu, a nie do skargi użytkownika:
Add-VpnConnection -Name 'Office VPN' -ServerAddress 'vpn.example.com' -TunnelType Ikev2 -AuthenticationMethod Eap -EapConfigXmlStream $approvedEapXml -AllUserConnection -WhatIfEAP XML musi pochodzić z legalnego miejsca: wyeksportowany z działającego profilu referencyjnego albo wygenerowany przez twoje narzędzia zarządzające dla rzeczywistej bramy. Bez poprawnych ustawień zaufania serwera profil albo łączy się z niewłaściwą rzeczą, albo zawodzi wszędzie, i żadna z tych sytuacji nie jest udanym wdrożeniem.
Gdy wpis już istnieje, porównaj jego ustawienia i zaktualizuj go za pomocą Set-VpnConnection zamiast usuwać go i tworzyć od nowa. Usuwanie to sposób, w jaki działająca konfiguracja traci pola, których nikt nie udokumentował, i sposób, w jaki niepowiązane wpisy trafiają pod szerokie czyszczenie.
Sprawdź, czy istnieje drugi system zarządzania, który przywróci stary profil przy następnym odświeżeniu zasad. Piloty zawodzą tu częściej niż na samym cmdlecie.
Przetestuj na maszynie, która ma już inny VPN
Wybierz maszynę testową z niepowiązanym wpisem na poziomie maszyny, wdróż, a potem zweryfikuj trzy rzeczy: nowy profil pojawia się w zamierzonym zakresie, uwierzytelnianie dociera do prywatnego zasobu, a niepowiązany wpis nadal się łączy. Wdróż jeszcze dwa razy i potwierdź, że drugie uruchomienie zmienia tylko profil, który jest jego własny. Ten trzeci test wyłapuje pakiet, który jest idempotentny dla własnego wpisu i niszczący dla wszystkiego innego.
Usuwanie podlega tej samej regule: Remove-VpnConnection -Name 'Office VPN' -AllUserConnection wycofuje jeden wpis i zostawia resztę pliku w spokoju.
Trzymaj poprzednią zamierzoną konfigurację dostępną, aby ograniczone wycofanie oznaczało ponowny import jednego profilu, a nie przywracanie całego stanu maszyny.