对话框提示无法解析服务器名称,而你盯着的配置字段却是一个地址。这种组合并不矛盾:客户端解析的并不是你以为它在读的那个值。在断定 DNS 出问题之前,先弄清它实际拨号的目标是什么。客户端自身步骤的顺序会告诉你该往哪里看。

客户端先解析名称,再发起拨号

Windows 原生 VPN 连接会先读取配置文件、解析服务器地址、启动隧道,然后才进行身份验证。错误 868 属于第二步。由于后续步骤根本不会执行,当解析先失败时,对话框看起来就像凭据问题。

这个顺序很有用,因为它缩小了要检查的层次。当同一个配置从一个网络能用、从另一个网络失败时,差别通常在于名称解析,而不是隧道类型或账户。要在故障发生的网络里测试解析,而不是在配置创建的地方。

字段显示地址时,解析的是哪个名称

要读存储值,而不是显示名称。连接的标签不是它的服务器地址,两条标签相似的条目会让你追错对象:

Get-VpnConnection -Name "Work VPN" |
    Select-Object Name, ServerAddress, TunnelType

如果配置是为所有用户预置的,也要用下面的参数查询该范围:-AllUserConnection。然后从发生故障的网络里,精确解析命令打印出的那个值。要用运营商文档中给出的网关,而不是隧道建立后才解析的内部应用名。第二个查询会按预期失败,对拨号毫无说明:

Resolve-DnsName vpn.example.com

当存储值确实是数字时,要找客户端读取名称的第二个位置。EAP 配置可能引用某个服务器;从其他工具导入的配置可能带有自己的值;早先的安装程序也可能留下重复条目。对话框里的字段并不总是唯一的输入。

Windows 7 的重新连接模式

这个错误背后的讨论帖描述了一些机器:它们先连接成功一次,之后某次尝试就以 868 失败,而配置没有任何改动。参与者报告说,重启 Remote Access Connection Manager 服务或者注销后重新登录,能暂时恢复连接。这些只是绕过办法,并不是已经证实的根因。

把这种模式当成另一个独立假设。重启会重置客户端状态,所以之后的暂时成功并不能证明 DNS 记录有错:

ObservationPoints towardWhat to do next
Fails from one network, works from anotherName resolution on that pathResolve the stored name from both networks
Fails after a disconnect, works after service restartClient state, not DNSRecord the sequence for the vendor
Fails only on a newly provisioned machineProfile content or scopeCompare ServerAddress and TunnelType

把表格读成一组用于区分的观察,而不是诊断结论。第一行是名称问题,第二行是客户端状态,第三行是从来就不正确的配置。每一行都指向不同的人、不同的修法。

该为管理员收集什么

记下配置名称、存储地址、隧道类型、客户端当时所在的网络,以及故障是否发生在断开连接之后。有了这份记录,不用任何人去猜,就能把真正的解析失败和历史性的重连行为分开。还要保留尝试前后的客户端事件日志。

旧版本里的绕过办法只能证明这种行存在过,并不能保证同样的服务重启会修好现在的机器。把文档中的主机名换成字面地址,同样不算修复。

有些配置要求服务器标识与配置的名称一致,所以数字式的绕过办法可能只是把一个错误换成另一个错误。如果名称必须保留,就该修解析路径,而不是改配置文本。无论如何,都要记下改了什么、为什么改。

相关文章