Pakiet aprowizacji tworzy połączenie IKEv2, a powstały profil negocjuje coś innego niż zamierzony zestaw. Pakiet wykonał swoją pracę; po prostu nigdy nie miał pola na zadanie, które zakładałeś. Traktuj zestaw kryptograficzny jako osobny, weryfikowalny krok aprowizacji.

Przejdź przez pięć punktów poniżej po kolei i trzymaj wyniki akceptacji osobno.

Dwa rodzaje zasad ukryte za podobnymi nazwami

Windows rozdziela zasady chroniące wymianę kluczy od zasad chroniących ruch. Strona IKE jest konfigurowana metodą szyfrowania i metodą integralności. Strona danych jest konfigurowana stałymi szyfru i transformacji uwierzytelniania, a te stałe używają własnych nazw. Jedna etykieta AES skopiowana w niewłaściwe pole daje połączenie, które powstaje według zasad, których nikt nie zatwierdził.

Grupa wymiany kluczy i doskonała tajność w przód należą do tej samej negocjacji i muszą być akceptowalne dla bramy. Ustawienie ich bez sprawdzenia drugiej strony daje błąd na późniejszym etapie niż ten, który edytowałeś, i dlatego te pomyłki wyglądają jak problemy bramy.

Zbuduj pełne zasady, a nie dwie nazwy algorytmów

Zapisz każde pole jawnie, także te, które uważasz za domyślne. Częściowe zasady zastosowane z flagą wymuszenia stają się zapisaną konfiguracją, a pominięte wartości to te, które platforma miała w tym momencie. Wartości zaczynające się tym samym prefiksem nie są wymienne między polami, a jedna ze znanych nazw transformacji jest ważna tylko jako transformacja uwierzytelniania.

$policy = @{
    ConnectionName = 'Corp IKEv2'
    AllUserConnection = $true
    EncryptionMethod = 'AES256'
    IntegrityCheckMethod = 'SHA384'
    CipherTransformConstants = 'AES256'
    AuthenticationTransformConstants = 'SHA384128'
    DHGroup = 'Group19'
    PfsGroup = 'PFS2048'
    Force = $true
}
Set-VpnConnectionIPsecConfiguration @policy

Traktuj ten blok jako przykładowy zestaw, który muszą obsługiwać obie strony, a nie jako zalecenie. Przełącznik wymuszenia wycisza pytanie; nie zatwierdza pakietu, którego nie przejrzałeś.

Najpierw utwórz, potem zastosuj — w jednym zakresie

Połączenie musi istnieć, zanim będzie można ustawić jego zasady, a zakres musi się zgadzać na każdym kroku. Krok w kontekście komputera nie znajdzie prywatnego profilu dowolnego użytkownika tylko dlatego, że nazwa wyświetlana jest taka sama. Połączenia dla wszystkich użytkowników, połączenia użytkownika i ich katalogi stanu to osobne obiekty o osobnych nazwach.

Kolejność ma większe znaczenie, niż wygląda to w pakiecie aprowizacji, ponieważ dwie komendy mogą wykonać się bliżej siebie niż trwa utworzenie połączenia. Zapakuj pracę po konfiguracji jako zatwierdzoną komendę aprowizacji z zadeklarowanym kontekstem wykonania i pozwól silnikowi aprowizacji ją uporządkować, zamiast wstawiać zgadywane opóźnienie. Sen wystarczająco długi na twoim sprzęcie testowym to warunek wyścigu z dołączonym opóźnieniem. Zapisuj zależność, a nie czas trwania.

Udokumentowane pola Configuration Designer opisują jedno ustawienie VPN i nie odsłaniają każdej natywnej kontroli IPsec. Jeśli wymaganiem jest dostawa zarządzana, dostawca usługi konfiguracji VPNv2 ma sekcję zestawu kryptograficznego dokładnie w tym celu.

Wyznacz jednego właściciela zasad

Późniejsza aktualizacja profilu zarządzania może odtworzyć połączenie i zastąpić to, co zastosował skrypt, a zamiana będzie wyglądać jak regresja. Zdecyduj, czy zestaw należy do profilu, do skryptu czy do kanału zarządzania, i spraw, aby rutynowe aktualizacje szły tą samą drogą co pierwsza instalacja.

Dwóch właścicieli to to samo co żaden, gdy obaj się nie zgadzają. Zapisz nazwę właściciela w rejestrze zmian profilu. Następna aktualizacja pójdzie za tym, co mówi ten rejestr.

Weryfikuj wynik negocjacji, a nie pakiet

Odczytaj zapisany profil i jego zakres, następnie ustanów nowe połączenie i porównaj wybrane propozycje na bramie. Potwierdź też zachowanie przy odnawianiu kluczy, ponieważ pierwszy uścisk dłoni może się udać z zestawem, który późniejsza faza odrzuca.

Get-VpnConnection -Name 'Corp IKEv2' -AllUserConnection | Format-List
Get-ChildItem 'C:\ProgramData\Microsoft\Network\Connections\Pbk' | Select-Object Name, LastWriteTime

Trzy wyniki akceptacji to nie to samo zdarzenie: pakiet został zainstalowany, profil istnieje z zamierzonymi zasadami, a strony go wynegocjowały. Trzymaj je osobno, aby brakujące pole nigdy nie zostało naprawione przez osłabienie uwierzytelniania ani przez włączenie zapasu, którego nikt nie wybrał.

Powiązane artykuły