如果使用 Google 提供的 STUN/TURN 服务器速度较慢,你完全可以自己搭建 STUN 和 TURN 服务器。这有助于提升网络连接速度和稳定性,特别是在需要穿透 NAT 或防火墙的网络环境下。
下面是如何自己搭建 STUN 和 TURN 服务器的具体步骤:
1. 选择 TURN/STUN 服务器软件
推荐使用 Coturn,这是一个开源且功能强大的 STUN 和 TURN 服务器。Coturn 支持完整的 STUN、TURN 和 Relay 功能,适用于 WebRTC 应用。
2. 安装 Coturn
在 Ubuntu/Debian 上安装
打开终端,使用以下命令安装 Coturn:
sudo apt updatesudo apt install coturn
在 CentOS 上安装
使用以下命令安装 Coturn:
sudo yum install epel-releasesudo yum install coturn
3. 配置 Coturn 服务器
安装完成后,需要配置 Coturn。配置文件通常位于 /etc/turnserver.conf
或 /etc/coturn/turnserver.conf
。
编辑配置文件
使用文本编辑器编辑配置文件:
sudo nano /etc/turnserver.conf
配置文件示例
你可以根据自己的需求配置 Coturn,以下是一个基本的配置示例:
# 监听的端口,默认是 3478listening-port=3478# 如果需要启用 TLS,请启用 5349 端口# tls-listening-port=5349# 服务器公网 IP 地址external-ip=YOUR_PUBLIC_IP# STUN 服务fingerprintlt-cred-mech# TURN 认证(使用用户名和密码)user=exampleuser:examplepassword# Realm(一个标识符,可以随便设置)realm=example.com# 使用 long-term credentialslt-cred-mech# 如果要记录日志,请取消注释# log-file=/var/log/turnserver/turnserver.log# simple-log# 设置中继服务器的网络接口relay-ip=YOUR_PUBLIC_IP# 设置服务器的最大并发连接数max-bps=0# 设置监听的 IP 地址listening-ip=0.0.0.0# 使用身份验证时使用的密钥# static-auth-secret=YOUR_SECRET_KEY
将 YOUR_PUBLIC_IP
替换为服务器的公网 IP 地址,将 exampleuser
和 examplepassword
替换为你自己的用户名和密码。
启用服务并设置开机启动
编辑好配置文件后,保存并退出编辑器。然后启用 Coturn 服务并设置为开机启动:
sudo systemctl enable coturnsudo systemctl start coturn
4. 防火墙配置
确保服务器的防火墙允许 STUN 和 TURN 相关的端口(通常是 3478
和 5349
)。使用以下命令打开这些端口:
在 Ubuntu 使用 UFW
sudo ufw allow 3478/tcpsudo ufw allow 3478/udpsudo ufw allow 5349/tcpsudo ufw allow 5349/udp
在 CentOS 使用 FirewallD
sudo firewall-cmd --zone=public --add-port=3478/tcp --permanentsudo firewall-cmd --zone=public --add-port=3478/udp --permanentsudo firewall-cmd --zone=public --add-port=5349/tcp --permanentsudo firewall-cmd --zone=public --add-port=5349/udp --permanentsudo firewall-cmd --reload
5. 测试 Coturn 服务器
配置完成后,可以在 WebRTC 应用中测试新搭建的 STUN/TURN 服务器。将 WebRTC 连接配置中的 STUN/TURN 服务器 URL 修改为你自己的服务器 IP 地址:
const configuration = { iceServers: [ { urls: 'stun:YOUR_SERVER_IP:3478' }, { urls: 'turn:YOUR_SERVER_IP:3478', username: 'exampleuser', credential: 'examplepassword' } ]};
将 YOUR_SERVER_IP
替换为你的服务器的公网 IP,exampleuser
和 examplepassword
替换为配置文件中的用户名和密码。
6. Coturn 服务器常见配置说明
listening-port
: 默认监听的端口是 3478,TURN 协议的标准端口。tls-listening-port
: 启用安全的 TLS 连接时的端口,默认是 5349。user
: 设置用户名和密码来控制访问。realm
: 这是一个标识符,可以是你的域名,用于身份验证。external-ip
: 服务器的公网 IP,尤其在服务器有内网 IP 时,需要手动指定公网 IP。fingerprint
: WebRTC 使用的一种安全标识。lt-cred-mech
: 开启长效凭证机制,用于身份验证。 7. 其他调试工具
可以使用trickle ICE
这个在线工具测试你搭建的 STUN/TURN 服务器是否正常工作: Trickle ICE 总结
搭建自己的 STUN/TURN 服务器不仅能提升性能,还可以让你完全掌控网络连接配置,避免第三方服务器速度不稳定的影响。Coturn 是目前最流行的选择,使用起来也非常简单。搭建成功后,你可以随时调整配置,适应不同的网络需求。