L2TP/IPsec-feil 789 på Windows: bygg profilen og lås framlegget
Feil 789 feilar i IPsec-utvekslinga, ikkje ved passordet. Skript L2TP-profilen, lås framlegget og les seinare kodar etter trinn.
Feil 789 på ei Windows L2TP-tilkopling tyder at tunnelen døydde inne i IPsec-tryggleiksuvekslinga, noko som skjer lenge før Windows sender eit brukarpassord nokon stad. Å prøve passordet på nytt, eller nullstille det i katalogen, kan ikkje flytte det trinnet framover. Det som flyttar det, er å byggje tilkoplinga på nytt frå PowerShell med framlegget gatewayen faktisk tilbyr, fordi vegvisaren i Innstillingar vel IPsec-transformasjonane i stillheit og aldri viser deg kva han valde. Dette er runboka for det: bygg profilen, lås framlegget, og bruk deretter ein trinntabell slik at den neste koden fortel deg noko.
Bygg profilen utan vegvisaren
Add-VpnConnection skriv ein innebygd telefonbokoppføring, så resultatet er det same objektet som Innstillingar-appen redigerer seinare. Køyr han frå ei forhøgd økt når tilkoplinga skal finnast for kvar konto på maskinen, eller frå brukarkonteksten når ho skal halde fram som privat:
Add-VpnConnection -Name "Contoso L2TP" `
-ServerAddress 203.0.113.10 `
-TunnelType L2tp `
-EncryptionLevel Required `
-AuthenticationMethod MSChapv2 `
-RememberCredential -Force
Tilpass -AuthenticationMethod til det gatewayen tilbyr. MSChapv2, EAP og PAP kan ikkje bytast om, og ein profil som krev ein metode serveren ikkje godtek, feilar før nokon brukaroppføring blir slått opp. Hald -EncryptionLevel Required for alt ekte; Optional lèt Windows godta ein ukryptert tunnel om motparten tilbyr ein, noko som er ein laboratoriegenveg og ikkje ei innstilling å sende ut.
Viss du sender -L2tpPsk, blir den førehandsdelinga nøkkelen skriven inn i profilen på disken, der kven som helst som kan lese profilen på den maskinen kan gjenopprette han. Bruk eit sertifikat for å autentisere motparten når gatewayen støttar det, og når ein PSK er uunngåeleg, hald han utanfor repositoriet og utanfor skallhistorikken i staden for å lime han inn i kvar klargjeringskøyring.
Lås framlegget i staden for å godta standardverdiane
Windows fyller ut IPsec-transformasjonane sjølv, og difor kan to maskinar med ei tilsynelatande identisk tilkopling feile ulikt mot den same gatewayen. Set-VpnConnectionIPsecConfiguration er den støtta måten å låse dei på:
Set-VpnConnectionIPsecConfiguration -ConnectionName "Contoso L2TP" `
-AuthenticationTransformConstants SHA256128 `
-CipherTransformConstants AES128 `
-EncryptionMethod AES128 `
-IntegrityCheckMethod SHA256 `
-DHGroup Group14 `
-PfsGroup None `
-PassThru -Force
Det settet er eitt vanleg L2TP/IPsec-oppsett, ikkje eit universelt svar. Kvar parameter godtek ei fast liste med verdiar, og ein kombinasjon plattforma ikkje kan kartleggje kjem tilbake som ein cmdlet-feil i staden for ein stille svekt profil. Handsame ein slik feil som ei utsegn om verdiane, ikkje om løyva dine.
Kopier framlegget frå gatewaydokumentasjonen eller frå dei levande fase 1- og fase 2-innstillingane hans, og endre eitt felt om gongen berre medan gatewayen loggar transformasjonane han avviser. Å gå gjennom fem felt gir ei tilkopling som verkar ved eit uhell og ei oppføring som ikkje forklarer noko for den neste personen.
Les ein feil etter trinn, ikkje etter feiltekst
789 høyrer til ein familie kodar som alle ser like ut i klientdialogen. Plasser koden ved trinnet han høyrer til før du rører profilen igjen:
| 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 |
Dei to legitimasjonsrollene betyr noko her. Ein førehandsdelt nøkkel eller eit sertifikat autentiserer partane mot kvarandre, medan MSChapv2 eller EAP autentiserer deg inne i tunnelen. Å nullstille eit brukarpassord kan ikkje rette det første, ein ny delt hemmelegheit kan ikkje rette det andre, og å endre begge på ein gong øydelegg beviset for kven som var feil.
På sertifikatvegen må du kontrollere klientklokka, tillitskjeda og identiteten gatewayen ventar før du vurderer å lempe valideringa. Å slå av validering gjer ein synleg 789 om til ein tunnel som koplar til medan han stolar på feil motpart, og ingenting i klienten vil fortelje deg at det skjedde. Microsoft si liste over feil ved fjern tilgang er referansen for kodane sjølve, og ho skil feila i tryggleikslaget frå innloggingsfeila.
Kontroller frå begge endar før du kallar det retta
Les profilen tilbake, men ikkje vent framlegget i utdataa. Get-VpnConnection rapporterer namn, serveradresse, tunneltype, krypteringsnivå og autentiseringsmetode, og veit ingenting om transformasjonar, så tilbakelesinga stadfester at oppføringa finst og peikar på rett vert:
Get-VpnConnection -Name "Contoso L2TP" |
Select-Object Name, ServerAddress, TunnelType, EncryptionLevel, AuthenticationMethod
Ring frå kommandolinja slik at du får eit nummer i staden for ein dialog: rasdial "Contoso L2TP" returnerer den same feilkoden som grensesnittet ville, og rasdial "Contoso L2TP" /disconnect ryddar han mellom forsøk. Les deretter sida til gatewayen for det same forsøket. Ein ipsec statusall frå strongSwan eller ein IKE-logg frå rutaren seier kva framlegg som kom, og kva som vart avvist, og å samanlikne det med cmdlet-verdiane er det einaste trinnet som faktisk bevisar at dei to endane vart samde.
Ei vellukka tilkopling er ikkje målstreken. Opne programmet brukaren bryr seg om, fordi ruter, dytta DNS og innstillingar for delt tunnel feilar etter at tunnelen er oppe og gir ingen feildialog i det heile.
Automatiser det, og rull reint tilbake
Uovervaka oppsett er grunnen til å skripte dette, og oppringingstrinnet er der legitimasjonen lek. rasdial tek dei på si eiga kommandolinje, der andre lokale brukarar og dei fleste loggsamlarar kan lese dei:
subprocess.run(["rasdial", "Contoso L2TP"], check=True)
Føretrekk ein legitimasjon som er avgrensa til kontoen som køyrer jobben, eller lat profilen lagre han med -RememberCredential, framfor å sende eit passord som argument i ein planlagd oppgåve. Sjølve klargjeringskommandoane er trygge å gjenta med -Force, men dei legg gjerne eit gammalt framlegg oppå, så ei ny køyring hjelper berre viss skriptet ber dei gjeldande verdiane.
Profilar overlever omstartar og lever lengre enn gatewaykonfigurasjonen dei vart bygde for. Når framlegget til gatewayen flyttar seg, fjern oppføringa og lag henne på nytt i staden for å legge eit andre sett verdiar oppå: Remove-VpnConnection -Name "Contoso L2TP" -Force, og gjenta deretter dei to cmdlet-ane med det nye settet.
Lukk sløyfa med fire kontrollar som lever ved sida av skriptet: Get-VpnConnection viser venta tunneltype og krypteringsnivå; gatewayen loggar ein fullført fase 1 og fase 2 for klientadressa di; rasdial returnerer suksess og programmet opnar; og framlegget som er registrert i skriptet samsvarar med den gjeldande innstillinga til gatewayen. Når den neste 789 kjem, tek den samanlikninga minutt i staden for ein ettermiddag.