在一台桌面上能用的配置,只说明对单个客户端的测试成功。它不是跨平台部署,若当作跨平台部署来对待,就会出现熟悉的支持模式:Windows 能连接,手机在身份校验处失败,受管笔记本每次唤醒都要重连。差异真实存在且大多可预测,因此计划应当是一张矩阵表,而不是一张截图。

先确定身份契约

在讨论算法之前,先记录服务器身份、证书信任以及客户端认证方式。这三项决定客户端究竟能否认证,也正是各平台表达方式不同的部分。

检查各平台如何命名预期标识符、如何处理主体备用名称。一个在某个客户端上接受服务器名称的配置,可能在另一个客户端上拒绝同一张证书,因为标识符字段填入的是另一个值。

Contract elementWhat to decideWhere platforms diverge
Server identityName or address the client must seeIdentifier field and SAN matching
Client authenticationCertificate, EAP method or bothWhich EAP variants exist and how prompts appear
Trust anchorWhich CA and how it is deliveredStore location and provisioning path

再选择加密交集

比较每个受支持客户端能提供的提案,选出网关也允许的现代交集。不要为了让一台旧设备连上就启用过大的旧算法列表,因为这份列表会成为后来所有连接的网关默认值。写清每个旧选项为何仍在。如果没人能说出需要它的设备,那它就不是需求。

在计划中把 IKE 与 CHILD 设置分开。 对 IKE 交换可接受的提案,未必自动适用于受保护流量,两者分开协商。某一层接受该提案的网关,在另一层仍可能拒绝,日志会显示看起来像第一层成功的失败。

通过经过验证的流程下发凭据,把用户密码、共享密钥和客户端私钥放在各自字段中。在同名框上反复试错,正是让可用测试变得不可复现的原因。

测试生命周期,而不是稳态

对每个客户端,测试初始认证、预期应用、DNS 解析和地址族覆盖。然后演练只在后期才出现的部分:续期、休眠和正常网络切换。

MOBIKE 支持与重新认证行为,可能与你刚测得的稳态结果不同。记录当时的事件和关联状态,而不只是接口最终看起来是否已连接。

定义 VPN 不可用时直连流量可以做什么。这是与客户端是否重连相独立的策略决定,多数部署只回答了后者,却忽略了前者。把答案写进配置文件名称旁边的部署说明。故障期间总有人需要它,而那时没有时间重新推断。

当某个平台不同意时,使用服务器身份检查

当配置在一个平台上可用、另一个平台却拒绝其名称时,比较客户端实际发送的标识符与证书携带的标识符。这一比较通常比更换密码套件列表更快解决这类问题。

把测试过的矩阵与配置来源、更新流程放在一起。旧客户端支持结束时,主动移除它的例外,而不是把更弱的兼容设置留在网关里等下一次审计发现。strongSwan 的 IKEv2 文档是了解这些交换如何配置的有用参考。

相关文章