Błąd 789 na połączeniu L2TP w Windows oznacza, że tunel zginął wewnątrz wymiany zabezpieczeń IPsec, co dzieje się znacznie wcześniej, niż Windows gdziekolwiek wyśle hasło użytkownika. Ponawianie hasła albo resetowanie go w katalogu nie może posunąć tego etapu naprzód. Posuwa go naprzód odbudowanie połączenia z PowerShell z propozycją, którą brama rzeczywiście oferuje, ponieważ kreator w Ustawieniach wybiera transformacje IPsec po cichu i nigdy nie pokazuje, co wybrał. To jest instrukcja do tego: utwórz profil, przypnij propozycję, a następnie użyj tabeli etapów, aby następny kod coś ci powiedział.

Utwórz profil bez kreatora

Add-VpnConnection zapisuje natywny wpis książki telefonicznej, więc wynikiem jest ten sam obiekt, który aplikacja Ustawienia będzie później edytować. Uruchom go z podniesionej sesji, gdy połączenie ma istnieć dla każdego konta na maszynie, albo z kontekstu użytkownika, gdy ma pozostać prywatne:

Add-VpnConnection -Name "Contoso L2TP" `
  -ServerAddress 203.0.113.10 `
  -TunnelType L2tp `
  -EncryptionLevel Required `
  -AuthenticationMethod MSChapv2 `
  -RememberCredential -Force

Dopasuj -AuthenticationMethod do tego, co oferuje brama. MSChapv2, EAP i PAP nie są wymienne, a profil, który wymaga metody, której serwer nie zaakceptuje, zawodzi, zanim zostanie sprawdzony jakikolwiek rekord użytkownika. Zachowaj -EncryptionLevel Required dla wszystkiego prawdziwego; Optional pozwala Windows zaakceptować nieszyfrowany tunel, jeśli druga strona go zaproponuje, co jest skrótem laboratoryjnym, a nie ustawieniem do wysłania.

Jeśli przekażesz -L2tpPsk, ten wstępnie udostępniony klucz zostanie zapisany w profilu na dysku, skąd każdy, kto może odczytać profil na tej maszynie, może go odzyskać. Używaj certyfikatu do uwierzytelniania drugiej strony, gdy brama to obsługuje, a gdy PSK jest nieunikniony, trzymaj go poza repozytorium i poza historią powłoki, zamiast wklejać go do każdego uruchomienia wdrażania.

Przypnij propozycję zamiast akceptować wartości domyślne

Windows sam wypełnia transformacje IPsec, dlatego dwie maszyny z pozornie identycznym połączeniem mogą wobec tej samej bramy zawieść inaczej. Set-VpnConnectionIPsecConfiguration to obsługiwany sposób ich przypięcia:

Set-VpnConnectionIPsecConfiguration -ConnectionName "Contoso L2TP" `
  -AuthenticationTransformConstants SHA256128 `
  -CipherTransformConstants AES128 `
  -EncryptionMethod AES128 `
  -IntegrityCheckMethod SHA256 `
  -DHGroup Group14 `
  -PfsGroup None `
  -PassThru -Force

Ten zestaw to jeden typowy układ L2TP/IPsec, a nie uniwersalna odpowiedź. Każdy parametr przyjmuje stałą listę wartości, a kombinacja, której platforma nie potrafi zmapować, wraca jako błąd polecenia cmdlet zamiast cicho osłabionego profilu. Traktuj taki błąd jako stwierdzenie o wartościach, a nie o twoich uprawnieniach.

Skopiuj propozycję z dokumentacji bramy albo z jej aktywnych ustawień fazy 1 i fazy 2 i zmieniaj jedno pole naraz tylko wtedy, gdy brama rejestruje odrzucane transformacje. Przechodzenie przez pięć pól daje połączenie, które działa przypadkiem, oraz zapis, który niczego nie wyjaśnia następnej osobie.

Czytaj awarię według etapu, nie według tekstu błędu

789 należy do rodziny kodów, które w oknie klienta wyglądają wszystkie tak samo. Przypisz kod do etapu, do którego należy, zanim ponownie dotkniesz profilu:

