当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 配置 NAT 后面的 L2TP/IPSec VPN 连接,VPN 错误代码 809

作者:精品下载站 日期:2024-12-14 22:53:59 浏览:12 分类:玩电脑

配置 NAT 后面的 L2TP/IPSec VPN 连接,VPN 错误代码 809


由于在 iOS 中禁用了 PPTP VPN 支持,我的一位客户决定将运行 Windows Server 2012 R2 的 VPN 服务器从 PPTP 重新配置为 L2TP/IPSec。来自内部 LAN 的内部 VPN 客户端可以毫无问题地连接到 VPN 服务器,但是外部 Windows 客户端在尝试与 L2TP VPN 服务器建立连接时收到错误 809:

无法连接到 L2TP-IPsec-VPN-Server.hostname

由于远程服务器没有响应,无法在您的计算机和 VPN 服务器之间建立网络连接。这可能是因为您的计算机和远程服务器之间的网络设备之一(例如防火墙、NAT、路由器等)未配置为允许 VPN 连接。请联系您的管理员或服务提供商以确定可能导致问题的设备。

[玩转系统] 配置 NAT 后面的 L2TP/IPSec VPN 连接,VPN 错误代码 809

在其他 Windows 版本中,连接错误 800794809 可能表示相同的问题。

值得注意的是,VPN 服务器位于 NAT 之后,并且路由器配置为转发 L2TP 端口:

  • UDP 1701 — 第 2 层转发协议 (L2F) 和第 2 层隧道协议 (L2TP)

  • UDP 500

  • UDP 4500 NAT-T - IPSec 网络地址转换器遍历

  • 协议 50 ESP

这些端口也在 Windows 防火墙规则中开放用于 VPN 连接。那些,使用的是经典配置。使用内置的Windows VPN 客户端进行连接。

如果您通过 PPTP 连接到同一 VPN 服务器,则连接已成功建立。

Windows 上 NAT 后的 L2TP/IPSec 的 VPN 错误 809

事实证明,该问题已为人所知并在文章 https://support.microsoft.com/en-us/kb/926179 中进行了描述。默认情况下,Windows 内置 VPN 客户端不支持通过 NAT 的 L2TP/IPsec 连接。这是因为 IPsec 使用ESP(封装安全负载)来加密数据包,而 ESP 不支持PAT(端口地址转换)。如果要使用 IPSec 进行通信,Microsoft 建议在 VPN 服务器上使用公共 IP 地址。

但还有一个解决方法。您可以通过启用对 NAT-T 协议的支持来解决此缺陷,该协议允许您将 ESP 50 数据包封装在端口 4500 上的 UDP 数据包中。在除 Windows 之外的几乎所有操作系统(iOS、Android、Linux)中默认启用 NAT-T。

如果 L2TP/IPsec VPN 服务器位于 NAT 设备后面,为了通过 NAT 正确连接外部客户端,您必须对服务器和客户端的注册表进行一些更改,以允许 IPsec 中 L2TP 和 NAT-T 支持的 UDP 数据包封装。

  • 打开注册表编辑器(

    regedit.exe

    )并转到以下注册表项:

    • Windows 10/8.1/Vista 和 Windows Server 2016/2012R2/2008R2 — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent

  • Windows XP/Windows Server 2003 — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec

  • 创建一个名为 AssumeUDPEncapsulationContextOnSendRule 和值 2;DWORD 参数

    [玩转系统] 配置 NAT 后面的 L2TP/IPSec VPN 连接,VPN 错误代码 809

    • 0 -(默认值)表示服务器在没有NAT的情况下连接到互联网;

  • 1 - VPN 服务器位于 NAT 设备后面;

  • 2 — VPN 服务器和客户端都位于 NAT 后面。

  • 只需重新启动计算机并确保 VPN 隧道已成功建立

  • 此外,您还可以使用 PowerShell cmdlet 来更改注册表:

    Set-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Services\PolicyAgent" -Name "AssumeUDPEncapsulationContextOnSendRule" -Type DWORD -Value 2 -Force;

    启用 NAT-T 支持后,您将能够从客户端通过 NAT(包括双 NAT)成功连接到 VPN 服务器。

    在某些情况下,为了使 VPN 正常工作,您需要为 TCP 1701 启用额外的防火墙规则(在某些 L2TP 实现中,此端口与 UDP 1701 结合使用)。

    NAT-T 在早期的 Windows 10 版本中无法正常工作,例如 10240、1511、1607。如果您使用的是较旧的 Windows 版本,我们建议您升级 Windows 10 版本。

    来自同一 LAN 的多个 L2TP VPN 连接

    还有另一个有趣的 VPN 错误。如果您的本地网络有多台 Windows 计算机,则您无法同时与外部 L2TP/IPSec VPN 服务器建立多个连接。如果您尝试从另一台计算机(使用来自不同设备的活动 VPN 隧道)连接到同一 VPN 服务器,将出现错误代码 809 或 789:

    Error 789: The L2TP connection attempt failed because the security layer encountered a processing error during initial negotiations with the remove computer.

    有趣的是,这个问题只发生在 Windows 设备上。在同一本地网络的Linux/MacOS/Android设备上,不存在此类问题。您可以轻松地从多个设备同时连接到 VPN L2TP 服务器。

    据 TechNet 称,该问题与 Windows 上 L2TP/IPSec 客户端的错误实施有关(多年来未修复)。

    要修复此错误,您需要更改 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters 注册表项中的两个注册表参数并重新启动计算机:

    • AllowL2TPWeakCrypto - 更改为00000001(允许弱加密算法,对于L2TP/IPSec,使用MD5和DES算法);

    • ProhibitIPSec - 更改为 00000000(启用 IPsec 加密,但某些 VPN 客户端或系统工具通常禁用该加密)。

    [玩转系统] 配置 NAT 后面的 L2TP/IPSec VPN 连接,VPN 错误代码 809

    运行以下命令来更改应用这些注册表更改:

    reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters" /v AllowL2TPWeakCrypto /t REG_DWORD /d 1 /f
    reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters" /v ProhibitIpSec /t REG_DWORD /d 0 /f

    这可以通过共享公共 IP 地址支持 Windows 上的并发 L2TP/IPSec VPN 连接(适用于从 Windows XP 到 Windows 10 的所有版本)。

    您需要 登录账户 后才能发表评论

    取消回复欢迎 发表评论:

    关灯