云服务器搭建coturn不能正常使用的问题
云服务器搭建coturn之所以测试不通过,大部分的原因都是因为云服务器没有开放相应的端口。
这里我们以《Linux后台服务器开发》系列课程中的音视频技术为例,讲解应该怎么在公网搭建coturn。
1. 我们要开放的端口
我们先列举下我们要用到的端口
3478:是打洞必备的端口,我们将其开放为udp、tcp
40000-60000:我们在P2P不成功时需要走turn模式,涉及到udp端口开放的问题,所以这里可以指定一段UDP端口范围,在后续我们启动coturn的时候,我们可以通过min-port和max-port参数设置udp端口范围。
这里再引申讲解,我们在搭建AppRTC时还涉及到443/8090/8088/8089,所以这部分端口也需要开放。
2. 云服务器端口开放规则
往下看之前先确定一个知识点,云服务器的防火墙分两层:
云服务器接入层:即是云服务商的安全组,需要通过网页登录云服务商设置安全组;
系统主机(ubuntu或centos):即我们可以自己在系统操作的防火墙,这里为了更为快速把系统搭建起来,建议是先把系统的防火墙先关闭。
3. 腾讯云服务器开放WebRTC开放所需要的端口
接下来以腾讯云为例去搭建coturn服务器(手上没有阿里云的服务器)
对于新手来讲,建议先把主机系统的防火墙关掉,当然了如果你对防火墙配置非常熟悉那你可以在系统防火墙开发相应的端口。
centos(可参考):
查看防火墙状态
systemctl status firewalld.service
打印
关闭防火墙(这个命令只是暂时关闭,重启后防火墙又生效)
systemctl stop firewalld.service
禁止防火墙(重启后也是关闭状态)
systemctl disable firewalld.service
ubuntu(可参考):
查看防火墙状态(显示Status: inactive则说明已经关闭服务器)
sudo ufw status
禁止防火墙
sudo ufw disable
第一步,先使用nc命令检测要使用的端口是否已经开放,比如检测3478端口
nc使用参考:https://www.cnblogs.com/zhaijiahui/p/9028402.html
以服务器IP:129.204.197.213 为例
简单的检测原理:服务器使用nc -l 3478监听3478端口,然后找一台linux机器使用nc 命令去连接,具体操作
比如:测试3478的TCP是否开放
服务器:
sudo nc -l3478
客户端:
nc -v129.204.197.2133478
连接成功时提示
Connection to129.204.197.2133478port [tcp/*] succeeded!
如果没有开放那就要去设置云服务器的安全组了。
第二步设置云服务器的安全组
以腾讯云为例:https://console.cloud.tencent.com/cvm/securitygroup
这里还有个UDP的端口范围(coturn做relay时使用)
要确定修改的规则是已经关联到自己主机的。
参考规则:https://cloud.tencent.com/document/product/213/34601
将我们需要的端口都开放
3478:udp/tcp
443:tcp
8088:tcp
8089:tcp
8090:tcp
40000-60000:udp
第三步 启动coturn的时候带上min-port和max-port参数,即是
sudo nohup turnserver --min-port 40000 --max-port 60000 -L 0.0.0.0 -a -u lqf:123456 -v -f -r nort.gov &
或者我们可以在前台启动coturn进行测试先
sudo turnserver --min-port 40000 --max-port 60000 -L 0.0.0.0 -a -u lqf:123456 -v -f -r nort.gov
第四步 测试coturn是否正常
测试网址:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice
具体参考上课的文档
测试stun,测试stun的时候不需要输入账号密码,只需要输入stun:
加入后选择all,可以F12开右边浏览器终端输出,然后点击Gather candidates,进行测试,出现done说明stun是起作用了。
测试turn,需要输入turn地址,以turn:开头,以及账号密码,单纯测试turn则选择relay
即是
加入后,选择relay,可以F12开右边浏览器终端输出,然后点击Gather candidates,进行测试,出现done说明turn是起作用了。
4 附录
4.1 停止coturn服务
如果是ubuntu 请执行命令之前加sudo