Nat 设备后面的机器之间的传输模式 IPsec 不起作用

Nat 设备后面的机器之间的传输模式 IPsec 不起作用

我的场景不使用任何类型的 VPN,也不使用 RRAS。

我正在尝试在两台位于不同 Nat 设备后面的 Windows 10 机器(均已完全修补 1709)之间建立 IPsec 连接。

通过Windows防火墙,我在两台机器上创建了两条传输规则,这些规则与Smb协议相关。

两台机器都位于 Nat 后面,两个 Nat 设备通过 Internet 连接。

我在两台机器上创建了注册表项“AssumeUDPEncapsulationContextOnSendRule”,并将其值设置为“2”。

在我尝试访问的服务器前面的 Nat 设备上,我将 Udp 端口​​ 500 和 4500 以及所有 Smb 相关端口转发到服务器本身。

在两台电脑上,我都允许通过 Windows 防火墙的入站和出站 Udp 端口​​ 500、4500,甚至允许服务器电脑上的 Smb 连接进行“边缘遍历”。

当我尝试远程访问服务器时,快速模式安全关联已创建,但连接不起作用。(命令 Get-NetIpsecQuickmodeSa 的输出似乎正常,即已正确创建 Udp 封装)

当客户端位于 Nat 后面并且服务器具有公共 Ip 时,连接确实有效,但是当客户端具有公共 Ip 并且服务器位于 Nat 后面或当客户端和服务器都位于 Nat 后面时,连接无效。

肯定是我忽略了某些设置。

请帮我解决这个问题。

多谢

答案1

我确信我忽略了某些设置,事实就是如此:

设置 NetFirewallSetting -AllowIPsecThroughNAT Both

注册表设置“AssumeUDPEncapsulationContextOnSendRule”与旧的 Windows IPsec 策略代理服务相关。

上述 Powershell 命令允许 Windows 防火墙执行相同的行为,特别是它将注册表值“IPsecThroughNAT”设置为“2”。

现在一切都按预期进行,并且从一开始就应该如此,这应该是默认设置。

答案2

Windows 可能不支持服务器位于 NAT 设备后面。它要求服务器具有公共 IP 地址。可以通过添加以下注册表项来解决。

注册表子项位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent DWORD 值名称:AssumeUDPEncapsulationContextOnSendRule DWORD 值数据:2

来源:

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/

相关内容