Windows dostarcza klienta IKEv2, którym PowerShell steruje od początku do końca, więc działający tunel nie potrzebuje GUI ani oprogramowania firm trzecich. Niemal każda awaria pochodzi z trzech miejsc: gdzie trafił certyfikat, jak zapisano prefiksy tras i czego oczekuje wybrana metoda EAP. Zajmij się nimi w tej kolejności, bo każdy można sprawdzić, zanim zacznie się następny, a późniejszy błąd ukryje wcześniejszy.

Tunele z certyfikatem komputera istnieją po to, by startować przed zalogowaniem kogokolwiek, dlatego tożsamość zwykle musi mieszkać w magazynie komputera, a nie użytkownika.

Najpierw certyfikat, potem tunel

Znaczenie mają dwa importy. Tożsamość klienta trafia do Cert:\LocalMachine\My przez Import-PfxCertificate, a wystawiający CA trafia do Cert:\LocalMachine\Root przez Import-Certificate. Sam certyfikat końcowy nie dowodzi żadnego łańcucha, więc pominięcie drugiego importu zostawia weryfikację bez podstawy. Poza obecnością klucz prywatny musi być dołączony, a konto komputera musi mieć prawo go czytać. Get-ChildItem Cert:\LocalMachine\My wymienia, co dotarło; porównuj odciski, a nie nazwy podmiotów, bo niemal identyczne podmioty są częste.

Przed wdrożeniem sprawdź rozszerzone przeznaczenie klucza. Uwierzytelnianie klienta to zwykły wymóg dla tożsamości komputera IKEv2, a druga strona musi ufać CA, który ją podpisał. Tożsamość w magazynie użytkownika nie istnieje dla połączenia w kontekście komputera.

Utwórz profil i jego trasy

Add-VpnConnection -Name "Office IKEv2" -ServerAddress vpn.example.com -TunnelType Ikev2 -EncryptionLevel Required -AuthenticationMethod MachineCertificate -AllUserConnection zapisuje profil. Przełącznik -AllUserConnection publikuje go w globalnej książce telefonicznej, co pasuje do maszyny współdzielonej lub zarządzanej jako usługa; pomiń go dla jednego użytkownika. Jakikolwiek adres podasz, musi odpowiadać nazwie DNS w certyfikacie serwera, inaczej błąd pojawi się dopiero po podniesieniu tunelu. Następnie prefiksy dodaje się pojedynczo za pomocą Add-VpnConnectionRoute, i tylko te, których projekt naprawdę potrzebuje.

IPv6 ma osobliwość: Windows odrzuca ::/0 jako trasę VPN, więc ::/1 i 8000::/1 razem pokrywają tę samą przestrzeń adresową. Kierowanie prefiksu nic też nie daje na zdalnym firewallu, więc lista prefiksów i polityka firewala pozostają osobnymi dokumentami.

Dane uwierzytelniające należą do metody uwierzytelniania

Profil z certyfikatem komputera w ogóle nie potrzebuje sekretu użytkownika, a profil EAP-MSCHAPv2 potrzebuje. W drugim przypadku moduł VPNCredentialsHelper udostępnia Set-VpnConnectionUsernamePassword, i chce zwykłego tekstu: $cred.Password to SecureString, więc najpierw rozpakuj go za pomocą GetNetworkCredential().Password. Zainstaluj moduł wszędzie tam, gdzie działa polecenie, nie tylko na stacji, na której go napisano. EAP-TLS lub metoda niestandardowa w ogóle nie używają tego cmdletu; zamiast tego przyjmują XML konfiguracji EAP.

rasdial "Office IKEv2" podnosi połączenie z powłoki, co jest najszybszym sposobem zobaczenia wyniku na pierwszym planie, a nie w dzienniku zdarzeń.

Czego nie dowodzi połączony tunel

Stan połączenia obejmuje wymianę IKE i krok uwierzytelniania i nic więcej. Zachowanie DNS, ścieżka do hosta prywatnego i zdalny firewall wciąż nie są udowodnione. Pracuj na zewnątrz: adapter tunelu, potem wyszukanie trasy dla adresu prywatnego, potem jedna usługa, do której masz prawo. Pierwsza nieudana obserwacja wskazuje warstwę do zbadania.

Zmieniając profil, usuń poprzedni za pomocą Remove-VpnConnection -Name "Office IKEv2" -Force, zanim utworzysz go ponownie; inaczej nieaktualne ustawienia i trasy przetrwają edycję. Jeśli nadal się nie łączy, porównaj odcisk zapisany w profilu z tym w magazynie, bo Windows może trzymać odwołanie do tożsamości, która w międzyczasie została zastąpiona pod niezmienioną nazwą podmiotu.

Trzymaj odcisk, metodę EAP i listę tras obok profilu. Razem wyjaśniają większość tego, co później idzie nie tak.

Powiązane artykuły