Feil 789 på en Windows L2TP-tilkobling betyr at tunnelen døde inne i IPsec-sikkerhetsutvekslingen, noe som skjer lenge før Windows sender et brukerpassord noe sted. Å prøve passordet på nytt, eller tilbakestille det i katalogen, kan ikke flytte det trinnet framover. Det som flytter det, er å bygge tilkoblingen på nytt fra PowerShell med forslaget gatewayen faktisk tilbyr, fordi veiviseren i Innstillinger velger IPsec-transformasjonene i stillhet og aldri viser deg hva den valgte. Dette er runboken for det: bygg profilen, lås forslaget, og bruk deretter en trinntabell slik at den neste koden forteller deg noe.

Bygg profilen uten veiviseren

Add-VpnConnection skriver en innebygd telefonbokoppføring, så resultatet er det samme objektet som Innstillinger-appen redigerer senere. Kjør den fra en forhøyet økt når tilkoblingen skal finnes for hver konto på maskinen, eller fra brukerkonteksten når den skal forbli 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 ikke byttes om, og en profil som krever en metode serveren ikke godtar, feiler før noen brukeroppføring slås opp. Behold -EncryptionLevel Required for alt ekte; Optional lar Windows godta en ukryptert tunnel hvis motparten tilbyr en, noe som er en laboratoriegenvei og ikke en innstilling å sende ut.

Hvis du sender -L2tpPsk, skrives den forhåndsdelt nøkkelen inn i profilen på disken, der enhver som kan lese profilen på den maskinen kan gjenopprette den. Bruk et sertifikat for å autentisere motparten når gatewayen støtter det, og når en PSK er uunngåelig, hold den utenfor repositoriet og utenfor skallhistorikken i stedet for å lime den inn i hver klargjøringskjøring.

Lås forslaget i stedet for å godta standardverdiene

Windows fyller ut IPsec-transformasjonene selv, og derfor kan to maskiner med en tilsynelatende identisk tilkobling feile ulikt mot den samme gatewayen. Set-VpnConnectionIPsecConfiguration er den støttede måten å låse dem på:

Set-VpnConnectionIPsecConfiguration -ConnectionName "Contoso L2TP" `
  -AuthenticationTransformConstants SHA256128 `
  -CipherTransformConstants AES128 `
  -EncryptionMethod AES128 `
  -IntegrityCheckMethod SHA256 `
  -DHGroup Group14 `
  -PfsGroup None `
  -PassThru -Force

Det settet er ett vanlig L2TP/IPsec-oppsett, ikke et universelt svar. Hver parameter godtar en fast liste med verdier, og en kombinasjon plattformen ikke kan kartlegge kommer tilbake som en cmdlet-feil i stedet for en stille svekket profil. Behandle en slik feil som en uttalelse om verdiene, ikke om tillatelsene dine.

Kopier forslaget fra gatewaydokumentasjonen eller fra dens levende fase 1- og fase 2-innstillinger, og endre ett felt om gangen bare mens gatewayen logger transformasjonene den avviser. Å gå gjennom fem felt gir en tilkobling som virker ved et uhell og en oppføring som ikke forklarer noe for den neste personen.

Les en feil etter trinn, ikke etter feiltekst

789 hører til en familie koder som alle ser like ut i klientdialogen. Plasser koden ved trinnet den hører til før du rører profilen igjen:

What you seeStage that failedCheck first
Nothing happens, then a timeoutNo IKE response at allServer address, UDP 500 and 4500 reachability, NAT traversal on the gateway
Error 789IKE security exchangeProposal, pre-shared key, certificate trust and client clock
Error 691 or a repeated password promptUser authenticationAccount state, domain, RADIUS or NPS policy
Tunnel up, some hosts unreachableRouting or DNS after PPPSplit-tunnel routes, pushed DNS, remote subnet mask

De to legitimasjonsrollene betyr noe her. En forhåndsdelt nøkkel eller et sertifikat autentiserer partene mot hverandre, mens MSChapv2 eller EAP autentiserer deg inne i tunnelen. Å tilbakestille et brukerpassord kan ikke rette det første, en ny delt hemmelighet kan ikke rette det andre, og å endre begge på én gang ødelegger beviset for hvilken som var feil.

På sertifikatveien må du kontrollere klientklokken, tillitskjeden og identiteten gatewayen forventer før du vurderer å lempe valideringen. Å slå av validering gjør en synlig 789 om til en tunnel som kobler til mens den stoler på feil motpart, og ingenting i klienten vil fortelle deg at det skjedde. Microsofts liste over fjern tilgang-feil er referansen for kodene selv, og den skiller feilene i sikkerhetslaget fra innloggingsfeilene.

Kontroller fra begge ender før du kaller det rettet

Les profilen tilbake, men ikke forvent forslaget i utdataene. Get-VpnConnection rapporterer navn, serveradresse, tunneltype, krypteringsnivå og autentiseringsmetode, og vet ingenting om transformasjoner, så tilbakelesingen bekrefter at oppføringen finnes og peker på riktig vert:

Get-VpnConnection -Name "Contoso L2TP" |
  Select-Object Name, ServerAddress, TunnelType, EncryptionLevel, AuthenticationMethod

Ring fra kommandolinjen slik at du får et nummer i stedet for en dialog: rasdial "Contoso L2TP" returnerer den samme feilkoden som grensesnittet ville, og rasdial "Contoso L2TP" /disconnect rydder den mellom forsøk. Les deretter gatewayens side for det samme forsøket. En ipsec statusall fra strongSwan eller en IKE-logg fra ruteren angir hvilket forslag som kom, og hvilket som ble avvist, og å sammenligne det med cmdlet-verdiene er det eneste trinnet som faktisk beviser at de to endene ble enige.

En vellykket tilkobling er ikke målstreken. Åpne programmet brukeren bryr seg om, fordi ruter, dyttet DNS og innstillinger for delt tunnel feiler etter at tunnelen er oppe og gir ingen feildialog i det hele tatt.

Automatiser det, og rull rent tilbake

Uovervåket oppsett er grunnen til å skripte dette, og oppringingstrinnet er der legitimasjonen lekker. rasdial tar dem på sin egen kommandolinje, der andre lokale brukere og de fleste loggsamlere kan lese dem:

subprocess.run(["rasdial", "Contoso L2TP"], check=True)

Foretrekk en legitimasjon som er begrenset til kontoen som kjører jobben, eller la profilen lagre den med -RememberCredential, fremfor å sende et passord som argument i en planlagt oppgave. Selve klargjøringskommandoene er trygge å gjenta med -Force, men de legger gjerne et gammelt forslag oppå, så en ny kjøring hjelper bare hvis skriptet bærer de gjeldende verdiene.

Profiler overlever omstarter og lever lenger enn gatewaykonfigurasjonen de ble bygget for. Når gatewayens forslag flytter seg, fjern oppføringen og lag den på nytt i stedet for å legge et andre sett verdier oppå: Remove-VpnConnection -Name "Contoso L2TP" -Force, og gjenta deretter de to cmdlet-ene med det nye settet.

Lukk sløyfen med fire kontroller som lever ved siden av skriptet: Get-VpnConnection viser forventet tunneltype og krypteringsnivå; gatewayen logger en fullført fase 1 og fase 2 for klientadressen din; rasdial returnerer suksess og programmet åpnes; og forslaget som er registrert i skriptet, samsvarer med gatewayens gjeldende innstilling. Når den neste 789 kommer, tar den sammenligningen minutter i stedet for en ettermiddag.

Relaterte artikler