3.7 KiB
3.7 KiB
WebRTC 信令服务器 · TURN 部署指南
本项目使用 coturn 作为 TURN/STUN 中继服务器,用于解决 WebRTC 在对称型 NAT / 防火墙等复杂网络环境下的连通性问题。
当客户端无法直接进行 P2P 连接时,媒体流量将通过 TURN 服务器进行中继转发。
目录
环境说明
| 项目 | 说明 |
|---|---|
| 操作系统 | Ubuntu / Debian 系(本文以 apt 包管理为例) |
| 软件 | coturn(TurnServer) |
| 默认监听端口 | 3478 (UDP/TCP) |
| 中继端口范围 | 49152 - 65535 (UDP) |
一、安装 coturn
sudo apt update
sudo apt install coturn -y
安装完成后,建议先备份默认配置文件:
sudo cp /etc/turnserver.conf /etc/turnserver.conf.bak
二、配置 TURN 服务
使用编辑器打开配置文件:
sudo vim /etc/turnserver.conf
将以下内容写入(或按需修改)配置文件:
# ===== 监听设置 =====
listening-ip=0.0.0.0
listening-port=3478
# ===== 公网 IP =====
# 云服务器此处必须填写公网 IP,切勿填写内网 IP
external-ip=你的公网IP
# ===== 认证(WebRTC 必须开启,否则客户端无法连接)=====
lt-cred-mech
user=testuser:testpass
# realm 可填写任意域名,但不能留空
realm=yourdomain.com
# ===== 中继端口范围(TURN 转发媒体流量使用)=====
relay-port-range=49152-65535
# ===== 日志 =====
verbose
⚠️ 注意
external-ip必须填写服务器的公网 IP,而非内网 IP。realm不能为空,可填写任意域名。user为客户端连接凭证,请在生产环境中替换为强密码。
三、开放防火墙端口
# TURN 主服务端口
sudo ufw allow 3478/udp
sudo ufw allow 3478/tcp # WebRTC 可选但建议开启
# TURN 中继端口范围
sudo ufw allow 49152:65535/udp
四、启动与开机自启
# 重启服务并设为开机自启
sudo systemctl restart coturn
sudo systemctl enable --now coturn
# 查看运行状态(应为 active (running))
systemctl status coturn
五、验证连通性
使用 coturn 自带的客户端工具进行连通性测试:
turnutils_uclient -v -u testuser -w testpass 你的公网IP
若输出中包含成功分配中继地址(allocation)的日志,说明 TURN 服务工作正常。
配置参数速查
| 参数 | 说明 | 默认值 |
|---|---|---|
listening-ip |
监听的网卡 IP | - |
listening-port |
监听端口 | 3478 |
external-ip |
公网 IP(云服务器必填) | - |
lt-cred-mech |
启用长期凭证认证 | 关闭 |
user |
连接账号 用户名:密码 |
- |
realm |
认证域(必填) | - |
relay-port-range |
中继端口范围 | - |
verbose |
输出详细日志 | 关闭 |
常见问题
Q:客户端始终无法连接?
- 确认
lt-cred-mech已开启,且客户端使用的user/realm与服务端一致。 - 确认云服务器的安全组与本地
ufw均已放行对应端口。 - 确认
external-ip填写的是公网 IP。
Q:中继流量不通?
- 检查
49152:65535/udp端口范围是否在防火墙与云安全组中放行。
Q:如何修改默认端口?
- 修改
listening-port并同步放行新端口,同时确保客户端信令配置指向新端口。