无头 OpenVPN 网关需要哪些软件角色
小型 OpenVPN 网关需要刻意设计的隧道服务和管理通道,而不是每个可选的服务器角色。请把隧道与 SSH 和 PKI 分开。
专用于 OpenVPN 网关的机器需要受支持的服务器安装,以及它实际承担的工作所需的软件。安装程序菜单里列出的 SSH、Web 托管和其他服务器角色,并不是 OpenVPN 的前置条件清单。无头部署完全合理。关键在于把三项工作分开:承载隧道、管理主机、签发凭据。
下面是我使用的清点顺序,以及为每一步收尾的检查。
1. 让隧道服务拥有自己的软件包和配置档
Ubuntu 的 OpenVPN 服务器指南 使用发行版的 openvpn 软件包,配合命令行和 service 配置。同一个软件包也能作为 Linux 客户端,角色由配置决定。
这意味着安装客户端 GUI 不会把主机变成服务器,卸载它也不会让主机变成无头。记录运行中的实例读取的是哪个配置档,因为同一目录下的第二个配置文件可能在无人察觉时被加载,而守护进程在两种情况下都会报告成功。当存在两个配置档时,由服务管理器决定哪一个生效,这个结论应当写进你的笔记,而不是靠猜。
2. 先确定管理通道,再谈隧道
OpenSSH 来自独立的 openssh-server 软件包,作为自己的服务运行。当管理员需要通过 SSH 访问机器时它很有用,但 OpenVPN 交换 VPN 数据包并不需要 SSH 服务器。本地控制台或经批准的平台管理通道也是有效路径。在修改路由或过滤之前,先确定你依赖哪一条,因为新隧道永远不该成为修复自身的唯一未经验证途径。
3. 由经批准的归属方签发凭据
Ubuntu 的示例会随 OpenVPN 一起安装 easy-rsa 来搭建小型 PKI,这属于签发凭据的角色,而不是运行中的隧道服务。如果组织已有经批准的签发流程,就用它,不要仅因为教程里有一个就另建一个无关的 CA。把网关自己的私钥和证书与 CA 签名密钥分开保存,并有意识地选择签名和备份的位置。把每个 PKI 文件复制到每台主机并不是软件要求。
4. 桌面插件留给桌面
NetworkManager 编辑器或导入插件在采用该工作流的机器上有其用途。它不是网关会说 OpenVPN 就必须额外加装的服务器功能。
为连接指定唯一的归属方,不要再启动由桌面管理的同一配置档的第二份副本。
5. 用真实客户端验收网关
软件包更少不等于网关已经完成。服务器仍然需要经批准的监听器、身份、路由、按需的转发、范围收窄的防火墙策略,以及预期的回程路径。写下日志出现在哪里、更新如何应用,因为这两个答案决定了日后故障怎样被诊断。
互联网出口设计和私有网络访问设计的转发要求不同,所以在开放任何东西之前先确定你在做哪一种。拉起一个经批准的客户端,检查预期资源而不是隧道指示器。然后以可控方式重启服务,确认无人值守的启动路径,因为只在有人盯着时才起来的网关还不算完成部署。