我遇到了一些奇怪的问题,我没有其他选择。情况:
当使用 L2TP PSK 从我的 Mac 连接到 VPN 服务器(Windows Server 2003 R2)时,一切都正常。
但是,当我从 Windows PC 连接时,什么都没有发生。它出现错误 809,有时还出现 789。现在我知道我的端口没有问题,因为 Mac 可以毫无问题地连接。
XP、Vista SP2 和 7 都一样。都无法连接。如果我直接连接到 VPN 服务器(连接到内部 IP,而不是路由器的 WAN),它就可以毫无问题地连接。使用 PPTP 连接可以正常工作……现在如果 L2TP 可以正常工作就好了,非常感谢 Windows!
我已经使用 iptables -L -nv 检查了我的 Linux 路由器上的计数器,发现它们在连接时不会上升。在 ACCEPT 和 DROP 上都不会上升。只有从 Mac 连接时才会上升。
我找到了 Microsoft 的指南,在注册表中启用 AssumeUDPEncapsulationContextOnSendRule。我在服务器和客户端上将其设置为“2”。仍然不行。使用该注册表项后,它开始给我错误 789,而不是 809。IPSEC 服务正在客户端和服务器上运行。
有谁能帮我解决这个问题!我已经为此工作了两天,但我没有其他办法。
谢谢!
//编辑:请参阅下面的解决方案。这仅适用于尝试连接到 NAT 路由器后面的 VPN 服务器的 Windows 客户端!
答案1
显然,需要的是“AssumeUDPEncapsulationContextOnSendRule”。我手动重启了 IPsec 服务,然后它就正常工作了。很奇怪!
所需步骤:
- 以管理员组成员的用户身份登录 Windows Vista 客户端计算机。
- 单击“开始”,指向“所有程序”,单击“附件”,单击“运行”,键入 regedit,然后单击“确定”。如果屏幕上显示“用户帐户控制”对话框并提示您提升管理员令牌,请单击“继续”。
- 找到并单击以下注册表子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\PolicyAgent 注意 您还可以将 AssumeUDPEncapsulationContextOnSendRule DWORD 值应用于基于 Microsoft Windows XP Service Pack 2 (SP2) 的 VPN 客户端计算机。为此,找到并单击以下注册表子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\IPSec
- 在编辑菜单上,指向新建,然后单击 DWORD(32 位)值。
- 键入 AssumeUDPEncapsulationContextOnSendRule,然后按 ENTER。
- 右键单击“AssumeUDPEncapsulationContextOnSendRule”,然后单击“修改”。
在“数值数据”框中,键入下列值之一: • 0 值为 0(零)将 Windows 配置为无法与位于 NAT 设备后面的服务器建立安全关联。这是默认值。 • 1 值为 1 将 Windows 配置为可以与位于 NAT 设备后面的服务器建立安全关联。 • 2 值为 2 将 Windows 配置为当服务器和基于 Windows Vista 或基于 Microsoft Windows Server 代号“Longhorn”的 VPN 客户端计算机都位于 NAT 设备后面时可以建立安全关联。
单击“确定”,然后退出注册表编辑器。
- 重启计算机