Eroarea 789 L2TP/IPsec în Windows: creați profilul și fixați propunerea
Eroarea 789 eșuează în schimbul IPsec, nu la parolă. Scriptați profilul L2TP, fixați propunerea și citiți codurile ulterioare pe etapă.
Eroarea 789 pe o conexiune L2TP din Windows înseamnă că tunelul a murit în interiorul schimbului de securitate IPsec, ceea ce se întâmplă mult înainte ca Windows să trimită o parolă de utilizator oriunde. Reîncercarea parolei, sau resetarea ei în director, nu poate duce mai departe acea etapă. Ce o duce mai departe este reconstruirea conexiunii din PowerShell cu propunerea pe care gateway-ul o oferă de fapt, pentru că expertul din Setări alege transformările IPsec în tăcere și nu vă arată niciodată ce a ales. Acesta este ghidul pentru asta: creați profilul, fixați propunerea, apoi folosiți un tabel de etape ca următorul cod să vă spună ceva.
Creați profilul fără expert
Add-VpnConnection scrie o intrare nativă în cartea de telefon, deci rezultatul este același obiect pe care aplicația Setări îl va edita mai târziu. Rulați-l dintr-o sesiune ridicată când conexiunea trebuie să existe pentru fiecare cont de pe mașină, sau din contextul utilizatorului când trebuie să rămână privată:
Add-VpnConnection -Name "Contoso L2TP" `
-ServerAddress 203.0.113.10 `
-TunnelType L2tp `
-EncryptionLevel Required `
-AuthenticationMethod MSChapv2 `
-RememberCredential -Force
Potriviți -AuthenticationMethod cu ceea ce oferă gateway-ul. MSChapv2, EAP și PAP nu sunt interschimbabile, iar un profil care cere o metodă pe care serverul nu o va accepta eșuează înainte de a fi consultat vreun înregistrare de utilizator. Păstrați -EncryptionLevel Required pentru orice lucru real; Optional lasă Windows să accepte un tunel necriptat dacă partenerul oferă unul, ceea ce este o scurtătură de laborator, nu o setare de livrat.
Dacă transmiteți -L2tpPsk, acea cheie prepartajată este scrisă în profilul de pe disc, de unde oricine poate citi profilul pe acea mașină o poate recupera. Folosiți un certificat pentru autentificarea partenerului când gateway-ul îl susține, iar când un PSK este inevitabil, țineți-l în afara depozitului și a istoricului shell-ului în loc să îl lipiți în fiecare rulare de provizionare.
Fixați propunerea în loc să acceptați valorile implicite
Windows completează singur transformările IPsec, de aceea două mașini cu o conexiune aparent identică pot eșua diferit față de același gateway. Set-VpnConnectionIPsecConfiguration este modalitatea acceptată de a le fixa:
Set-VpnConnectionIPsecConfiguration -ConnectionName "Contoso L2TP" `
-AuthenticationTransformConstants SHA256128 `
-CipherTransformConstants AES128 `
-EncryptionMethod AES128 `
-IntegrityCheckMethod SHA256 `
-DHGroup Group14 `
-PfsGroup None `
-PassThru -Force
Acest set este o aranjare L2TP/IPsec obișnuită, nu un răspuns universal. Fiecare parametru acceptă o listă fixă de valori, iar o combinație pe care platforma nu o poate mapa revine ca eroare de cmdlet în loc de un profil slăbit în tăcere. Tratați o astfel de eroare ca pe o afirmație despre valori, nu despre permisiunile dumneavoastră.
Copiați propunerea din documentația gateway-ului sau din setările lui active de faza 1 și faza 2 și schimbați câte un singur câmp numai în timp ce gateway-ul înregistrează transformările pe care le refuză. Trecerea prin cinci câmpuri produce o conexiune care funcționează din întâmplare și o înregistrare care nu explică nimic următoarei persoane.
Citiți o eroare după etapă, nu după textul erorii
789 aparține unei familii de coduri care în dialogul clientului arată toate la fel. Puneți codul în dreptul etapei căreia îi aparține înainte de a atinge din nou profilul:
| 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 |
Aici contează cele două roluri ale acreditărilor. O cheie prepartajată sau un certificat autentifică părțile una față de cealaltă, în timp ce MSChapv2 sau EAP vă autentifică pe dumneavoastră în interiorul tunelului. Resetarea unei parole de utilizator nu poate repara prima, un nou secret partajat nu poate repara a doua, iar schimbarea ambelor deodată distruge dovada care anume a fost greșită.
Pe calea certificatului, verificați ceasul clientului, lanțul de încredere și identitatea pe care o așteaptă gateway-ul înainte de a lua în calcul relaxarea validării. Dezactivarea validării transformă un 789 vizibil într-un tunel care se conectează în timp ce are încredere în partenerul greșit, iar nimic din client nu vă va spune că s-a întâmplat asta. lista de erori de acces la distanță Microsoft este referința pentru codurile înseși și separă eșecurile stratului de securitate de eșecurile de autentificare.
Verificați de la ambele capete înainte de a spune că e reparat
Citiți profilul înapoi, dar nu vă așteptați la propunere în ieșire. Get-VpnConnection raportează numele, adresa serverului, tipul tunelului, nivelul de criptare și metoda de autentificare și nu știe nimic despre transformări, așa că recitirea confirmă că intrarea există și indică gazda corectă:
Get-VpnConnection -Name "Contoso L2TP" |
Select-Object Name, ServerAddress, TunnelType, EncryptionLevel, AuthenticationMethod
Formați din linia de comandă ca să obțineți un număr în loc de un dialog: rasdial "Contoso L2TP" returnează același cod de eșec pe care l-ar returna interfața, iar rasdial "Contoso L2TP" /disconnect îl curăță între încercări. Apoi citiți partea gateway-ului pentru aceeași încercare. Un ipsec statusall de la strongSwan sau un jurnal IKE al routerului spune ce propunere a ajuns și care a fost refuzată, iar compararea aceasta cu valorile cmdlet este singurul pas care dovedește cu adevărat că cele două capete au fost de acord.
O conexiune reușită nu este linia de sosire. Deschideți aplicația care contează pentru utilizator, pentru că rutele, DNS-ul împins și setările de tunel divizat eșuează după ce tunelul este sus și nu produc niciun dialog de eroare.
Automatizați-l și reveniți curat
Instalarea nesupravegheată este motivul pentru a scrie un script, iar pasul de formare este locul unde se scurg acreditările. rasdial le ia pe propria linie de comandă, unde alți utilizatori locali și majoritatea colectorilor de jurnale le pot citi:
subprocess.run(["rasdial", "Contoso L2TP"], check=True)
Preferați o acreditare limitată la contul care rulează sarcina, sau lăsați profilul să o stocheze cu -RememberCredential, în loc să transmiteți o parolă ca argument într-o sarcină planificată. Comenzile de provizionare în sine sunt sigure de repetat cu -Force, dar vor suprascrie bucuros o propunere veche, așa că o rerulare ajută doar dacă scriptul poartă valorile actuale.
Profilurile persistă între reporniri și trăiesc mai mult decât configurația gateway-ului pentru care au fost create. Când propunerea gateway-ului se mută, eliminați intrarea și creați-o din nou în loc să suprapuneți un al doilea set de valori: Remove-VpnConnection -Name "Contoso L2TP" -Force, apoi repetați cele două cmdlet-uri cu noul set.
Închideți bucla cu patru verificări care trăiesc lângă script: Get-VpnConnection arată tipul de tunel și nivelul de criptare așteptate; gateway-ul înregistrează o fază 1 și o fază 2 finalizate pentru adresa clientului dumneavoastră; rasdial returnează succes și aplicația se deschide; iar propunerea înregistrată în script corespunde setării actuale a gateway-ului. Când vine următorul 789, comparația aceea durează minute în loc de o după-amiază.