centos7安装webrtc打洞服务器coturn方法

在使用WebRtc时,我们需要打洞服务器来打洞两部设备之间的通信,这里我们采用Coturn库。由于Turn服务器是Stun的一个拓展,Coturn包括了Turn和Stun,所有我们只需要部署Coturn就可以完成WebRtc的打洞环节啦。

克隆并安装

git clone https://github.com/coturn/coturn 
cd coturn 
./configure 
make 
sudo make install

如果你的电脑上没有安装LibEvent2,需要先安装libevent-developenssl-devel

# Install the libevent-devel rpm package:
yum install libevent-devel openssl-devel

安装好之后使用which turnserver确保安装成功

[[email protected] local]# which turnserver
/usr/local/bin/turnserver

设置配置文件

在Coturn编译完成好之后会自动生成一个配置文件的模板,在/usr/local/etc/turnserver.conf.default,感兴趣的小伙伴可以仔细查看里面每一个配置项的含义。这里我们在新建一个新的配置文件/usr/local/etc/turnserver.conf,在这个里面编辑好之后使用turnserver命令会自动寻找到conf文件的位置。分享一个简单的配置文件的格式:

relay-device=enp1s0f0  //绑定的网卡的设备号
listening-ip=x.x.x.x //内网IP,阿里云腾讯云的机器一般是内网的IP,没有填外网IP也可以
listening-port=3478 
relay-ip=x.x.x.x  //内网IP,阿里云腾讯云的机器一般是内网的IP,没有填外网IP也可以
external-ip=x.x.x.x  //外网IP,就是外网访问本台服务器的IP地址,这个就是提供给webrtc客户端来传递数据的IP
relay-threads=500 
lt-cred-mech    //这个要填上,否则不支持webrtc
pidfile="/var/run/turnserver.pid" 
min-port=49152  //虚拟给客户端的端口号,min-max的范围选取要能支撑起你的服务,要不然会出现转发服务器不够用的情况
max-port=65535 
user=xxx:123456     //xxx会用户名,123456是密码
realm=AnHui

保存好之后使用命令

turnserver -o -a -f 

即可启动Coturn。

验证Coturn的可用性

有一个专门的网站可以检查打洞服务器的正确配置与否。
Trickle ICE

验证stun

输入 stun:x.x.x.x:3478
得到结果

Time  Component   Type    Foundation  Protocol    Address Port    Priority
0.002   1   host    886443856   udp 10.80.1.131 49469   126 | 32542 | 255
0.104   1   host    2052453280  tcp 10.80.1.131 9   90 | 32542 | 255
0.288   1   srflx   2643034245  udp 112.27.203.124  49469   100 | 32542 | 255
0.312   Done
0.313

看到srflx后面就是你的电脑的外网IP,表示打洞成功。

验证turn

输入 turn:x.x.x.x:3478,username:,password
得到结果

0.003 1   host    886443856   udp 10.80.1.131 55831   126 | 32542 | 255
0.104   1   host    2052453280  tcp 10.80.1.131 9   90 | 32542 | 255
0.534   1   srflx   2643034245  udp 112.27.203.124  55831   100 | 32542 | 255
0.614   1   relay   3676437432  udp x.x.x.x 56631   2 | 32542 | 255
0.878   Done
0.880

看到relay后面就是你的服务器的外网IP,表示可以使用Coturn的turn服务器进行转发。同时也可以看见srflx,这说明了turn服务是stun的一个拓展,turn和stun是包含的关系。

Coturn的部署就简单的介绍到这里,如有不对的地方,还望指正,谢谢!