华为云CentOS7 部署STUN/TURN服务 Coturn

2021-12-10  本文已影响0人  悠然望剑

记录一下部署coturn服务的过程,以下步骤是作者亲自实践并确认好用的,可放心食用。
服务器环境: 华为云服务器 CentOS7

1、安装依赖
yum install -y make gcc cc gcc-c++ wget openssl-devel libevent libevent-devel
2、下载源码包
wget https://coturn.net/turnserver/v4.5.0.8/turnserver-4.5.0.8.tar.gz

解压并进入目录

tar -zxvf turnserver-4.5.0.8.tar.gz
cd turnserver-4.5.0.8/
3、编译安装
./configure --prefix=/usr/turnserver  # 指定安装的目录
make && make install
4、设置环境变量
vim ~/.bashrc

插入以下内容

export turnserver_home=/usr/turnserver
export PATH=$PATH:$turnserver_home/bin

配置立即生效

source ~/.bashrc
5、编辑配置文件

先找到配置文件

find /usr -name turnserver.conf

例如:返回/usr/turnserver/share/examples/turnserver/etc/turnserver.conf
编辑配置

vim /usr/turnserver/share/examples/turnserver/etc/turnserver.conf

配置文件末尾添加以下内容

realm=stun.xxx.cn  # 域名,这个必须设置
listening-port=3478  # 服务端口
listening-ip=0.0.0.0 
external-ip=x.x.x.x  # 外网ip(本例中就是华为云服务器的公网ip)
user=admin:123456  # 设置账号密码
min-port=49152  # 连接端口最小值
max-port=65535  # 连接端口最大值
6、指定配置文件启动服务
turnserver -v -r 外网ip -a -o -c /usr/turnserver/share/examples/turnserver/etc/turnserver.conf

由于是在华为云上,需要开放端口的访问,关闭对应端口的防火墙,包括端口3478和端口范围49152-65535,UDP和TCP都需要


image.png
7、测试是否成功

测试地址

1.png
2.png
8、调用(js为例)
var iceServer = {
  "iceServers": [{
     "urls" : ["stun:外网ip:3478"]
    }, {
     "urls" : ["turn:外网ip:3478"],
     "username" : "admin",
     "credential" : "123456"
  }]
};
window.RTCPeerConnection = window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
var peerConnection = new RTCPeerConnection(iceServer)

补充说明:

  1. coturn服务是集STUN/TURN为一体的,STUN负责打洞穿透,如果端到端无法穿透,则使用TURN进行转发。从上面代码可以看到,使用STUN时不需要携带账号密码,因为STUN服务只负责尝试打洞,如果打洞成功,则建立p2p直连,不会占用coturn服务器带宽和流量;而如果使用TURN转发,则需要携带账号密码,因为一端的音视频流需要经过coturn服务器进行转发,会占用服务器带宽和流量,所以必须经过认证。
  2. TURN地址可以只在一端配置,比如web端与安卓端进行WebRTC连接,可以只在web端或安卓端的iceServers中配置turn地址;两端都必须配置stun地址。
上一篇下一篇

猜你喜欢

热点阅读