手机毫无怨言地接入路由器的 VPN,而同在一个 Wi-Fi 下的笔记本却不行。同样的凭据,同样的服务器,同一分钟。差别在于协议支持而非密码:路由器提供了一种由一个操作系统实现、另一个从未实现的配置。

先确认是哪一种配置,再把它与每个客户端实际支持的协议对照。

一个菜单,三种协议

在同一个 IPsec 标题下,家用固件可能藏着三种截然不同的隧道。第一种是带 XAUTH 的 IKEv1:先共享一个组密钥,再在其上叠加用户名和密码。第二种是 L2TP/IPsec,PPP 运行在由共享密钥保护的 IPsec 传输之中。第三种是用证书或 EAP 认证的 IKEv2。

看字段,而不是看标签。组密钥加用户列表意味着 IKEv1 XAUTH。预共享密钥加 PPP 账户意味着 L2TP/IPsec。没有组密钥的服务器证书意味着 IKEv2。

手机与笔记本之间的支持落差

安卓内置 IKEv1 XAUTH PSK 客户端,这正是手机能连上不提供其他任何方式的路由器的原因。Windows 没有:它的原生客户端只处理 L2TP/IPsec 和 IKEv2,没有可开启的 IKEv1 XAUTH 选项。重输密钥无济于事,因为缺的是协议,不是凭据。

苹果这边是移动的靶子。较新的 macOS 和 iOS 版本转向 IKEv2,旧式 Cisco 配置在某些版本中仍能存活,而一次升级就可能移除或收紧上个月还能用的东西。昨天能连、今天不能连,且路由器没有改动,通常就是这个原因。

两种会毁掉本来正确配置的设置

Synology 的 L2TP/IPsec 页面有一个复选框,标为 Enable SHA2-256 compatible mode (96 bit)。从 iOS 14 和 macOS Big Sur 起,苹果客户端会拒绝这种被截断的模式,因此必须为它们取消勾选。若保持开启,隧道会通过认证然后掉线,看起来像凭据错误,其实不是。厂商对该开关有文档说明,而它开始变得要紧的常见时机正是一次操作系统升级。

Windows 把证书放在两个独立的存储区里,IKEv2 只读取计算机那一处。把客户端证书连同其私钥导入计算机账户;放在你自己的用户账户下的证书会出现在管理控制台里,却永远到不了 IKEv2 服务。EAP-TLS 是唯一可以使用用户证书的情形,而签发它的 CA 仍必须被本机信任。这里出错会表现为认证失败,而不是提示缺少证书。

当路由器保持原样

只会 XAUTH PSK 的路由器留下三条路:厂商客户端、仍然实现该配置的第三方客户端,或者把隧道端点搬到会说 IKEv2 的设备上。例如 AVM 为其路由器发布了 Windows 客户端软件和导出的配置文件。这条路是有支持的,代价是每台笔记本都要装一个厂商工具。

当笔记本不归你重建时,支持比优雅更重要。

也要权衡安全成本。一个组密钥覆盖所有用户,谁持有它就能冒充服务器,截获客户端提交的用户名和密码。在能用证书版 IKEv2 的地方,那次迁移比任何客户端变通都更值得。

由外向内诊断

先从手机取得一个可用会话,让服务器一侧在笔记本登场前就得到证明。然后原样导入路由器导出的配置,读客户端日志而不是路由器的状态页。如果日志里没有任何提案发出,说明笔记本根本没到达响应方。如果提案交换后失败,分歧就在算法、身份或凭据上。

把能用的手机配置留作对照。固件更新后只有笔记本坏了,说明服务器一侧与之前一致。两个都坏了,就在动任何客户端之前先查证书或监听端口。

相关文章