Fehler 789 bei einer L2TP-Verbindung unter Windows bedeutet, dass der Tunnel innerhalb des IPsec-Sicherheitsaustauschs gestorben ist, was lange geschieht, bevor Windows irgendwo ein Benutzerpasswort hinschickt. Das Passwort erneut zu versuchen oder es im Verzeichnis zurückzusetzen, kann diese Stufe nicht voranbringen. Was sie voranbringt, ist der Neuaufbau der Verbindung aus PowerShell mit dem Vorschlag, den das Gateway tatsächlich anbietet, weil der Assistent in den Einstellungen die IPsec-Transformationen still auswählt und Ihnen nie zeigt, was er gewählt hat. Das ist das Runbook dafür: Erstellen Sie das Profil, nageln Sie den Vorschlag fest und verwenden Sie dann eine Stufentabelle, damit Ihnen der nächste Code etwas sagt.

Erstellen Sie das Profil ohne den Assistenten

Add-VpnConnection schreibt einen nativen Telefonbucheintrag, das Ergebnis ist also dasselbe Objekt, das die Einstellungen-App später bearbeitet. Führen Sie es aus einer erhöhten Sitzung aus, wenn die Verbindung für jedes Konto auf dem Rechner existieren soll, oder aus dem Benutzerkontext, wenn sie privat bleiben soll:

