Files
VibeCoding/WebRTCSignalServer/README.md

155 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# WebRTC 信令服务器 · TURN 部署指南
本项目使用 **coturn** 作为 TURN/STUN 中继服务器,用于解决 WebRTC 在对称型 NAT / 防火墙等复杂网络环境下的连通性问题。
> 当客户端无法直接进行 P2P 连接时,媒体流量将通过 TURN 服务器进行中继转发。
---
## 目录
- [环境说明](#环境说明)
- [一、安装 coturn](#一安装-coturn)
- [二、配置 TURN 服务](#二配置-turn-服务)
- [三、开放防火墙端口](#三开放防火墙端口)
- [四、启动与开机自启](#四启动与开机自启)
- [五、验证连通性](#五验证连通性)
- [配置参数速查](#配置参数速查)
- [常见问题](#常见问题)
---
## 环境说明
| 项目 | 说明 |
| ---- | ---- |
| 操作系统 | Ubuntu / Debian 系(本文以 `apt` 包管理为例) |
| 软件 | `coturn`TurnServer |
| 默认监听端口 | `3478` (UDP/TCP) |
| 中继端口范围 | `49152` - `65535` (UDP) |
---
## 一、安装 coturn
```bash
sudo apt update
sudo apt install coturn -y
```
安装完成后,建议先备份默认配置文件:
```bash
sudo cp /etc/turnserver.conf /etc/turnserver.conf.bak
```
---
## 二、配置 TURN 服务
使用编辑器打开配置文件:
```bash
sudo vim /etc/turnserver.conf
```
将以下内容写入(或按需修改)配置文件:
```ini
# ===== 监听设置 =====
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` 为客户端连接凭证,请在生产环境中替换为强密码。
---
## 三、开放防火墙端口
```bash
# TURN 主服务端口
sudo ufw allow 3478/udp
sudo ufw allow 3478/tcp # WebRTC 可选但建议开启
# TURN 中继端口范围
sudo ufw allow 49152:65535/udp
```
---
## 四、启动与开机自启
```bash
# 重启服务并设为开机自启
sudo systemctl restart coturn
sudo systemctl enable --now coturn
# 查看运行状态(应为 active (running)
systemctl status coturn
```
---
## 五、验证连通性
使用 coturn 自带的客户端工具进行连通性测试:
```bash
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` 并同步放行新端口,同时确保客户端信令配置指向新端口。