XSwitch运维手册
网络与端口
XSwitch 运行涉及多种网络协议和端口。本文梳理系统中使用的主要端口及其用途,帮助运维人员规划网络和防火墙策略。
端口总览
以下是 XSwitch 默认端口配置,实际端口以 .env 文件中的配置为准。
| 端口 | 协议 | 用途 |
|---|---|---|
80 | HTTP | Nginx HTTP 访问端口(Web 管理界面入口) |
7060 | UDP/TCP | SIP 注册端口(default Profile) |
7061 | TLS | SIP 注册端口(TLS) |
7080 | UDP/TCP | SIP Public Profile 端口,用于网关对接 |
7081 | TLS | SIP Public Profile TLS 端口 |
8081 | HTTP/WS | Verto HTTP/WebSocket 端口 |
8082 | HTTPS/WSS | Verto HTTPS/WSS 端口 |
10000-10099 | UDP | RTP 媒体端口范围 |
8021 | TCP | ESL(Event Socket Library)端口 |
5432 | TCP | PostgreSQL 数据库端口 |
端口详细说明
SIP 端口
XSwitch 默认配置了两个 SIP Profile:default 和 public。
default Profile:用于内部用户注册,对所有注册和呼入进行 SIP Challenge 验证鉴权。
SIP_PORT(默认7060):UDP/TCP 注册端口。SIP_TLS_PORT(默认7061):TLS 注册端口。
public Profile:用于外部系统对接(运营商、网关等),对呼入通话不鉴权,需注意限制呼叫权限。
SIP_PUBLIC_PORT(默认7080):UDP/TCP 端口。SIP_PUBLIC_TLS_PORT(默认7081):TLS 端口。
SIP Profile 还支持 WebSocket 协议(WS 和 WSS),各自需要独立端口。通过 SIP Profile 中的 ws-binding 和 wss-binding 参数启用。
HTTP 端口
HTTP_PORT(默认 80):Nginx 代理的 HTTP 访问端口,是 Web 管理界面的入口。启用 Nginx 后,通过 http://IP:HTTP_PORT 访问 XSwitch 管理界面。该端口在 .env 文件中配置。
Verto/WebSocket 端口
Verto 是基于 WebSocket 的协议,用于浏览器 WebRTC 通信。
VERTO_WS_PORT(默认8081):HTTP/WebSocket 端口,同时也是 XSwitch HTTP API 端口。VERTO_WSS_PORT(默认8082):HTTPS/WSS 端口,使用时需配置wss.pem证书。
生产环境中,通常在 Nginx 中配置 HTTPS 证书,通过 proxy_pass 转发给后端 8081(WS)或 8082(WSS)端口。
WebSocket 连接地址示例:
ws://192.168.3.170/ws wss://192.168.3.170/ws
SIP over WebSocket 默认端口:
5066:WS7443:WSS
RTP 媒体端口
RTP 端口范围由 .env 中的 RTP_START 和 RTP_END 定义。
RTP_START(默认10000):RTP 媒体最小端口。RTP_END(默认10099):RTP 媒体最大端口。
注意:在 NAT 环境下(非 host 网络),RTP 端口段不要开得太大,否则会影响效率。生产环境建议咨询 XSwitch 技术支持获取最佳配置。
ESL 端口
ESL_PORT(默认 8021):Event Socket Library 端口,用于外部程序通过 TCP 连接控制 XSwitch。
数据库端口
PostgreSQL 默认监听 5432 端口。在同一服务器运行多个 XSwitch 实例时,需为每个实例分配不同的数据库端口,避免冲突。
.env 端口配置示例
DSN=postgresql://xui:xui@127.0.0.1/xui # 数据库连接地址 DATABASE_URL=postgresql://xui:xui@127.0.0.1/xui?sslmode=disable # 数据库连接地址(含 SSL 配置) HTTP_PORT=80 # Nginx HTTP 访问端口 SIP_PORT=7060 # SIP 注册端口(UDP/TCP) SIP_TLS_PORT=7061 # SIP TLS 端口 SIP_PUBLIC_PORT=7080 # Public Profile 端口 SIP_PUBLIC_TLS_PORT=7081 # Public Profile TLS 端口 VERTO_WS_PORT=8081 # Verto HTTP/WS 端口 VERTO_WSS_PORT=8082 # Verto HTTPS/WSS 端口 RTP_START=10000 # RTP 最小端口 RTP_END=10099 # RTP 最大端口 ESL_PORT=8021 # ESL 端口 EXT_IP=192.168.3.149 # 外部 IP(NAT 环境) LOCAL_IP=192.168.3.149 # 本地 IP
NAT 网络配置
XSwitch 在 NAT 环境下部署时,需要正确配置外部 IP 和本地 IP。
EXT_IP:外部公网 IP 地址,用于 SIP 和 RTP 在 SDP 中携带的地址。LOCAL_IP:服务器本地 IP 地址。
如果使用 Docker NAT 网络模式(非 host 模式),还需注意 RTP 端口范围不宜过大,避免影响性能。
防火墙策略
必须开放的端口
根据实际使用场景,以下端口通常需要在防火墙上放行:
- SIP 信令:
SIP_PORT、SIP_TLS_PORT、SIP_PUBLIC_PORT、SIP_PUBLIC_TLS_PORT(UDP/TCP) - RTP 媒体:
RTP_START至RTP_END范围(UDP) - Web/API:
HTTP_PORT、VERTO_WS_PORT、VERTO_WSS_PORT(TCP) - 数据库:
5432(TCP,仅内部访问)
WSL 环境注意事项
在 Windows WSL 2 的 NAT 模式下,netsh interface portproxy 仅支持 TCP 协议,无法代理 UDP。XSwitch 的 RTP 媒体传输使用 UDP,因此局域网终端与 XSwitch 的媒体将不通。
建议使用 WSL 2 的镜像模式网络或桥接模式,以支持 UDP 流量透传。
Windows 防火墙
从局域网访问 XSwitch 时,需要关闭 Windows 防火墙,或为上述端口添加相应的入站和出站规则。