OpenVPN Access Server 与 Community:实际迁移的是什么
Community Edition 和 Access Server 共用 OpenVPN 协议,但不共用管理层。比较哪些内容会迁移、哪些必须重建,以及由谁提供支持。
配置文件会迁移;用户列表留在原地。在 Access Server 与 Community Edition 之间切换的团队,会在切换一小时后遇到这个缺口:第一个客户端完成认证后,却没有组策略、没有按用户的路由,也没有自助密码重置。两个产品使用同一协议、接受同一客户端,正因如此,这个缺口在规划阶段始终看不见。你真正选择的是管理层,以及拥有它的人。
把这项决定当作盘点问题,而不是功能表。问清楚:谁创建用户,谁吊销证书,谁在 02:00 接电话。
为什么 .ovpn 文件并不携带配置
.ovpn 配置文件描述的是一个客户端与一台服务器的关系:远程主机、协议、CA、客户端证书与密钥,以及任何内嵌的 tls-crypt 材料。把这个文件放进新环境,客户端依然能完成握手,于是迁移看起来已经结束。文件里没有任何内容列出用户、他们的组、静态路由,或决定谁被允许连接的政策。这些记录保存在服务器自己的存储中,而两个产品以不同形式存放它们。
在 Community Edition 中,对应物是你自己维护的文件:保存 client-config-dir 条目,其中带有 ifconfig-push 和 iroute 这类按客户端的选项,还有用于吊销的 CRL 和 tls-crypt 密钥。Access Server 把同样的概念放在自己的数据库里,并通过 Web 控制台和 sacli 命令行工具暴露出来。概念一一对应;产物却完全不迁移。
配置文件还会悄悄带入一些直到变化才有人注意的行为。带 redirect-gateway def1 的客户端把所有浏览都送经服务器;把它挪到没有这一行的环境,抱怨就会是“网络坏了”。CA 不匹配或 remote-cert-tls 设置错误会大声失败,这是好结果。缺少 tls-crypt 密钥则以静默超时失败,这就不是好结果了。
管理层拥有什么
数一数不属于协议的东西:账户创建、密码重置、组分配、MFA 注册、连接授权,以及回答“谁在何时连接”的审计轨迹。Community Edition 不直接提供其中任何一项。你要选择认证后端,通过插件或 auth-user-pass-verify 接入 PAM、LDAP 或 RADIUS,其余的自己维护。Access Server 附带用户门户、管理控制台和对常见身份提供商的集成。两种安排默认都不更安全,因为政策仍然必须由了解网络的人来写。
授权是最尖锐的运维差别。Access Server 按并发连接数授权,并在软件中执行这个数量。在 Community Edition 中,全局上限就是一行 max-clients,而任何按用户或按组的限制都意味着更多 client-config-dir 工作和你自己的执行机制。不想承担这种维护的团队,在购买商业产品时买的正是这一点。
许可与支持:没人做预算的那一项
Community Edition 免费且开源。Access Server 是商业产品,其免费层历来只覆盖少量并发连接,超出部分需要付费许可。旧论坛回答里的任何数字现在都已过时,所以在给项目做成本估算之前,先查供应商的当前条款。诚实的比较会把社区侧构建用户管理、MFA 和监控所花的工时,加到商业侧的许可费用上。
支持归属也遵循同样的划分。使用 Community Edition 时,你是每个古怪客户端和每次内核更新的升级路径。使用 Access Server 时,你有供应商可以联系,并且无论其发布节奏是否适合你的变更窗口,你都要继承它。
切换前要做的检查
在朝任一方向切换之前,先盘点运行中的服务器实际持有什么。在 Access Server 一侧,导出用户列表和组分配,并记录哪些账户依赖 MFA。在 Community Edition 一侧,列出已签发的证书、CRL 以及 client-config-dir 下的每个文件。逐行比较两份清单,因为它们的差异就是迁移工作。
在老服务仍在运行时测试有代表性的客户端。在前台运行 openvpn --config client.ovpn --verb 4 会打印握手、推送的路由和 DNS 选项,openssl x509 -in client.crt -noout -subject -enddate 则显示客户端实际出示的是哪张证书。能连接但到不了内部主机的客户端,缺的是路由或 iroute,而不是认证失败。
保留旧的恢复路径,直到 替代方案既通过成功测试,也通过拒绝访问测试。把最终对照表写在一页上:每项需求、今天满足它的产物,以及之后将满足它的产物。