Skip to content

Ubuntu下载安装coturn,启动TURN服务

更新日期: 2022-5-16
  • 2022-5-16 创建文档

WebRTC使用点对点连接来传输数据。当2个客户端(例如PC)不在同一个网络,或是被防火墙阻止时,直接连接会遇到问题。

TURN(Traversal Using Relays around NAT)用来解决节点不能直接连接的问题。

本文讲述如何在服务器上安装和使用TURN服务。

运行环境:

  • Ubuntu(或者其他Linux)服务器,有公网地址

1.安装与启动

首先安装coturn

sudo apt-get update -y

sudo apt-get install coturn

安装完毕后,先查看默认的配置

cat /etc/default/coturn 

可以看到默认的TURN服务是不启动的

#
# Uncomment it if you want to have the turnserver running as 
# an automatic system service daemon
#
#TURNSERVER_ENABLED=1

编辑配置文件取消注释

sudo vim /etc/default/coturn

TURNSERVER_ENABLED=1

systemctl启动coturn服务

$ systemctl start coturn
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to start 'coturn.service'.
Authenticating as: ubuntu,,, (ubuntu)
Password: 
==== AUTHENTICATION COMPLETE ===

防火墙允许这个端口

$ sudo ufw allow 3478
Rule added
Rule added (v6)

至此coturn服务已经启动完毕

2.配置

接下来配置coturn

首先备份一下默认的配置文件

sudo cp /etc/turnserver.conf /etc/turnserver.conf.backup
接下来编辑/etc/turnserver.conf

这里天服务域(realm)和名字

realm=antalkws.rustfisher.com
server-name=turnantalk

external-ip写你的服务器的IP地址

# IPs the TURN server listens to
listening-ip=0.0.0.0

# External IP-Address of the TURN server
external-ip=你的服务器的IP地址

使用的端口我们写3478

# Main listening port
listening-port=3478

# Further ports that are open for communication
min-port=10000
max-port=20000

指定log的路径。log等级设置为verbose

# Use fingerprint in TURN message
fingerprint

# Log file path
log-file=/home/ubuntu/server/turn/turnserver.log

# Enable verbose logging
verbose

user那里配置账号密码,格式account:pwd,中间是冒号

# Specify the user for the TURN authentification
user=自己想的账号:自己想的密码

完整的配置文件如下

完整turnserver.conf
#Turn server name and realm
realm=antalkws.rustfisher.com
server-name=turnantalk

# Use fingerprint in TURN message
fingerprint

# IPs the TURN server listens to
listening-ip=0.0.0.0

# External IP-Address of the TURN server
external-ip=xxx.xxx.xxx.xxx

# Main listening port
listening-port=3478

# Further ports that are open for communication
min-port=10000
max-port=20000

# Log file path
log-file=/home/ubuntu/server/turn/turnserver.log

# Enable verbose logging
verbose

# Specify the user for the TURN authentification
user=<你的用户名:自己设的密码>

# Enable long-term credential mechanism
lt-cred-mech

# If running coturn version older than 4.5.2, uncomment these rules and ensure
# that you have listening-ip set to ipv4 addresses only.
# Prevent Loopback bypass https://github.com/coturn/coturn/security/advisories/GHSA-6g6j-r9rf-cm7p
#denied-peer-ip=0.0.0.0-0.255.255.255
#denied-peer-ip=127.0.0.0-127.255.255.255
#denied-peer-ip=::1

保存好这个配置文件。

重启服务

sudo service coturn restart

3.验证

我们可以去WebRTC Samples Trickle ICE页面验证我们的turn服务是否可用

网络不好的时候可能需要工具打开 webrtc.github.io

URI输入 turn:IP地址:3478,以及配置好的用户名和密码。然后「Add Server」

填入

然后点击「Gather candidates」按钮,可以看到结果

结果

至此TURN服务已经运行起来了。

参考

  • https://gabrieltanner.org/blog/turn-server

作者: rustfisher.com | rf.cs@foxmail.com
示例: AndroidTutorial Gitee, Tutorial Github
本文链接: https://www.an.rustfisher.com/webrtc/turn/ubuntu-run-coturn/
一家之言,仅当抛砖引玉。如有错漏,还请指出。如果喜欢本站的内容,还请支持作者。也可点击1次下方的链接(链接内容与本站无关),谢谢支持服务器。 如有疑问,请与我联系:Android issues - gitee
微信订阅号