为不止一个客户端规划 IKEv2 设置
一个能用的桌面配置文件只验证过一个客户端。先约定身份契约,再选一个受支持的加密交集,然后按平台测试续期和休眠。
在一台桌面上能用的配置,只说明对单个客户端的测试成功。它不是跨平台部署,若当作跨平台部署来对待,就会出现熟悉的支持模式:Windows 能连接,手机在身份校验处失败,受管笔记本每次唤醒都要重连。差异真实存在且大多可预测,因此计划应当是一张矩阵表,而不是一张截图。
先确定身份契约
在讨论算法之前,先记录服务器身份、证书信任以及客户端认证方式。这三项决定客户端究竟能否认证,也正是各平台表达方式不同的部分。
检查各平台如何命名预期标识符、如何处理主体备用名称。一个在某个客户端上接受服务器名称的配置,可能在另一个客户端上拒绝同一张证书,因为标识符字段填入的是另一个值。
| Contract element | What to decide | Where platforms diverge |
|---|---|---|
| Server identity | Name or address the client must see | Identifier field and SAN matching |
| Client authentication | Certificate, EAP method or both | Which EAP variants exist and how prompts appear |
| Trust anchor | Which CA and how it is delivered | Store location and provisioning path |
再选择加密交集
比较每个受支持客户端能提供的提案,选出网关也允许的现代交集。不要为了让一台旧设备连上就启用过大的旧算法列表,因为这份列表会成为后来所有连接的网关默认值。写清每个旧选项为何仍在。如果没人能说出需要它的设备,那它就不是需求。
在计划中把 IKE 与 CHILD 设置分开。 对 IKE 交换可接受的提案,未必自动适用于受保护流量,两者分开协商。某一层接受该提案的网关,在另一层仍可能拒绝,日志会显示看起来像第一层成功的失败。
通过经过验证的流程下发凭据,把用户密码、共享密钥和客户端私钥放在各自字段中。在同名框上反复试错,正是让可用测试变得不可复现的原因。
测试生命周期,而不是稳态
对每个客户端,测试初始认证、预期应用、DNS 解析和地址族覆盖。然后演练只在后期才出现的部分:续期、休眠和正常网络切换。
MOBIKE 支持与重新认证行为,可能与你刚测得的稳态结果不同。记录当时的事件和关联状态,而不只是接口最终看起来是否已连接。
定义 VPN 不可用时直连流量可以做什么。这是与客户端是否重连相独立的策略决定,多数部署只回答了后者,却忽略了前者。把答案写进配置文件名称旁边的部署说明。故障期间总有人需要它,而那时没有时间重新推断。
当某个平台不同意时,使用服务器身份检查
当配置在一个平台上可用、另一个平台却拒绝其名称时,比较客户端实际发送的标识符与证书携带的标识符。这一比较通常比更换密码套件列表更快解决这类问题。
把测试过的矩阵与配置来源、更新流程放在一起。旧客户端支持结束时,主动移除它的例外,而不是把更弱的兼容设置留在网关里等下一次审计发现。strongSwan 的 IKEv2 文档是了解这些交换如何配置的有用参考。