Transportmodus IPsec zwischen Maschinen hinter NAT-Geräten funktioniert nicht

Transportmodus IPsec zwischen Maschinen hinter NAT-Geräten funktioniert nicht

In meinem Szenario wird keinerlei VPN und kein RRAS verwendet.

Ich versuche, eine IPsec-Verbindung zwischen zwei Windows 10-Computern (beide mit vollständig gepatchtem 1709) herzustellen, die sich beide hinter unterschiedlichen Nat-Geräten befinden.

Über die Windows-Firewall habe ich auf beiden Maschinen zwei Transportregeln erstellt, die Regeln beziehen sich auf das SMB-Protokoll.

Die Maschinen stehen beide hinter einem Nat, die beiden Nat-Geräte sind über das Internet verbunden.

Ich habe auf beiden Maschinen den Registrierungsschlüssel „AssumeUDPEncapsulationContextOnSendRule“ erstellt und seinen Wert auf beiden PCs auf „2“ gesetzt.

Auf dem NAT-Gerät vor dem Server, den ich erreichen möchte, habe ich die UDP-Ports 500 und 4500 und alle SMB-bezogenen Ports an den Server selbst weitergeleitet.

Auf beiden PCs habe ich durch die Windows-Firewall die eingehenden und ausgehenden UDP-Ports 500 und 4500 zugelassen und sogar „Edge Traversal“ für SMB-Verbindungen auf dem Server-PC zugelassen.

Wenn ich versuche, remote auf den Server zuzugreifen, werden die Quick Mode-Sicherheitszuordnungen erstellt, aber die Verbindung funktioniert nicht. (Die Ausgabe des Befehls Get-NetIpsecQuickmodeSa scheint in Ordnung zu sein, d. h. die UDP-Kapselung wurde korrekt erstellt.)

Die Verbindung funktioniert, wenn sich der Client hinter einem Nat befindet und der Server über eine öffentliche IP verfügt. Sie funktioniert jedoch nicht, wenn der Client über eine öffentliche IP verfügt und sich der Server hinter einem Nat befindet oder wenn sich sowohl der Client als auch der Server hinter einem Nat befinden.

Es muss eine Einstellung geben, die ich ignoriere.

Bitte helfen Sie mir, dieses Problem zu lösen.

Vielen Dank

Antwort1

Ich war sicher, dass es eine Einstellung gab, die ich ignoriert hatte, und hier ist sie:

Set-NetFirewallSetting -AllowIPsecThroughNAT Beide

Die Registrierungseinstellung „AssumeUDPEncapsulationContextOnSendRule“ bezieht sich auf den alten Windows IPsec-Richtlinien-Agent-Dienst.

Der obige Powershell-Befehl ermöglicht dasselbe Verhalten für die Windows-Firewall, insbesondere setzt er den Registrierungswert „IPsecThroughNAT“ auf „2“.

Nun funktioniert alles wie erwartet und wie es von Anfang an hätte funktionieren sollen. Dies sollte die Standardeinstellung sein.

Antwort2

Windows unterstützt möglicherweise nicht, dass sich der Server hinter einem NAT-Gerät befindet. Der Server muss eine öffentliche IP-Adresse haben. Sie können dies umgehen, indem Sie den folgenden Registrierungsschlüssel hinzufügen.

Speicherort des Registrierungsunterschlüssels: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent DWORD-Wertname: AssumeUDPEncapsulationContextOnSendRule DWORD-Wertdaten: 2

Quelle:

https://support.microsoft.com/en-us/help/926179/how-to-configure-an-l2tp-ipsec-server-behind-a-nat-t-device-in-windows

http://www.itdroplets.com/l2tp-vpn-not-working-in-windows/

verwandte Informationen