coturn搭建云服务器测试失败的大部分原因是云服务器没有打开对应的端口。
这里,我们以《C/C++Linux服务器开发/后台架构师【零声学院】-学习视频教程-培训课程-腾讯课堂》系列课程中的音视频技术为例,说明如何在公网中搭建coturn。
00-1010让我们先列出想要使用的端口。
378:是钻孔必不可少的端口,我们将其打开为udp和tcp40000-60000:我们需要在P2P不成功的时候采取转弯模式,这涉及到udp端口的打开,所以我们可以在这里指定一个udp端口范围,稍后开始coturn的时候可以通过min-port和max-port参数设置UDP端口范围。
在这里,让我们进一步解释一下。我们在建造AppRTC时也涉及到443/8090/8088/8089,所以这部分港口也需要开放。
00-1010往下看之前先确定一个知识点。云服务器的防火墙分为两层:
服务器接入层:即云服务提供商的安全组,需要登录云服务提供商通过网页设置安全组;主机(ubuntu或centos):也就是我们可以自己在系统中运行的防火墙。为了更快地构建系统,建议先关闭系统的防火墙。
00-1010接下来,以腾讯云为例,搭建coturn服务器(没有阿里巴巴云的服务器)
对于初学者,建议先关闭主机系统的防火墙。当然,如果你对防火墙配置非常熟悉,可以在系统防火墙中开发相应的端口。
Centos(供参考):
检查防火墙状态系统状态防火墙服务
打印
关闭防火墙(此命令只是暂时关闭,重启后防火墙才会生效)
停止防火墙服务
禁用防火墙(重启后也关闭)SystemCTL禁用防火墙d.service
Ubuntu(供参考):
检查防火墙状态(显示Status:非活动表示服务器已关闭)sudo ufw状态
禁用防火墙sudou ufw
第一步是使用nc命令检查要使用的端口是否打开,比如3478端口。
数控参考:https://www.cnblogs.com/zhaijiahui/p/9028402.html
以服务器IP:129.204.197.213为例。
简单检测原理:服务器用nc -l 3478监控端口3478,然后找一台linux机器连接nc命令,具体操作。
比如测试3478的TCP是否开放。
服务器:
sudo nc -l 3478
客户:
NC-v 129.204.197.213 3478
成功连接时提示
连接到129.204.197.213 3478端口[tcp/*]成功!
如果没有打开,需要设置云服务器的安全组。
第二步:设置云服务器的安全组。
以腾讯云为例:https://console.cloud.tencent.com/cvm/securitygroup
还有一个UDP端口范围(当连接用作中继时使用)
gc-img-caption”>
要确定修改的规则是已经关联到自己主机的。
参考规则: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