Add-VpnConnection -Name "Contoso L2TP" `
  -ServerAddress 203.0.113.10 `
  -TunnelType L2tp `
  -EncryptionLevel Required `
  -AuthenticationMethod MSChapv2 `
  -RememberCredential -Force

Passen Sie -AuthenticationMethod an das an, was das Gateway anbietet. MSChapv2, EAP und PAP sind nicht austauschbar, und ein Profil, das eine Methode verlangt, die der Server nicht akzeptiert, scheitert, bevor irgendein Benutzerdatensatz herangezogen wird. Behalten Sie -EncryptionLevel Required für alles Echte; Optional lässt Windows einen unverschlüsselten Tunnel akzeptieren, wenn die Gegenseite einen anbietet, was eine Laborabkürzung und keine auszuliefernde Einstellung ist.

Wenn Sie -L2tpPsk übergeben, wird dieser vorab geteilte Schlüssel in das Profil auf der Festplatte geschrieben, wo jeder, der das Profil auf diesem Rechner lesen kann, ihn wiederherstellen kann. Verwenden Sie ein Zertifikat für die Peer-Authentifizierung, wenn das Gateway es unterstützt, und wenn ein PSK unvermeidlich ist, halten Sie ihn aus dem Repository und aus der Shell-Historie heraus, statt ihn in jeden Provisionierungslauf einzufügen.

Nageln Sie den Vorschlag fest, statt Standardwerte zu akzeptieren

Windows füllt die IPsec-Transformationen selbst aus, weshalb zwei Rechner mit scheinbar identischer Verbindung gegen dasselbe Gateway unterschiedlich scheitern können. Set-VpnConnectionIPsecConfiguration ist der unterstützte Weg, sie festzunageln:

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

Dieser Satz ist eine gängige L2TP/IPsec-Anordnung, keine allgemeine Antwort. Jeder Parameter akzeptiert eine feste Werteliste, und eine Kombination, die die Plattform nicht abbilden kann, kommt als Cmdlet-Fehler zurück statt als still geschwächtes Profil. Behandeln Sie einen solchen Fehler als Aussage über die Werte, nicht über Ihre Berechtigungen.

Kopieren Sie den Vorschlag aus der Gateway-Dokumentation oder aus den Live-Einstellungen für Phase 1 und Phase 2, und ändern Sie jeweils nur ein Feld, solange das Gateway die abgelehnten Transformationen protokolliert. Fünf Felder durchzuprobieren erzeugt eine Verbindung, die zufällig funktioniert, und einen Datensatz, der dem Nächsten nichts erklärt.

Lesen Sie einen Fehler nach Stufe, nicht nach Fehlertext

789 gehört zu einer Familie von Codes, die im Client-Dialog alle gleich aussehen. Ordnen Sie den Code der Stufe zu, zu der er gehört, bevor Sie das Profil erneut anfassen:

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

Die beiden Rollen der Anmeldeinformationen sind hier wichtig. Ein vorab geteilter Schlüssel oder ein Zertifikat authentifiziert die Peers gegeneinander, während MSChapv2 oder EAP Sie innerhalb des Tunnels authentifiziert. Das Zurücksetzen eines Benutzerpassworts kann das erste nicht beheben, ein neues gemeinsames Geheimnis kann das zweite nicht beheben, und beides auf einmal zu ändern zerstört den Beweis, welches falsch war.

Prüfen Sie auf dem Zertifikatspfad die Client-Uhr, die Vertrauenskette und die Identität, die das Gateway erwartet, bevor Sie eine Lockerung der Validierung erwägen. Das Deaktivieren der Validierung verwandelt einen sichtbaren 789 in einen Tunnel, der sich verbindet und dabei der falschen Gegenseite vertraut, und nichts im Client wird Ihnen sagen, dass das passiert ist. Liste der Fehler beim Remotezugriff von Microsoft ist die Referenz für die Codes selbst, und sie trennt die Fehler der Sicherheitsschicht von den Anmeldefehlern.

Prüfen Sie von beiden Enden, bevor Sie es als behoben bezeichnen

Lesen Sie das Profil zurück, aber erwarten Sie den Vorschlag nicht in der Ausgabe. Get-VpnConnection meldet Name, Serveradresse, Tunneltyp, Verschlüsselungsstufe und Authentifizierungsmethode und weiß nichts über Transformationen, sodass das Zurücklesen bestätigt, dass der Eintrag existiert und auf den richtigen Host zeigt:

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

Wählen Sie über die Kommandozeile, damit Sie eine Nummer statt eines Dialogs bekommen: rasdial "Contoso L2TP" liefert denselben Fehlercode, den die Oberfläche liefern würde, und rasdial "Contoso L2TP" /disconnect löscht ihn zwischen Versuchen. Lesen Sie dann die Gateway-Seite für denselben Versuch. Ein ipsec statusall von strongSwan oder ein IKE-Log des Routers gibt an, welcher Vorschlag ankam und welcher abgelehnt wurde, und der Vergleich mit den Cmdlet-Werten ist der einzige Schritt, der tatsächlich beweist, dass sich beide Enden geeinigt haben.

Eine erfolgreiche Verbindung ist nicht die Ziellinie. Öffnen Sie die Anwendung, die dem Benutzer wichtig ist, denn Routen, geschobenes DNS und Split-Tunnel-Einstellungen scheitern, nachdem der Tunnel steht, und erzeugen überhaupt keinen Fehlerdialog.

Automatisieren Sie es, und rollen Sie sauber zurück

Die unbeaufsichtigte Einrichtung ist der Grund, das zu skripten, und der Wählschritt ist der Ort, an dem Anmeldeinformationen austreten. rasdial nimmt sie auf seiner Kommandozeile entgegen, wo andere lokale Benutzer und die meisten Log-Sammler sie lesen können:

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

Bevorzugen Sie eine Anmeldeinformation, die auf das Konto beschränkt ist, das den Job ausführt, oder lassen Sie das Profil sie mit -RememberCredential speichern, statt ein Passwort als Argument in einer geplanten Aufgabe zu übergeben. Die Provisionierungsbefehle selbst lassen sich mit -Force sicher wiederholen, aber sie überlagern gerne einen alten Vorschlag, sodass ein erneuter Lauf nur hilft, wenn das Skript die aktuellen Werte trägt.

Profile überleben Neustarts und leben länger als die Gateway-Konfiguration, für die sie gebaut wurden. Wenn der Gateway-Vorschlag sich verschiebt, entfernen Sie den Eintrag und legen Sie ihn neu an, statt einen zweiten Wertsatz darüberzuschichten: Remove-VpnConnection -Name "Contoso L2TP" -Force, und wiederholen Sie dann die beiden Cmdlets mit dem neuen Satz.

Schließen Sie den Kreis mit vier Prüfungen, die neben dem Skript leben: Get-VpnConnection zeigt den erwarteten Tunneltyp und die Verschlüsselungsstufe; das Gateway protokolliert eine abgeschlossene Phase 1 und Phase 2 für Ihre Client-Adresse; rasdial meldet Erfolg und die Anwendung öffnet sich; und der im Skript festgehaltene Vorschlag stimmt mit der aktuellen Gateway-Einstellung überein. Wenn der nächste 789 kommt, dauert dieser Vergleich Minuten statt eines Nachmittags.

Ähnliche Artikel