VPN 身份验证失败:很少是端口或 DNS 的问题
登录被拒绝与超时是两种不同的故障。重试之前,请先检查配置文件、凭据格式、第二因素和证书。
身份验证失败意味着服务接收到了身份并拒绝了它,这比大多数人的理解要狭窄得多。端口是开着的,TLS 会话很可能已经完成,而被拒绝的是凭据或账户中的某个环节。更改网络设置修不好这个问题,反复重试还可能锁住账户。错误文本已经点明了阶段,所以从那里查起。
错误信息已经告诉你哪一阶段失败了
始终无法完成 TLS 握手的连接,根本没有走到身份验证这一步。完成握手之后报告凭据被拒的连接,是走到了这一步并在这里失败。这两种结果需要不同的排查方向,却常被混为一谈,因为最后都只看到一扇关掉的窗口。
OpenVPN 会用服务器返回的 AUTH_FAILED 消息把区别讲清楚:那是一项决定,而不是传输错误。TLS 协商超时或证书校验错误属于更早的阶段。在动凭据之前,先读清楚自己遇到的是哪一种,因为重置密码修不好握手,改防火墙也修不好被拒的登录。客户端日志里的一行就能回答这个问题。
同样的逻辑适用于连上之后又掉线的会话。到第四十分钟才出现的重新认证失败,与首次登录被拒是两种故障,时间间隔本身就是线索。
确认配置文件指向了正确的服务
在服务商网站上使用的账户,未必就是其 VPN 网关所接受的账户。保存下来的配置文件,也可能在服务早已迁移之后仍指向旧网关。
把配置文件里的端点与运营商公布的端点对照,并确认网关查的是哪套身份系统。如果隧道是针对另一个目录做认证的,在网站上重置密码不会有任何作用。无关的公共服务器凭据在你的服务上不会生效,而拿一份来历不明的配置文件去试工作密码,无论如何都不划算。动手输入之前先确认来源。
在配置文件上花两分钟,能省下一天猜凭据的时间。
登录格式也是凭据的一部分
用户名可能需要邮箱形式、域前缀或目录后缀。网关比对的是它收到的那个字符串,所以格式属于凭据的一部分,而不是装饰。
然后在上报之前,先排除那些无聊的原因。检查键盘布局、复制带进来的尾部空格,以及密码管理器里的旧记录。重置之后,确认 VPN 使用的是与改密码那个页面相同的身份来源。这些细节都没问题,就别再猜了,直接问运营商账户是否已启用、是否有 VPN 访问权限。那属于服务端的修正,不是客户端设置。
openvpn --config office.ovpn --verb 3
journalctl -u openvpn-client@office -n 40 --no-pager
带 AUTH_FAILED 的那行日志通常会包含原因码或挑战字符串。求助时请原样复制,不要转述。
第二因素有自己的约定
配置文件可能要求一次性验证码、交互式挑战,或把令牌交还给客户端的浏览器登录。请使用运营商支持的流程,而不是自己发明一套。
除非明确要求这种格式,否则不要把验证码拼在密码后面,因为有些部署使用单独字段,有些则使用挑战字符串。基于时间的验证码要检查设备时钟,几分钟的偏差就会让所有码失效。如果浏览器登录成功而客户端始终不继续,就记下那个确切的点,因为它指向的是交接环节而不是凭据。再重置一次密码多半没有用。
会话数限制是另一种常见的拒绝。如果账户只允许一个会话,第二次登录可能把第一次踢掉,症状看起来像连接在闪断,而不是策略。
证书不是密码
账户密码完全正确时,客户端证书仍可能过期或被吊销。私钥口令又是第三种秘密,它保护的是一个文件而不是账户。
替换任何东西之前先读错误,然后从经过核实的运营商那里取得正确的替换件。做这件事时请保持服务器身份校验开启:接受一张无关的证书,或复制别人的私钥,不是修复,而是第二起事故。接着测试你真正需要的资源,因为隧道连上了但服务不可达,属于另一项排查。把失败的阶段记下来,下一位就不必从头再走一遍。
如果会话建立之后才失败,记录间隔以及附近任何续期事件。这份记录能把令牌寿命问题与首次登录失败区分开,也决定了是五分钟能修好,还是要重试一个星期。