Chyba 789 L2TP/IPsec ve Windows: vytvořte profil a zafixujte návrh
Chyba 789 selhává v IPsec výměně, ne u hesla. Vytvořte profil L2TP skriptem, zafixujte návrh a čtěte další kódy podle fáze.
Chyba 789 u připojení L2TP ve Windows znamená, že tunel zemřel uvnitř bezpečnostní výměny IPsec, což se děje dávno předtím, než Windows někam pošle heslo uživatele. Opakování hesla nebo jeho reset v adresáři tuto fázi neposune dál. Posune ji přestavba připojení z PowerShellu s návrhem, který brána skutečně nabízí, protože průvodce v Nastavení vybírá transformace IPsec tiše a nikdy vám neukáže, co vybral. Tohle je runbook pro to: vytvořte profil, zafixujte návrh a pak použijte tabulku fází, aby vám další kód něco řekl.
Vytvořte profil bez průvodce
Add-VpnConnection zapisuje nativní záznam do telefonního seznamu, takže výsledkem je stejný objekt, který později upravuje aplikace Nastavení. Spouštějte ho z elevované relace, když má připojení existovat pro každý účet na počítači, nebo z uživatelského kontextu, když má zůstat soukromé:
Add-VpnConnection -Name "Contoso L2TP" `
-ServerAddress 203.0.113.10 `
-TunnelType L2tp `
-EncryptionLevel Required `
-AuthenticationMethod MSChapv2 `
-RememberCredential -Force
Slaďte -AuthenticationMethod s tím, co brána nabízí. MSChapv2, EAP a PAP nejsou zaměnitelné a profil, který vyžaduje metodu, kterou server nepřijme, selže ještě předtím, než se podívá na jakýkoli uživatelský záznam. Ponechte -EncryptionLevel Required pro cokoli skutečného; Optional umožňuje Windows přijmout nešifrovaný tunel, pokud jej protistrana nabídne, což je laboratorní zkratka, ne nastavení k nasazení.
Pokud předáte -L2tpPsk, tento předem sdílený klíč se zapíše do profilu na disku, odkud ho může obnovit kdokoli, kdo na tomto počítači umí profil přečíst. Používejte certifikát pro autentizaci protistrany, když ho brána podporuje, a když je PSK nevyhnutelný, držte ho mimo repozitář a mimo historii shellu, místo abyste ho vkládali do každého provisioningového běhu.
Zafixujte návrh místo přijímání výchozích hodnot
Windows transformace IPsec vyplňuje sám, a proto dva počítače se zdánlivě identickým připojením mohou proti stejné bráně selhat různě. Set-VpnConnectionIPsecConfiguration je podporovaný způsob, jak je zafixovat:
Set-VpnConnectionIPsecConfiguration -ConnectionName "Contoso L2TP" `
-AuthenticationTransformConstants SHA256128 `
-CipherTransformConstants AES128 `
-EncryptionMethod AES128 `
-IntegrityCheckMethod SHA256 `
-DHGroup Group14 `
-PfsGroup None `
-PassThru -Force
Tato sada je jedno běžné uspořádání L2TP/IPsec, ne univerzální odpověď. Každý parametr přijímá pevný seznam hodnot a kombinace, kterou platforma nedokáže zmapovat, se vrátí jako chyba rutiny cmdlet místo tiše oslabeného profilu. Berte takovou chybu jako tvrzení o hodnotách, ne o vašich oprávněních.
Zkopírujte návrh z dokumentace brány nebo z jejích živých nastavení fáze 1 a fáze 2 a měňte jedno pole po druhém jen tehdy, když brána loguje transformace, které odmítá. Procházení pěti polí vytvoří připojení, které funguje náhodou, a záznam, který dalšímu člověku nic nevysvětlí.
Čtěte selhání podle fáze, ne podle textu chyby
789 patří do rodiny kódů, které v dialogu klienta vypadají všechny stejně. Než na profil znovu sáhnete, přiřaďte kód k fázi, do které patří:
| What you see | Stage that failed | Check first |
|---|---|---|
| Nothing happens, then a timeout | No IKE response at all | Server address, UDP 500 and 4500 reachability, NAT traversal on the gateway |
| Error 789 | IKE security exchange | Proposal, pre-shared key, certificate trust and client clock |
| Error 691 or a repeated password prompt | User authentication | Account state, domain, RADIUS or NPS policy |
| Tunnel up, some hosts unreachable | Routing or DNS after PPP | Split-tunnel routes, pushed DNS, remote subnet mask |
Dvě role přihlašovacích údajů jsou tu důležité. Předem sdílený klíč nebo certifikát autentizuje protistrany navzájem, zatímco MSChapv2 nebo EAP autentizuje vás uvnitř tunelu. Reset uživatelského hesla nemůže opravit první, nové sdílené tajemství nemůže opravit druhé a změna obojího najednou zničí důkaz o tom, které bylo špatně.
Na cestě s certifikátem zkontrolujte hodiny klienta, řetězec důvěry a identitu, kterou brána očekává, než začnete uvažovat o zmírnění validace. Vypnutí validace promění viditelnou 789 v tunel, který se připojí, i když důvěřuje špatné protistraně, a nic v klientovi vám neřekne, že se to stalo. seznam chyb vzdáleného přístupu od Microsoftu je referencí pro samotné kódy a odděluje selhání bezpečnostní vrstvy od selhání přihlášení.
Ověřte z obou stran, než to označíte za opravené
Přečtěte profil zpět, ale nečekejte ve výstupu návrh. Get-VpnConnection hlásí název, adresu serveru, typ tunelu, úroveň šifrování a metodu ověřování a o transformacích neví nic, takže čtení potvrdí, že záznam existuje a míří na správného hostitele:
Get-VpnConnection -Name "Contoso L2TP" |
Select-Object Name, ServerAddress, TunnelType, EncryptionLevel, AuthenticationMethod
Volejte z příkazového řádku, abyste dostali číslo místo dialogu: rasdial "Contoso L2TP" vrací stejný kód selhání, jaký by vrátilo rozhraní, a rasdial "Contoso L2TP" /disconnect ho mezi pokusy vymaže. Poté přečtěte stranu brány pro tentýž pokus. ipsec statusall strongSwanu nebo IKE log routeru uvádí, který návrh dorazil a který byl odmítnut, a porovnání s hodnotami rutiny cmdlet je jediný krok, který skutečně dokazuje, že se oba konce shodly.
Úspěšné připojení není cílová čára. Otevřete aplikaci, na které uživateli záleží, protože trasy, vynucený DNS a nastavení rozděleného tunelu selhávají po postavení tunelu a nevytvářejí žádný chybový dialog.
Automatizujte to a čistě se vracejte
Důvodem, proč to skriptovat, je bezobslužné nastavení, a krok vytáčení je místem, kde unikají přihlašovací údaje. rasdial je bere na svém příkazovém řádku, kde je mohou přečíst jiní místní uživatelé a většina sběračů logů:
subprocess.run(["rasdial", "Contoso L2TP"], check=True)
Preferujte údaj omezený na účet, který úlohu spouští, nebo nechte profil, ať ho uloží pomocí -RememberCredential, před předáváním hesla jako argumentu v naplánované úloze. Samotné provisioningové příkazy lze bezpečně opakovat s -Force, ale rády překryjí starý návrh, takže opakované spuštění pomůže jen tehdy, když skript nese aktuální hodnoty.
Profily přežívají restartování a žijí déle než konfigurace brány, pro kterou byly vytvořeny. Když se návrh brány změní, odeberte záznam a vytvořte ho znovu, místo abyste navrstvili druhou sadu hodnot: Remove-VpnConnection -Name "Contoso L2TP" -Force, poté zopakujte dvě rutiny cmdlet s novou sadou.
Uzavřete smyčku čtyřmi kontrolami, které žijí vedle skriptu: Get-VpnConnection ukazuje očekávaný typ tunelu a úroveň šifrování; brána zaznamenává dokončenou fázi 1 a fázi 2 pro adresu vašeho klienta; rasdial vrací úspěch a aplikace se otevře; a návrh zaznamenaný ve skriptu odpovídá aktuálnímu nastavení brány. Když dorazí další 789, toto porovnání zabere minuty místo odpoledne.