Files
weiyu/deploy/coturn/test_coturn.md

204 lines
4.5 KiB
Markdown
Raw Normal View History

2025-10-09 11:15:44 +08:00
# Coturn 测试指南
## 问题说明
Coturn 是 STUN/TURN 服务器,使用 UDP/TCP 协议,**不是 HTTP 服务器**。因此:
- ❌ 不能直接通过浏览器访问 `http://14.103.165.199:3478/stats`
- ❌ Nginx 无法直接代理 STUN/TURN 协议到 HTTPS
## 正确的测试方法
### 方法 1使用 WebRTC 在线测试工具(推荐)
访问以下任一测试工具:
1. **WebRTC Trickle ICE 测试**(最常用)
- 地址https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
- 操作步骤:
```
STUN or TURN URI: stun:14.103.165.199:3478
TURN URI: turn:14.103.165.199:3478
Username: username1
Password: password1
```
- 点击 "Gather candidates" 按钮
- 如果成功,会显示 `srflx``relay` 类型的候选地址
2. **IceTest 测试**
- 地址https://icetest.info/
- 输入服务器信息进行测试
### 方法 2启用 Coturn Web Admin 界面
修改 `/etc/turnserver.conf` 配置文件,添加以下配置:
```bash
# 启用 Web AdminHTTPS
web-admin
# Web Admin 监听地址0.0.0.0 表示所有接口)
web-admin-ip=0.0.0.0
# Web Admin 端口
web-admin-port=8080
# Web Admin 监听在工作线程上
web-admin-listen-on-workers
```
然后重启 Coturn
```bash
sudo systemctl restart coturn
```
防火墙开放 8080 端口:
```bash
sudo ufw allow 8080
```
访问:`https://14.103.165.199:8080`(注意是 HTTPS不是 HTTP
**注意**:需要配置 SSL 证书才能访问 Web Admin。
### 方法 3启用 Prometheus 监控(推荐用于监控)
修改 `/etc/turnserver.conf`
```bash
# 启用 Prometheus 导出器
prometheus
```
重启 Coturn
```bash
sudo systemctl restart coturn
```
防火墙开放 9641 端口:
```bash
sudo ufw allow 9641
```
访问:`http://14.103.165.199:9641/metrics`
这会返回 Prometheus 格式的监控数据。
### 方法 4使用命令行测试工具
#### 使用 turnutils_uclient 测试
```bash
# 测试 STUN
turnutils_stunclient 14.103.165.199
# 测试 TURN需要提供用户名和密码
turnutils_uclient -v -u username1 -w password1 14.103.165.199
```
#### 使用 telnet 测试端口连通性
```bash
# 测试 TCP 端口是否开放
telnet 14.103.165.199 3478
# 或使用 nc
nc -zv 14.103.165.199 3478
```
### 方法 5查看 Coturn 运行状态
```bash
# 查看服务状态
sudo systemctl status coturn
# 查看实时日志
sudo journalctl -u coturn -f
# 查看端口监听情况
sudo netstat -tulnp | grep turnserver
# 或
sudo ss -tulnp | grep turnserver
# 检查进程
ps aux | grep turnserver
```
## 创建本地测试页面
可以创建一个简单的 HTML 测试页面来测试 TURN 服务器。
## Nginx 配置说明
**重要**Nginx 无法直接代理 STUN/TURN 协议。您的 Nginx 配置 `weiyuai_cn_coturn_443.conf` 中的 `/stats``/admin` 等路径都无法工作。
如果需要通过域名访问:
- **Web Admin**:可以通过 Nginx 代理到 8080 端口(需要先启用 Web Admin
- **Prometheus 监控**:可以通过 Nginx 代理到 9641 端口
修改后的 Nginx 配置建议:
```nginx
# 代理到 Prometheus 监控
location /metrics {
proxy_pass http://14.103.165.199:9641;
# ... 其他配置
}
# 代理到 Web Admin如果启用
location /admin {
proxy_pass https://14.103.165.199:8080;
# ... 其他配置
}
```
## 推荐配置
为了便于监控和测试,建议启用 Prometheus
1. 编辑 `/etc/turnserver.conf`
2. 取消注释 `prometheus`
3. 重启服务:`sudo systemctl restart coturn`
4. 访问:`http://14.103.165.199:9641/metrics`
5. 可以配置 Nginx 代理使其通过 `https://coturn.weiyuai.cn/metrics` 访问
## 常见问题排查
### 1. 连接被拒绝
```bash
# 检查 Coturn 是否运行
sudo systemctl status coturn
# 检查端口是否监听
sudo netstat -tulnp | grep 3478
```
### 2. 防火墙问题
```bash
# 检查防火墙状态
sudo ufw status
# 开放必要端口
sudo ufw allow 3478/tcp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw allow 5349/udp
sudo ufw allow 49152:65535/udp # TURN relay 端口范围
```
### 3. 查看详细日志
```bash
# 实时查看日志
sudo journalctl -u coturn -f
# 或者配置文件中启用详细日志
# 在 /etc/turnserver.conf 中添加:
verbose
log-file=/var/log/turnserver.log
```
## 总结
- ✅ 使用 WebRTC 测试工具https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
- ✅ 启用 Prometheus 监控并通过 Nginx 代理
- ✅ 使用命令行工具测试
- ❌ 不要尝试直接通过浏览器访问 STUN/TURN 端口