What you seeStage that failedCheck first
Nothing happens, then a timeoutNo IKE response at allServer address, UDP 500 and 4500 reachability, NAT traversal on the gateway
Error 789IKE security exchangeProposal, pre-shared key, certificate trust and client clock
Error 691 or a repeated password promptUser authenticationAccount state, domain, RADIUS or NPS policy
Tunnel up, some hosts unreachableRouting or DNS after PPPSplit-tunnel routes, pushed DNS, remote subnet mask

Znaczenie mają tu dwie role poświadczeń. Wstępnie udostępniony klucz lub certyfikat uwierzytelnia strony nawzajem, natomiast MSChapv2 lub EAP uwierzytelnia ciebie wewnątrz tunelu. Resetowanie hasła użytkownika nie naprawi pierwszego, nowy wspólny sekret nie naprawi drugiego, a zmiana obu naraz niszczy dowód, który był błędny.

Na ścieżce certyfikatu sprawdź zegar klienta, łańcuch zaufania i tożsamość, której oczekuje brama, zanim rozważysz złagodzenie walidacji. Wyłączenie walidacji zamienia widoczny 789 w tunel, który łączy się, ufając niewłaściwej stronie, i nic w kliencie ci nie powie, że tak się stało. lista błędów dostępu zdalnego firmy Microsoft jest referencją dla samych kodów i oddziela awarie warstwy zabezpieczeń od awarii logowania.

Zweryfikuj z obu stron, zanim uznasz to za naprawione

Odczytaj profil z powrotem, ale nie oczekuj propozycji w wyniku. Get-VpnConnection raportuje nazwę, adres serwera, typ tunelu, poziom szyfrowania i metodę uwierzytelniania i nic nie wie o transformacjach, więc odczyt potwierdza, że wpis istnieje i wskazuje właściwego hosta:

Get-VpnConnection -Name "Contoso L2TP" |
  Select-Object Name, ServerAddress, TunnelType, EncryptionLevel, AuthenticationMethod

Wybierz numer z wiersza poleceń, aby dostać liczbę zamiast okna dialogowego: rasdial "Contoso L2TP" zwraca ten sam kod błędu, który zwróciłby interfejs, a rasdial "Contoso L2TP" /disconnect czyści go między próbami. Następnie odczytaj stronę bramy dla tej samej próby. ipsec statusall strongSwan albo dziennik IKE routera podaje, która propozycja dotarła i która została odrzucona, a porównanie tego z wartościami polecenia cmdlet to jedyny krok, który naprawdę dowodzi, że oba końce się zgodziły.

Udane połączenie nie jest metą. Otwórz aplikację, na której zależy użytkownikowi, ponieważ trasy, wypychany DNS i ustawienia tunelu dzielonego zawodzą po podniesieniu tunelu i nie dają żadnego okna błędu.

Zautomatyzuj to i wycofaj się czysto

Instalacja bez nadzoru jest powodem, by to skryptować, a krok wybierania numeru jest miejscem, w którym wyciekają poświadczenia. rasdial przyjmuje je w swoim wierszu poleceń, gdzie inni lokalni użytkownicy i większość kolektorów dzienników mogą je odczytać:

subprocess.run(["rasdial", "Contoso L2TP"], check=True)

Preferuj poświadczenie ograniczone do konta, które wykonuje zadanie, albo pozwól profilowi zapisać je z -RememberCredential, zamiast przekazywać hasło jako argument w zadaniu zaplanowanym. Same polecenia wdrażania są bezpieczne do powtarzania z -Force, ale chętnie nadpiszą starą propozycję, więc ponowne uruchomienie pomaga tylko wtedy, gdy skrypt niesie aktualne wartości.

Profile przetrwają restarty i żyją dłużej niż konfiguracja bramy, dla której je zbudowano. Gdy propozycja bramy się zmienia, usuń wpis i utwórz go od nowa, zamiast nakładać drugi zestaw wartości: Remove-VpnConnection -Name "Contoso L2TP" -Force, a następnie powtórz oba polecenia cmdlet z nowym zestawem.

Zamknij pętlę czterema kontrolami, które żyją obok skryptu: Get-VpnConnection pokazuje oczekiwany typ tunelu i poziom szyfrowania; brama rejestruje ukończoną fazę 1 i fazę 2 dla adresu twojego klienta; rasdial zwraca sukces i aplikacja się otwiera; a propozycja zapisana w skrypcie zgadza się z bieżącym ustawieniem bramy. Gdy przyjdzie następny 789, to porównanie zajmie minuty zamiast popołudnia.

Powiązane artykuły