Windows 11 为每个 L2TP/IPsec 阶段报出不同的编号,这个编号标记的是阶段,而不是给故障打分。789 在 PPP 链路还不存在时就失败,720 在链路正在建立时失败,691 则在链路已建立、凭据被拒之后失败。有用的判断不是哪种修复最流行,而是代码证明你已经走到哪个阶段。先读懂这一点,然后每次只改一层,让下一个代码仍然能告诉你一些信息。

把代码当作阶段来读,而不是当作故障清单

一条 L2TP 连接按固定顺序跨越三道边界。IKE 通过 UDP 500 协商安全关联,NAT 穿透把该流量转到 UDP 4500,之后 L2TP 隧道才承载 PPP 会话,完成用户认证并分配地址。

正是这个顺序让变化的错误代码成为有用证据。从 789 变成 720,说明 IPsec 已能协商,故障已移到链路建立。从 720 变成 691,说明链路已建立、网关拒绝了身份。如果一次上五个修复,你就失去了这个信号,无法判断是哪一项起了作用。

789:在路径与本地策略之间选择

代码 789 是初始安全协商过程中的处理错误。IPsec 从未生成可用的安全关联,所以账号还没有被测试过。应从路径和共享密钥入手,而不是从账号入手。

确认 UDP 500 和 UDP 4500 能到达服务器,并确认预共享密钥逐字节一致,包括大小写和末尾空格。如果服务器位于 NAT 之后,Windows 可能还需要文档中给出的注册表值。服务器在 NAT 之后时用 1,两端都在 NAT 之后时用 2,然后重启,因为策略代理在启动时读取该值:

reg add "HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent" /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 1 /f

更重的适配器修复属于另一个分支。删除 Wi-Fi 设备和 WAN 微型端口再重新扫描硬件,只有在本地 IPsec 协议栈本身损坏、其他 VPN 类型也以同样方式失败时才值得做。如果只有一个 L2TP 服务器失败而其他网络路径都正常,那是白费功夫。

720:在本适配器与服务器池之间选择

错误 720 表示无法建立到远程计算机的连接,它出现在 IPsec 成功之后。隧道已经走到启动接口或获取地址这一步,然后停住了。因此这是本地适配器问题或服务器容量问题。

用影响范围来判断。只有一台 Windows 机器失败,指向坏的 WAN 微型端口、已停止的 Remote Access 服务或损坏的连接配置文件。多台客户端同时失败,指向服务器:地址池耗尽、RRAS 服务已停止,或地址池已与客户端子网不匹配。先修模式所指的那一侧,再动另一侧。

在单客户端分支上,删除一次 WAN 微型端口并扫描硬件更改,然后重启并重试。在服务器分支上,检查地址池和服务状态而不是客户端,因为重装一块正常的适配器并不能造出服务器没有的地址。

691:在凭据与已停止的辅助服务之间选择

代码 691 是认证拒绝,也是最常被误读成密码错误的代码。隧道已经建立,网关看到了身份并拒绝了它。原因仍可能在密码字段之外。

先检查域字段,再检查密码中的确切字符。含有空格、引号或 shell 特殊字符的密码可能在到达服务器之前就被破坏;在 Linux 上,pppd 会对未加引号的值或缺少域报出与 E=691 相同的拒绝。请重新输入密码而不是粘贴,并清除可能保存旧值的已存凭据。

人们常漏掉的分支是辅助服务已停止。当厂商客户端依赖自己的服务把凭据传给网关时,服务被禁用或崩溃就会产生 691,哪怕密码是对的。在重置账号之前先检查厂商服务状态,尤其是在重启或更新之后。

要区分这两个分支,用同一用户名去试另一个可用的 VPN 配置文件或 RADIUS 测试账号。如果成功,凭据没问题,本地客户端路径可疑。如果同样失败,问题在账号或网关策略。

每次只改一层

从外往内做:可达性与 NAT 穿透,然后是预共享密钥,然后是本地适配器协议栈,然后是凭据,然后是服务器池和服务。这个顺序遵循代码所描述的阶段,并让每个结果都能归因于一次改动。

保留一份简短记录:每次尝试前后的代码、客户端版本,以及改的是服务器还是客户端。像 789、然后 720、然后 691 这样的序列就是进度图;同一个代码出现两次,说明上次改动没有触及那个阶段。重装 Windows 会抹掉这张图,几乎修不好位于网关的故障。

当代码不再变化时,就不要再改东西了。记录当前代码、服务器地址、认证方法和尝试时间,然后与一台正常的客户端对比。两份记录之间的差异,通常比你默认要试的那串修复更小。

相关文章