OpenVPN Access Server 到底在监听哪些端口?
逐一梳理 Access Server 主机上的套接字列表:识别默认监听端口,区分回环与对外发布的端口,并在关闭端口前检查转发关系。
你首先执行 ss -lntup,在 Access Server 主机上会得到一份比预期长一倍的列表。其中一半是安装时没人提过的守护进程端口。人的本能是关闭所有不是 443 或 1194 的端口,而这正是很多人弄坏自己客户门户的方式。
Access Server 不是单一监听者。它同时是 VPN 服务、Web 服务和集群参与者,并且会根据你配置的 TCP 守护进程数量,生成额外的守护进程专用端口和防火墙重定向。
按顺序梳理清单:读取套接字,对应熟悉的端口,再按归属和绑定方式分类其余端口,最后确认到底是谁把它们发布出去的。
先从一个只读命令开始
sudo ss -lntup 会给出每个监听套接字的传输协议、本地地址、端口和所属进程。这些标志很重要:-l 表示监听,-n 表示数字显示,-t 表示 TCP,-u 表示 UDP,-p 表示进程。没有 root 时你能看到套接字,却看不到进程名,而进程名恰恰是分类所需的那一列。
在形成任何判断之前,先为每一行记录四个字段:协议、绑定地址、端口和命令。把 Access Server 版本和已配置的守护进程数量记在这份清单旁边,因为两者都会改变预期。
看起来相同的两行并不相同。同一编号上的 TCP 和 UDP 是两个独立套接字,暴露面也各自独立;0.0.0.0 与 :: 是不同地址族的独立绑定。只绑定到 127.0.0.1 的服务无法从其他主机直接访问,但本地重定向仍可能把它发布出去。
你应该认识的监听者
这些默认值覆盖了大多数部署,可以作为对照基线。它们只是默认值,并非完整白名单。
| Socket | Role to confirm |
|---|---|
| UDP 1194 | OpenVPN UDP tunnel listener |
| TCP 443 | OpenVPN TCP listener, optionally forwarded to the web service |
| TCP 943 | Admin and client web interfaces, and cluster control in Access Server 3.0 and later |
| TCP 945 | Cluster control in older configurations that predate the move to 943 |
超出这些范围的端口需要解释,而不是想当然。你常会看到产品为自身组件安装的仅本地监听。请通过 PID 和服务配置来确认,而不是凭记住的端口号;也不要仅因为端口陌生就把它当成威胁。
熟悉组合之外的套接字也不一定就是遗留物。配置多个 TCP 守护进程时,Access Server 会为每个守护进程创建监听端口并把流量重定向过去,因此它们的数量和端口值都随该配置而变。
关闭任何端口之前先分类
对每一行不确定的记录,按以下顺序回答三个问题。
- 归属与用途。 把 PID 对应到某个单元或进程,并阅读该服务的配置。如果你说不出归属,就没有资格对这个套接字下任何结论。
- 绑定范围。 回环只在命名空间内有效。通配绑定只有在路由、主机过滤以及任何云层面规则都允许时才可达,所以绑定地址是必要条件而非充分条件。请把 IPv4 和 IPv6 当作两个独立决定来检查。
- 对外发布的路径。 查找服务转发、守护进程专用重定向、外部代理以及实际生效的防火墙策略。这一步最容易被跳过,而正是它把看似无害的后端端口变成可达的管理路径。
同一个问题从主机外部看会有不同答案。没有主机防火墙规则的端口仍可能被云安全组关闭,而允许访问的主机规则也可能因为没有任何路由指向而不可达。写清单结论之前,两端都要看。
发布路径与套接字列表不一致的地方
Access Server 官方文档涵盖了最容易混淆的情况:运行多个 TCP 守护进程时,前端端口会转发到守护进程专用端口,可见布局便不再与套接字列表一致。Web 界面过滤教程 说明了这些规则,以及为什么只针对显眼端口编写的过滤器会完全漏掉被重定向的路径。
集群控制是第二个受版本影响的地方。3.0 及以后共用 943;更早的集群配置使用 945。不核对版本就开放或封锁其中一个,会得到一份看似整齐却错误的清单。
因此对外可见的面由三部分组成:正在监听的套接字、重新发布它们的转发规则,以及主机前方的网络控制。任何只记录第一项的清单都不完整,任何只考虑第一项的变更,要么留下通路,要么切断服务。
任何变更之后都要验证
通过受支持的配置归属方修改监听设置,并在操作时保持恢复控制台可用。远程主机上丢失 Web 界面的管理访问权,无法靠你刚刚关闭的 VPN 恢复。
然后验证部署通常需要的四件事:VPN 客户端能连上、客户端门户能加载、管理访问可用、运行多节点时集群通信仍然正常。只测 VPN 时,门户已经坏了也能轻松通过。
最后为每项服务写下允许的路径:哪个套接字、哪种绑定、哪条转发规则、哪项网络控制。这份文档才是有用的安全产出。套接字数量最少不是,把还没识别完的监听端口一次性全关掉也不是。