无法让 Windows 连接到 L2TP VPN

无法让 Windows 连接到 L2TP VPN

我有一个 Windows 10 客户端,已配置为连接到 L2TP VPN。

使连接正常工作,我必须添加"AssumeUDPEncapsulationContextOnSendRule"注册表项,然后完全禁用 Windows 防火墙——VPN 通过这种方式完美连接。

然而,我不能获取 VPN 以连接到已启用 Windows 防火墙我确实需要保持 Windows 防火墙处于启用状态并能够连接到 L2TP VPN。

我也允许了...

  • 协议50(ESP) 输入和输出
  • UDP 1701, 4500,500输入和输出

但是,仅当我完全禁用 Windows 防火墙而不是启用它时,VPN 仍然会连接。

问题:有任何帮助或指导可以进一步解决此问题吗?

答案1

无法让 Windows 连接到 L2TP VPN

  1. 首先,如果 VPN 服务器位于NATVPN 客户端位于NAT这可能会引起问题,因为显然“默认情况下,Windows 不支持与位于 NAT 设备后面的服务器建立 IPSec 网络地址转换 (NAT) 遍历 (NAT-T) 安全关联”,这仍然适用于 Windows 10。

    微软给出的建议“如果您必须将服务器置于 NAT 设备后面,然后使用 IPsec NAT-T 环境,则可以通过更改注册表值来启用通信VPN 客户端计算机和 VPN 服务器“”。

PowerShell(建议修复)

笔记: 您必须在管理员提升的 PowerShell 会话中运行此操作。

## -- Add registry key to support for L2TP communications via double NAT
Set-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Services\PolicyAgent" -Name "AssumeUDPEncapsulationContextOnSendRule" -Type DWORD -Value 2 –Force;

重要的: 您必须重新启动应用此功能的机器才能使其生效。

创建并配置AssumeUDPEncapsulationContextOnSendRule注册表项的值2低于HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent注册表子项并将其定义为DWORD值。


  • 2配置 Windows,以便当 Windows Server 和 Windows VPN 客户端计算机都位于 NAT 设备后面时,它可以建立安全关联。

来源

PowerShell(删除修复)

笔记: 您必须在管理员提升的 PowerShell 会话中运行此操作。

## -- Remove registry key for L2TP communications support via double NAT
Remove-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Services\PolicyAgent" -Name "AssumeUDPEncapsulationContextOnSendRule" –Force;

重要的: 您必须重新启动应用此功能的机器才能使其生效。


如果不是双重 NAT 问题那么...

  1. 似乎在某些配置中,端口1701不仅用于 UDP,还用于 TCP 和 UDP。调整规则以允许 TCP 端口1701通过,看看是否能解决问题。

第二层隧道协议 (L2TP)使用 TCP 端口 1701,是点对点隧道协议的扩展。L2TP 通常与 IPSec 一起使用来建立虚拟专用网络 (VPN)。

2020-06-25:修正拼写错误,L2TP 使用 UDP,而不是 TCP

来源

  1. 此外,请确保您的 Windows 防火墙“允许”规则适用的 TCP 和 UDP 端口(和任何相关的 VPN 客户端软件 exe等)选项Advanced卡已选中所有privatedomainpublic配置文件。

在此处输入图片描述

  1. 经过进一步研究,我不太清楚其中一些是否适用于 L2TP 的客户端而不是 VPN 服务器端,但一些建议实际上允许 UDP 端口50

  2. 还有另一篇文章也谈到了ESP (value 50) <- Used by IPSec data path以及其他指IPSec协议和端口所使用的端口。

  • 记住,我不确定#4和#5是否都适用于连接客户端,但需要考虑进一步调查并为相关协议和/或端口开放额外的访问权限。

进一步故障排除

为了进一步排除故障,请考虑运行Wireshark在禁用 Windows 防火墙的情况下,成功建立 VPN 连接并保存该跟踪。然后在启用 Windows 防火墙的情况下,运行新的跟踪,尝试建立 VPN 连接并保存该跟踪。

现在,您可以查看成功和不成功的 L2TP VPN 连接跟踪、过滤并在数据包级别查看实际情况,以确定可能需要进一步允许通过 Windows 防火墙的操作。


支持资源

答案2

您在 Windows 防火墙中配置了错误的端口。

对于 L2TP,您需要 UDP 端口 500、1701 和 4500。

端口 5000 不正确(如果这不是打字错误的话)。

答案3

你可能会错过IP 协议 ID 51,用于身份验证头 (AH) 流量。

IBM 第 2 层隧道协议

L2TP 实际上是 IP 封装协议的变体。L2TP 隧道是通过将 L2TP 帧封装在用户数据报协议 (UDP) 数据包中而创建的,而后者又封装在 IP 数据包中。此 IP 数据包的源地址和目标地址定义了连接的端点。由于外部封装协议是 IP,因此您可以将 IPSec 协议应用于复合 IP 数据包。这可以保护在 L2TP 隧道内流动的数据。然后您可以应用认证标头 (AH)、封装安全有效负载 (ESP) 和互联网密钥交换 (IKE) 协议。

维基百科 IPSEC

认证头 (AH) 为 IP 数据报提供无连接数据完整性和数据来源认证,并提供针对重放攻击的保护。

答案4

DNS(端口 53 [以及 TLS 上的 853])?

假设您非常清楚自己在做什么,并且已经勾选了所有列出的必需端口,我猜您被 DNS 查询搞得焦头烂额。这就是困扰我的问题。我使用的是主机名而不是 IP,所以它一直尝试先进行 DNS 查找(通过阻止它们的防火墙)。

相关内容