最近把电脑升级到了Windows11系统,此前用的Windows10系统,使用系统自带的VPN功能连接群晖的L2TP类型的VPN就一直有问题,没想到升级到11之后,问题依然存在,一般连接的时候都会报下面的错误:
无法建立计算机与VPN服务器之际的网络连接,因为远程服务器未响应。这可能是因为…(此处省略很多字)
同样的设置,在MacOS和iPhone上都能正常连接,可为啥到了Windows上就不行了呢?
原因
默认情况下,Windows Vista 和 Windows Server 2008 不支持与位于 NAT 设备后面的服务器的 Internet 协议安全 (IPsec) 网络地址转换 (NAT) 穿越 (NAT-T) 安全关联。如果虚拟专用网络 (VPN) 服务器位于 NAT 设备后面,则基于 Windows Vista 或 Windows Server 2008 的 VPN 客户端计算机无法与 VPN 服务器建立第 2 层隧道协议 (L2TP)/IPsec 连接。此方案包括运行 Windows Server 2008 和 Windows Server 2003 的 VPN 服务器。
由于 NAT 设备转换网络流量的方式,您可能会在以下场景中遇到意外结果:
1、 您将服务器放在 NAT 设备后面。
2、 使用 IPsec NAT-T 环境。
如果您必须使用 IPsec 进行通信,请为您可以从 Internet 连接到的所有服务器使用公共 IP 地址。如果必须将服务器置于 NAT 设备之后,然后使用 IPsec NAT-T 环境,则可以通过更改 VPN 客户端计算机和 VPN 服务器上的注册表值来启用通信。
原来从Vista时代就存在这个问题了,简单说就是VPN服务器和(或)客户端与NAT(比如家用路由器)的兼容问题
解决方法
解决方法很简单,就是修改注册表,添加AssumeUDPEncapsulationContextOnSendRule注册表项,具体如下:
1、打开注册表,快捷键 win + x,然后点击运行,输入regedit
2、设置注册表项
首先,找到注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent,检查是否有AssumeUDPEncapsulationContextOnSendRule,如果有,则编辑,设置值为2;
如果没有,则创建一个,右键选择 新建> DWORD(32 位)值,名称为AssumeUDPEncapsulationContextOnSendRule,然后编辑,同样设置值为2。
3、设置VPN属性
打开控制面板>网络和Internet>网络连接>,找到VPN连接,右键打开属性
切换到安全,将 数据加密(D) 设置为需要加密(如果服务器拒绝将断开连接),同时选中运行使用这些协议(P),并且只勾选Microsoft CHAP Version 2(MS-CHAP v2)
4、重启电脑
5、重新连接VPN,这时候一般都能正常连接了。如果还不能连接,可以尝试后面的操作。
后面的操作
如果上面的操作下来,还是不能正常连接VPN,可以继续尝试下面的操作:
1、找到注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters,新建ProhibitIPSec,并设置值为0
2、打开计算机管理>服务和应用程序>服务,找到IPsec Policy Agent,将启动类型设置为手动,然后重启电脑。