Coturn STUN/TURN 服务器
第三方组件说明
以下说明仅供参考,具体配置和使用方法请参考 Coturn 官方文档。
概述
Coturn 是一个开源的 STUN/TURN 服务器,用于处理 WebRTC 通信中的 NAT 穿越问题。它是 WebRTC 应用必不可少的基础设施组件。
主要功能
- STUN 服务:帮助客户端发现自己的公网 IP 和端口
- TURN 服务:在无法直接连接时提供媒体中继服务
- 高性能:C/C++ 编写,支持高并发连接
- 多协议支持:支持 UDP、TCP、TLS、DTLS 等协议
- 认证机制:支持多种用户认证方式
应用场景
- WebRTC 视频会议
- 实时音视频通信
- P2P 文件传输
- 在线游戏
- IoT 设备通信
系统要求
- 操作系统:Linux(推荐 Ubuntu 18.04+/CentOS 7+)
- 内存:最少 512MB RAM(推荐 1GB+)
- 网络:公网 IP 地址
- 端口:3478(默认)+ RTP 端口范围
安装
快速安装
使用系统包管理器安装:
# Ubuntu/Debian
sudo apt update
sudo apt install coturn
# CentOS/RHEL
sudo yum install epel-release
sudo yum install coturn
# 验证安装
turnserver --help
源码编译安装
如需最新版本或自定义编译:
# 安装依赖
sudo apt install build-essential debhelper libssl-dev libevent-dev libhiredis-dev libmysqlclient-dev libpq-dev
# 下载源码
git clone https://github.com/coturn/coturn.git
cd coturn
# 编译安装
./configure
make && sudo make install
验证安装
# 检查版本
turnserver --help
# 查看服务状态
sudo systemctl status coturn
基本配置
配置文件位置
Coturn 的主要配置文件:
# 主配置文件
/etc/turnserver.conf
# 服务启用配置
/etc/default/coturn
# 日志文件
/var/log/turnserver.log
快速配置
1. 启用 Coturn 服务
编辑 /etc/default/coturn
:
# 去掉注释,启用服务
TURNSERVER_ENABLED=1
2. 基础配置
编辑 /etc/turnserver.conf
:
# 备份原配 置
sudo cp /etc/turnserver.conf /etc/turnserver.conf.backup
# 基本配置(将以下内容添加到配置文件)
listening-port=3478 # 监听端口
external-ip=YOUR_PUBLIC_IP # 服务器公网IP
user=username1:password1 # 认证用户
user=username2:password2 # 可配置多个用户
realm=your-domain.com # 域名配置
配置提示:将
YOUR_PUBLIC_IP
替换为服务器的真实公网 IP,your-domain.com
替换为你的域名。
详细配置示例
完整的 /etc/turnserver.conf
配置:
# 监听配置
listening-port=3478
listening-ip=0.0.0.0
external-ip=YOUR_PUBLIC_IP
# 认证配置
user=username1:password1
user=username2:password2
realm=your-domain.com
# 安全配置
fingerprint
lt-cred-mech
# 日志配置
log-file=/var/log/turnserver.log
verbose
# 端口范围(RTP媒体端口)
min-port=10000
max-port=20000
# 性能配置
max-bps=0
bps-capacity=0
stale-nonce=600
# 禁用不必要的功能
no-stdout-log
no-cli
端口配置
Coturn 需要开放以下端口:
端口类型 | 默认端口 | 协议 | 说明 |
---|---|---|---|
STUN/TURN | 3478 | UDP/TCP | 主要服务端口 |
STUNS/TURNS | 5349 | UDP/TCP | 安全服务端口(可选) |
RTP 媒体端口 | 10000-20000 | UDP | 媒体传输端口范围 |