L2TP/IPsec-fout 789 op Windows: bou en pen die profiel vas
Fout 789 misluk in die IPsec-uitruiling, nie by die wagwoord nie. Skep die L2TP-profiel per skrip, pen die voorstel vas en lees latere kodes volgens stap.
Fout 789 op 'n Windows-L2TP-verbinding beteken die tonnel het binne die IPsec-sekuriteitsuitruiling gesterf, wat lank voordat Windows enige gebruikerswagwoord iewers heen stuur gebeur. Om die wagwoord weer te probeer of dit in die gids te herstel, kan nie daardie stap vorentoe beweeg nie. Wat dit wel beweeg, is om die verbinding vanaf PowerShell te herbou met die voorstel wat die toegangspoort werklik bied, want die Instellings-wizard kies IPsec-transformasies in die stilte en wys jou nooit wat hy gekies het nie. Dit is die runbook daarvoor: skep die profiel, pen die voorstel vas en gebruik dan 'n staptabel sodat die volgende kode jou iets vertel.
Skep die profiel sonder die wizard
Add-VpnConnection skryf 'n inheemse telefoonboekinskrywing, so die resultaat is dieselfde objek wat die Instellings-toepassing later wysig. Voer dit uit vanuit 'n verhoogde sessie wanneer die verbinding vir elke rekening op die masjien moet bestaan, of vanuit die gebruikerskonteks wanneer dit privaat moet bly:
Add-VpnConnection -Name "Contoso L2TP" `
-ServerAddress 203.0.113.10 `
-TunnelType L2tp `
-EncryptionLevel Required `
-AuthenticationMethod MSChapv2 `
-RememberCredential -Force
Pas -AuthenticationMethod aan by wat die toegangspoort bied. MSChapv2, EAP en PAP is nie onderling verwisselbaar nie, en 'n profiel wat 'n metode eis wat die bediener nie aanvaar nie, misluk voordat enige gebruikersrekord geraadpleeg word. Hou -EncryptionLevel Required vir enigiets werkliks; Optional laat Windows 'n onversleutelde tonnel aanvaar as die eweknie een bied, wat 'n laboratoriumkortpad is en nie 'n instelling om te verskeep nie.
As jy -L2tpPsk deurgee, word daardie voorafgedeelde sleutel in die profiel op skyf geskryf, waar enigiemand wat die profiel op daardie masjien kan lees dit kan herstel. Gebruik 'n sertifikaat vir eweknieverifikasie wanneer die toegangspoort dit ondersteun, en wanneer 'n PSK onvermydelik is, hou dit uit die bewaarplek en uit die dopgeskiedenis eerder as om dit in elke voorsieningslopie in te plak.
Pen die voorstel vas in plaas van om verstekke te aanvaar
Windows vul die IPsec-transformasies self in, en daarom kan twee masjiene met wat soos 'n identiese verbinding lyk, verskillend teen dieselfde toegangspoort misluk. Set-VpnConnectionIPsecConfiguration is die ondersteunde manier om dit vas te pen:
Set-VpnConnectionIPsecConfiguration -ConnectionName "Contoso L2TP" `
-AuthenticationTransformConstants SHA256128 `
-CipherTransformConstants AES128 `
-EncryptionMethod AES128 `
-IntegrityCheckMethod SHA256 `
-DHGroup Group14 `
-PfsGroup None `
-PassThru -Force
Daardie stel is een algemene L2TP/IPsec-reëling, nie 'n universele antwoord nie. Elke parameter aanvaar 'n vaste lys waardes, en 'n kombinasie wat die platform nie kan karteer nie, kom terug as 'n cmdlet-fout in plaas van 'n stilweg verswakte profiel. Behandel so 'n fout as 'n uitspraak oor die waardes, nie oor jou regte nie.
Kopieer die voorstel uit die toegangspoort se dokumentasie of uit sy lewendige fase-1- en fase-2-instellings, en verander een veld op 'n slag net terwyl die toegangspoort die transformasies wat dit weier, teken. Om deur vyf velde te siklus lewer 'n verbinding wat per ongeluk werk en 'n rekord wat niks aan die volgende persoon verduidelik nie.
Lees 'n mislukking volgens stap, nie volgens foutteks nie
789 hoort by 'n familie kodes wat almal dieselfde in die kliëntdialoog lyk. Plaas die kode teen die stap waaraan dit behoort voordat jy weer aan die profiel raak:
| 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 |
Die twee rolle van geloofsbriewe maak hier saak. 'n Voorafgedeelde sleutel of sertifikaat verifieer die eweknieë teenoor mekaar, terwyl MSChapv2 of EAP jou binne die tonnel verifieer. Om 'n gebruikerswagwoord te herstel kan nie die eerste regmaak nie, 'n nuwe gedeelde geheim kan nie die tweede regmaak nie, en om albei gelyktydig te verander vernietig die bewys van watter een verkeerd was.
Op die sertifikaatpad, kyk na die kliënt se horlosie, die vertroueketting en die identiteit wat die toegangspoort verwag voordat jy dit oorweeg om validering te verslap. Om validering te deaktiveer verander 'n sigbare 789 in 'n tonnel wat verbind terwyl dit die verkeerde eweknie vertrou, en niks in die kliënt sal jou vertel dat dit gebeur het nie. Microsoft se lys van afstandtoegangsfoute is die verwysing vir die kodes self, en dit skei die sekuriteitslaagmislukkings van die aanmeldmislukkings.
Verifieer van beide kante voordat jy dit as reg beskou
Lees die profiel terug, maar moenie die voorstel in die uitset verwag nie. Get-VpnConnection rapporteer die naam, bedieneradres, tonneltipe, enkripsievlak en verifikasiemetode, en dit weet niks van transformasies nie, so die teruglees bevestig dat die inskrywing bestaan en na die regte gasheer wys:
Get-VpnConnection -Name "Contoso L2TP" |
Select-Object Name, ServerAddress, TunnelType, EncryptionLevel, AuthenticationMethod
Skakel van die opdraglyn sodat jy 'n nommer kry in plaas van 'n dialoog: rasdial "Contoso L2TP" gee dieselfde mislukkingskode wat die koppelvlak sou gee, en rasdial "Contoso L2TP" /disconnect maak dit tussen pogings skoon. Lees dan die toegangspoort se kant vir daardie selfde poging. 'n strongSwan ipsec statusall of 'n router-IKE-log sê watter voorstel aangekom het en watter een geweier is, en om dit met die cmdlet-waardes te vergelyk is die enigste stap wat werklik bewys die twee kante het saamgestem.
'n Suksesvolle verbinding is nie die eindstreep nie. Maak die toepassing oop waaroor die gebruiker sorg, want roetes, gestuurde DNS en split-tonnel-instellings misluk nadat die tonnel op is en lewer glad geen foutdialoog nie.
Outomatiseer dit, en rol skoon terug
Onaangetaste opstelling is die rede om dit te skripteer, en die inbelstap is waar geloofsbriewe lek. rasdial neem hulle op sy opdraglyn, waar ander plaaslike gebruikers en die meeste logversamelaars hulle kan lees:
subprocess.run(["rasdial", "Contoso L2TP"], check=True)
Verkies 'n geloofsbrief wat beperk is tot die rekening wat die taak uitvoer, of laat die profiel dit met -RememberCredential stoor, eerder as om 'n wagwoord as argument in 'n geskeduleerde taak deur te gee. Die voorsieningsopdragte self is veilig om met -Force te herhaal, maar hulle sal 'n ou voorstel geredelik oorskryf, so 'n herloop help net as die skrip die huidige waardes dra.
Profiele bly oor herlaai heen en leef langer as die toegangspoort-konfigurasie waarvoor hulle gebou is. Wanneer die toegangspoort se voorstel skuif, verwyder die inskrywing en skep dit weer eerder as om 'n tweede stel waardes bo-op te lê: Remove-VpnConnection -Name "Contoso L2TP" -Force, en herhaal dan die twee cmdlets met die nuwe stel.
Sluit die lus met vier kontroles wat langs die skrip woon: Get-VpnConnection wys die verwagte tonneltipe en enkripsievlak; die toegangspoort teken 'n voltooide fase 1 en fase 2 vir jou kliëntadres; rasdial gee sukses en die toepassing maak oop; en die voorstel wat in die skrip aangeteken is, stem ooreen met die huidige toegangspoort-instelling. Wanneer die volgende 789 opdaag, neem daardie vergelyking minute in plaas van 'n middag.