OpenVPN 与 IKEv2 之争常被当作协议问题来讨论,而这种框架浪费了决策。真正决定的是,你的服务器与设备是否支持同一套完整配置,以及这套配置能否承受你在网络之间的移动方式。两个栈并不互相转换:一个 OVPN 文件不是换了语法的 IKEv2 配置。按顺序做四项检查,比任何功能对照表都更快回答这个问题。

缺少客户端就没有讨论余地

Windows 和 macOS 自带 IKEv2 客户端,因此在那些平台上部署 IKEv2 配置没有额外成本,还能沿用操作系统已经提供好的配置选项。在同一批机器上用 OpenVPN 就意味着要安装、更新并支持一个第三方客户端,而该客户端必须接受配置里用到的每一个选项。在比较其他任何东西之前,先数清你必须覆盖的平台,因为一个没有可用客户端的平台根本算不上比较对象。

在 Windows 上,一条命令就能列出已经存在的配置,并显示每个配置的类型。它打印出来的名字,就是后续检查要用的名字。

Get-VpnConnection -AllUserConnection
Get-VpnConnection -Name <profile-name> | Select-Object Name, ServerAddress, TunnelType

提示安装客户端,就是这些平台上 OpenVPN 一栏的真实答案,而这属于部署任务,不是协议限制。两种安排都不会省掉信任检查、身份验证或维护。在做出承诺之前,先问清配置如何分发、凭据如何续期、丢失的设备如何撤销。再简单的安装,也可能藏着没人愿意在周末执行的恢复流程。

移动性是双方共同的设置,不是协议承诺

当两端都支持并启用时,IKEv2 可以使用 MOBIKE,让客户端在地址变化时保留隧道。RFC 4555 定义了这项扩展,而条件措辞很关键:忽略该能力的服务器会改为重新协商。结果在文件传输时可能看起来完全一样,在实时通话时却可能截然不同。

用你能盯着看的运行中任务,去测试你真正在意的那种切换。在 Windows 上让 ping -t <internal-host> 一直运行,其他平台用普通 ping,然后从 Wi-Fi 切到蜂窝网络,观察是否出现空档。MOBIKE 失败会在客户端日志里表现为一次完整的重新认证,而不是安静地更新地址。你要测的是隧道能否挺过这次变化,而不是协议是否宣称支持。

OpenVPN 客户端按各自平台的行为和配置里的计时器重连,所以同一个测试可能呈现出不同形态的中断。比较对你用户真正重要的事件,而不是协议上的标签。

凭据属于服务,不属于栈

证书和其他登录安排都属于终止连接的那个服务。一个客户端里的密码提示,说明不了与另一个客户端是否兼容;一套能在别的网关跑通的配置,也说明不了这个网关。比较两个栈时,先让服务器身份规则保持原样。在没定位故障之前就换协议,通常只会得到第二套不兼容的配置。

在怪罪任何一个协议之前,先检查客户端将要出示的凭据,因为过期或签发错误的证书在两边都会以同样方式失败。下面的输出在不读取私钥的情况下显示主题、签发者和有效期。

openssl x509 -in client.crt -noout -subject -issuer -dates

公司连接就用公司公布的方法,别再拿比较当实验。如果你要自己比较两者,先确认两个选项是否落在同一个网关,因为这一个细节决定了你的结论里有多少是在谈协议。点名凭据的拒绝就是凭据问题,换多少协议都修不好。

检查隧道实际路由了什么

连上之后,确认需要的路由存在、名字能够解析。为内部资源而存在的配置,可能有意把普通浏览留在本地路径上,这是策略决定,不是故障。真正重要的是,团队使用的目标能否经隧道到达。

在 Windows 上,两条命令分别覆盖路由与名称查询。Linux 上的对应命令是 ip route show default 和 resolvectl query <internal-host>。

Get-NetRoute -DestinationPrefix 0.0.0.0/0
Resolve-DnsName <internal-host>

隧道起来了却什么都没路由,是配置在服务之间被复制时的常见结果,而通用连通性测试看不出来,因为接口是通的。要测用户最先打开的资源和地址,而不是任何路径都能到达的公网地址。如果名字解析到公网地址、路由却指向隧道内部,那么 DNS 答案和路由属于两个不同的决定,两边都要修。

检查之后再权衡维护

抽象地说,没有哪个协议更好维护。维护取决于谁运营网关、配置如何到达设备,以及丢失的设备多快失去访问。简单的终端客户端,背后可能是更难运营的服务器,反过来也一样。问问团队在搭建者离开之后,还能让哪一个继续跑下去。

选一个能覆盖工作的受支持连接,然后拿你真正需要的访问去测它,而不是拿功能清单去测。记录每个选项终止在哪个网关,因为两个不同的网关会让比较既关乎路由,也关乎协议。在你真正会带在身上的设备上重做四项检查,并保留能通过的那套配置。

相关文章