Windows VPN 错误 691:究竟是哪一步校验失败了?
同一个对话框涵盖了多种不同的拒绝。在重置账户之前,先核对字面登录名、已保存的凭据以及服务器的决定。
Windows 拒绝了一个一分钟前在别处还能通过的密码,于是账户看起来像坏了,而这次尝试其实从未被评估过。错误 691 表示连接在身份验证阶段被拒绝,而客户端无论密码错误、账户名解析成意料之外的身份,还是服务器端策略拒绝连接,显示的都是同一段文字。三种不同的修复方式共用一条提示,所以重置有时有效,有时毫无变化。先从你能独立检查的部分入手:客户端提交的确切字符串,以及它取用凭据的存储位置。然后再向服务器询问它记录了哪一项决定,因为这个对话框是一次拒绝,而不是一次诊断。
被拒绝的三种途径,同一个对话框
密码错误只是走到这个对话框的第一种途径。账户名可能被解析成你并不想要的身份,账户可能没有拨入权限,或者服务器端条件在密码通过之后仍拒绝连接。这些情况都会产生相同的客户端文字,而每一种都有自己的修复方式。
所以重置在周一看起来有效,到了周二却什么也没改变。 把这个对话框读成一次拒绝,而不是一次诊断,并在动账户之前记下配置文件名称和故障发生的本地时间。
这三类失败也发生在不同层面。密码错误导致身份证明失败,账户形式不对导致查找失败,而策略条件则在身份证明之后导致授权失败。只有第一种能通过改密码修好。另外两种需要能访问服务器决定记录的人,所以下一步是索取信息,而不是再重置一次。
客户端实际发送了什么
与网关的运维人员确认可接受的账户格式,因为裸用户名、带域限定的名称和用户主体名称可能解析成不同的账户上下文。其中可能只有一种才是持有权限的身份。在第一次尝试之前、而不是第五次之后,就问清网关期望哪种形式,并检查客户端是否在复用已保存的凭据,而不是你刚输入的那一个。
在 Windows 机器上运行两条只读查询,就能看到配置文件以及任何可能压过对话框的缓存凭据。两条都不会拨号到服务器:
Get-VpnConnection -Name 'Corp VPN' | Format-List Name, ServerAddress, TunnelType, AuthenticationMethod
cmdkey /list | Select-String -Pattern 'corp' -SimpleMatch把密码当作数据,而不是从文档里复制出来的文本。经过脚本传递的值可能带有从来不属于密码本身的转义字符,配置导出也可能把它放进了引号里。为了让密码“能用”而删掉所有特殊字符,和找出真正的值是不同的改动,所以先确定真正的值。
去拿策略决定,而不是重置
在使用网络策略服务器的远程访问部署中,两项决定依次执行。身份验证确定是哪个账户在提问,授权则决定这个账户到底能不能连接。策略的条件和约束按各自的规则评估,所以密码正确只解决了问题的一半。服务器事件里的策略名称会指明实际执行的是哪一项决定。
把配置文件名称、尝试的账户和时间戳发给管理员。要求对方提供对应的决定记录及其原因,而不是再做一次密码重置,同时索要事件所带的策略名称。Microsoft 远程访问错误代码参考把 691 列在凭据与身份验证失败之中,正因如此,这个对话框无法区分三种情况。
把账户改成无条件放行,会把一项授权决定变成永久例外。它还会移除原本在做有用功的条件,而下一位审查策略的人不会知道它为什么被改过。更好的做法是请所有者确认预期的策略,让放行保持为有意为之。
再试一次,然后做比较
在你确认的那一处修正之后,重复同一个配置文件。如果访问被接受,而某个内部资源仍然失败,那么故障已经转移到另一层,不再说明密码的问题。保持配置文件不变,才让这次比较有意义。
在拒绝被解释清楚之前,不要急着禁用某个地址族或开启详细跟踪。跟踪产生的是数量,而不是决定,第一个有用的结果仍然是拒绝这次尝试的组件以及它记录的原因。等这一点明确之后,重试要么确认修复,要么给出一个更窄的新症状。