L2TP/IPsec-fout 789 op Windows: maak het profiel en zet het voorstel vast
Fout 789 faalt in de IPsec-uitwisseling, niet bij het wachtwoord. Script het L2TP-profiel, zet het voorstel vast en lees latere codes per fase.
Fout 789 op een Windows L2TP-verbinding betekent dat de tunnel stierf binnen de IPsec-beveiligingsuitwisseling, wat veel eerder gebeurt dan dat Windows ergens een gebruikerswachtwoord naartoe stuurt. Het wachtwoord opnieuw proberen, of het in de map resetten, kan die fase niet vooruit helpen. Wat die fase wel vooruit helpt, is de verbinding opnieuw opbouwen vanuit PowerShell met het voorstel dat de gateway werkelijk biedt, omdat de wizard in Instellingen de IPsec-transformaties stil kiest en je nooit laat zien wat hij koos. Dit is de runbook daarvoor: maak het profiel, zet het voorstel vast en gebruik daarna een fasentabel zodat de volgende code je iets vertelt.
Maak het profiel zonder de wizard
Add-VpnConnection schrijft een native telefoonboekvermelding, dus het resultaat is hetzelfde object dat de app Instellingen later bewerkt. Voer het uit vanuit een verhoogde sessie wanneer de verbinding voor elk account op de machine moet bestaan, of vanuit de gebruikerscontext wanneer die privé moet blijven:
Add-VpnConnection -Name "Contoso L2TP" `
-ServerAddress 203.0.113.10 `
-TunnelType L2tp `
-EncryptionLevel Required `
-AuthenticationMethod MSChapv2 `
-RememberCredential -Force
Laat -AuthenticationMethod overeenkomen met wat de gateway biedt. MSChapv2, EAP en PAP zijn niet uitwisselbaar, en een profiel dat een methode eist die de server niet accepteert, mislukt voordat er ooit een gebruikersrecord wordt geraadpleegd. Houd -EncryptionLevel Required aan voor alles wat echt is; Optional laat Windows een onversleutelde tunnel accepteren als de tegenpartij er een biedt, wat een laboratoriumkortere weg is en geen instelling om uit te leveren.
Als je -L2tpPsk doorgeeft, wordt die vooraf gedeelde sleutel in het profiel op schijf geschreven, waar iedereen die het profiel op die machine kan lezen hem kan herstellen. Gebruik een certificaat voor verificatie van de tegenpartij wanneer de gateway dat ondersteunt, en wanneer een PSK onvermijdelijk is, houd die buiten de repository en buiten de shellgeschiedenis in plaats van hem in elke provisioning-run te plakken.
Zet het voorstel vast in plaats van de standaardwaarden te accepteren
Windows vult de IPsec-transformaties zelf in, en daarom kunnen twee machines met een schijnbaar identieke verbinding anders falen tegen dezelfde gateway. Set-VpnConnectionIPsecConfiguration is de ondersteunde manier om ze vast te zetten:
Set-VpnConnectionIPsecConfiguration -ConnectionName "Contoso L2TP" `
-AuthenticationTransformConstants SHA256128 `
-CipherTransformConstants AES128 `
-EncryptionMethod AES128 `
-IntegrityCheckMethod SHA256 `
-DHGroup Group14 `
-PfsGroup None `
-PassThru -Force
Die set is één gangbare L2TP/IPsec-indeling, geen universeel antwoord. Elke parameter accepteert een vaste lijst waarden, en een combinatie die het platform niet kan toewijzen komt terug als een cmdlet-fout in plaats van een stil verzwakt profiel. Behandel zo'n fout als een uitspraak over de waarden, niet over je rechten.
Kopieer het voorstel uit de documentatie van de gateway of uit de actieve fase 1- en fase 2-instellingen, en wijzig één veld tegelijk alleen terwijl de gateway de transformaties logt die hij weigert. Vijf velden doorlopen levert een verbinding op die per ongeluk werkt en een registratie die de volgende persoon niets verklaart.
Lees een fout per fase, niet per fouttekst
789 hoort bij een familie codes die er in het clientdialoogvenster allemaal hetzelfde uitzien. Plaats de code tegen de fase waartoe hij behoort voordat je het profiel opnieuw aanraakt:
| 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 |
De twee rollen van inloggegevens zijn hier belangrijk. Een vooraf gedeelde sleutel of een certificaat authenticeert de tegenpartijen bij elkaar, terwijl MSChapv2 of EAP jou authenticeert binnen de tunnel. Een gebruikerswachtwoord resetten kan het eerste niet oplossen, een nieuw gedeeld geheim kan het tweede niet oplossen, en beide tegelijk wijzigen vernietigt het bewijs van welke fout was.
Controleer op het certificaatpad de klok van de client, de vertrouwensketen en de identiteit die de gateway verwacht voordat je overweegt de validatie te versoepelen. Validatie uitschakelen verandert een zichtbare 789 in een tunnel die verbinding maakt terwijl hij de verkeerde tegenpartij vertrouwt, en niets in de client zal je vertellen dat dat is gebeurd. lijst met fouten bij externe toegang van Microsoft is de referentie voor de codes zelf, en die scheidt de fouten van de beveiligingslaag van de aanmeldingsfouten.
Verifieer vanaf beide kanten voordat je het opgelost noemt
Lees het profiel terug, maar verwacht het voorstel niet in de uitvoer. Get-VpnConnection rapporteert de naam, het serveradres, het tunnelt ype, het versleutelingsniveau en de verificatiemethode, en weet niets van transformaties, dus het teruglezen bevestigt dat de vermelding bestaat en naar de juiste host wijst:
Get-VpnConnection -Name "Contoso L2TP" |
Select-Object Name, ServerAddress, TunnelType, EncryptionLevel, AuthenticationMethod
Kies vanaf de opdrachtregel zodat je een nummer krijgt in plaats van een dialoogvenster: rasdial "Contoso L2TP" retourneert dezelfde foutcode die de interface zou retourneren, en rasdial "Contoso L2TP" /disconnect wist die tussen pogingen. Lees daarna de kant van de gateway voor diezelfde poging. Een ipsec statusall van strongSwan of een IKE-log van de router vermeldt welk voorstel aankwam en welk werd geweigerd, en dat vergelijken met de cmdlet-waarden is de enige stap die echt bewijst dat de twee kanten het eens werden.
Een geslaagde verbinding is niet de finishlijn. Open de toepassing die voor de gebruiker belangrijk is, want routes, geduwde DNS en instellingen voor gesplitste tunnel falen nadat de tunnel omhoog is en produceren helemaal geen foutdialoogvenster.
Automatiseer het, en rol netjes terug
Onaangestuurde installatie is de reden om dit te scripten, en de kiesstap is waar inloggegevens lekken. rasdial neemt ze op zijn opdrachtregel, waar andere lokale gebruikers en de meeste logverzamelaars ze kunnen lezen:
subprocess.run(["rasdial", "Contoso L2TP"], check=True)
Geef de voorkeur aan inloggegevens die beperkt zijn tot het account dat de taak uitvoert, of laat het profiel ze opslaan met -RememberCredential, in plaats van een wachtwoord als argument door te geven in een geplande taak. De provisioning-opdrachten zelf zijn veilig om te herhalen met -Force, maar ze overschrijven graag een oud voorstel, dus een herhaling helpt alleen als het script de actuele waarden meedraagt.
Profielen blijven bewaard na herstarts en leven langer dan de gatewayconfiguratie waarvoor ze zijn gebouwd. Wanneer het voorstel van de gateway verschuift, verwijdert u de vermelding en maakt u die opnieuw in plaats van een tweede set waarden erop te stapelen: Remove-VpnConnection -Name "Contoso L2TP" -Force, en herhaal daarna de twee cmdlets met de nieuwe set.
Sluit de lus met vier controles die naast het script leven: Get-VpnConnection toont het verwachte tunneltype en versleutelingsniveau; de gateway logt een voltooide fase 1 en fase 2 voor het adres van uw client; rasdial retourneert succes en de toepassing opent; en het voorstel dat in het script is vastgelegd komt overeen met de huidige gatewayinstelling. Wanneer de volgende 789 komt, kost die vergelijking minuten in plaats van een middag.