Budowa VPN IKEv2 w PowerShell z certyfikatem komputera
Umiejscowienie certyfikatu, prefiksy tras i dane uwierzytelniające EAP to miejsca, w których skrypt IKEv2 zawodzi. Zbuduj tunel w PowerShell i weryfikuj każdy etap osobno.
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.