XSwitch运维手册

网络与端口

XSwitch 运行涉及多种网络协议和端口。本文梳理系统中使用的主要端口及其用途,帮助运维人员规划网络和防火墙策略。

端口总览

以下是 XSwitch 默认端口配置,实际端口以 .env 文件中的配置为准。

端口协议用途
80HTTPNginx HTTP 访问端口(Web 管理界面入口)
7060UDP/TCPSIP 注册端口(default Profile)
7061TLSSIP 注册端口(TLS)
7080UDP/TCPSIP Public Profile 端口,用于网关对接
7081TLSSIP Public Profile TLS 端口
8081HTTP/WSVerto HTTP/WebSocket 端口
8082HTTPS/WSSVerto HTTPS/WSS 端口
10000-10099UDPRTP 媒体端口范围
8021TCPESL(Event Socket Library)端口
5432TCPPostgreSQL 数据库端口

端口详细说明

SIP 端口

XSwitch 默认配置了两个 SIP Profile:defaultpublic

  • 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-bindingwss-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:WS
  • 7443:WSS

RTP 媒体端口

RTP 端口范围由 .env 中的 RTP_STARTRTP_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_PORTSIP_TLS_PORTSIP_PUBLIC_PORTSIP_PUBLIC_TLS_PORT(UDP/TCP)
  • RTP 媒体RTP_STARTRTP_END 范围(UDP)
  • Web/APIHTTP_PORTVERTO_WS_PORTVERTO_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 防火墙,或为上述端口添加相应的入站和出站规则。

自动维护