Vytvořte IKEv2 VPN v PowerShellu se strojovým certifikátem
Umístění certifikátu, prefixy tras a přihlašovací údaje EAP jsou místa, kde skript IKEv2 selhává. Vytvořte tunel v PowerShellu a ověřte každou fázi zvlášť.
Windows dodává klienta IKEv2, kterého PowerShell ovládá od začátku do konce, takže funkční tunel nepotřebuje GUI ani software třetích stran. Téměř každé selhání pochází ze tří míst: kam certifikát doputoval, jak byly zapsány prefixy tras a co očekává zvolená metoda EAP. Řešte je v tomto pořadí, protože každé lze ověřit dřív, než začne další, a pozdější chyba zakryje dřívější.
Tunely se strojovým certifikátem existují proto, aby se spustily dřív, než se kdokoli přihlásí, a proto musí identita obvykle sídlit v úložišti počítače, nikoli uživatele.
Nejdřív certifikát, potom tunel
Důležité jsou dva importy. Identita klienta jde do Cert:\LocalMachine\My přes Import-PfxCertificate a vydávající CA do Cert:\LocalMachine\Root přes Import-Certificate. Samotný koncový certifikát neprokazuje žádný řetěz, takže vynechání druhého importu nechá ověření bez podkladu. Kromě přítomnosti musí být připojen soukromý klíč a účet počítače jej musí smět číst. Get-ChildItem Cert:\LocalMachine\My vypíše, co dorazilo; porovnávejte otisky, nikoli subjekty, protože téměř shodné subjekty jsou běžné.
Před nasazením zkontrolujte rozšířené použití klíče. Ověření klienta je obvyklý požadavek pro strojovou identitu IKEv2 a druhá strana musí důvěřovat CA, která ji podepsala. Identita v uživatelském úložišti pro připojení v kontextu počítače neexistuje.
Vytvořte profil a jeho trasy
Add-VpnConnection -Name "Office IKEv2" -ServerAddress vpn.example.com -TunnelType Ikev2 -EncryptionLevel Required -AuthenticationMethod MachineCertificate -AllUserConnection zapíše profil. Přepínač -AllUserConnection jej zveřejní v globálním telefonním seznamu, což se hodí pro sdílený nebo službou spravovaný stroj; pro jednoho uživatele jej vynechte. Jakoukoli adresu předáte, musí odpovídat názvu DNS v certifikátu serveru, jinak se chyba objeví až po navázání tunelu. Prefixy se pak přidávají po jednom pomocí Add-VpnConnectionRoute, a to jen ty, které návrh skutečně potřebuje.
IPv6 má zvláštnost: Windows odmítá ::/0 jako trasu VPN, takže ::/1 a 8000::/1 dohromady pokrývají stejný adresní prostor. Směrování prefixu také na vzdáleném firewallu nic nepovolí, takže seznam prefixů a politika firewallu zůstávají oddělenými dokumenty.
Přihlašovací údaje patří k metodě ověřování
Profil se strojovým certifikátem nepotřebuje žádné uživatelské tajemství, kdežto profil EAP-MSCHAPv2 ano. Pro druhý případ modul VPNCredentialsHelper poskytuje Set-VpnConnectionUsernamePassword a chce prostý text: $cred.Password je SecureString, takže jej nejdřív rozbalte pomocí GetNetworkCredential().Password. Modul instalujte všude, kde se příkaz spouští, nejen na stanici, kde vznikl. EAP-TLS nebo vlastní metoda tento cmdlet vůbec nepoužívá; místo toho přebírá konfigurační XML pro EAP.
rasdial "Office IKEv2" naváže spojení z shellu, což je nejrychlejší způsob, jak výsledek vidět v popředí, a ne v protokolu událostí.
Co připojený tunel neprokazuje
Stav připojení pokrývá výměnu IKE a krok ověření a nic víc. Chování DNS, cesta k soukromému hostiteli i vzdálený firewall jsou stále neprokázané. Postupujte směrem ven: adaptér tunelu, pak hledání trasy pro soukromou adresu, pak jedna služba, kterou smíte použít. První pozorování, které selže, určí vrstvu k vyšetření.
Když měníte profil, smažte předchozí pomocí Remove-VpnConnection -Name "Office IKEv2" -Force, než jej znovu vytvoříte; jinak po úpravě zůstanou zastaralá nastavení i trasy. Pokud se stále nepřipojuje, porovnejte otisk zaznamenaný v profilu s tím v úložišti, protože Windows může držet odkaz na identitu, která byla mezitím nahrazena pod nezměněným subjektem.
Mějte otisk, metodu EAP a seznam tras vedle profilu. Dohromady vysvětlují většinu toho, co se později pokazí.