云服务器搭建coturn之所以测试不通过,大部分的原因都是因为云服务器没有开放相应的端口。

这里我们以《Linux后台服务器开发》系列课程中的音视频技术为例,讲解应该怎么在公网搭建coturn。

1. 我们要开放的端口

我们先列举下我们要用到的端口

  • 3478:是打洞必备的端口,我们将其开放为udp、tcp
  • 40000-60000:我们在P2P不成功时需要走turn模式,涉及到udp端口开放的问题,所以这里可以指定一段UDP端口范围,在后续我们启动coturn的时候,我们可以通过min-port和max-port参数设置udp端口范围。




云容器端口31048不通 云服务器端口范围_服务器


这里再引申讲解,我们在搭建AppRTC时还涉及到443/8090/8088/8089,所以这部分端口也需要开放。

2. 云服务器端口开放规则

往下看之前先确定一个知识点,云服务器的防火墙分两层:

  1. 云服务器接入层:即是云服务商的安全组,需要通过网页登录云服务商设置安全组;
  2. 系统主机(ubuntu或centos):即我们可以自己在系统操作的防火墙,这里为了更为快速把系统搭建起来,建议是先把系统的防火墙先关闭。


云容器端口31048不通 云服务器端口范围_ubuntu服务器开放端口_02


3. 腾讯云服务器开放WebRTC开放所需要的端口

接下来以腾讯云为例去搭建coturn服务器(手上没有阿里云的服务器)

对于新手来讲,建议先把主机系统的防火墙关掉,当然了如果你对防火墙配置非常熟悉那你可以在系统防火墙开发相应的端口。

centos(可参考):

  1. 查看防火墙状态

systemctl status firewalld.service

打印


云容器端口31048不通 云服务器端口范围_云容器端口31048不通_03


  1. 关闭防火墙(这个命令只是暂时关闭,重启后防火墙又生效)

systemctl stop firewalld.service

  1. 禁止防火墙(重启后也是关闭状态)

systemctl disable firewalld.service

ubuntu(可参考):

  1. 查看防火墙状态(显示Status: inactive则说明已经关闭服务器)

sudo ufw status

  1. 禁止防火墙

sudo ufw disable

第一步,先使用nc命令检测要使用的端口是否已经开放,比如检测3478端口

nc使用参考:

以服务器IP:129.204.197.213 为例

简单的检测原理:服务器使用nc -l 3478监听3478端口,然后找一台linux机器使用nc 命令去连接,具体操作

比如:测试3478的TCP是否开放

服务器:

sudo nc -l 3478

客户端:

nc -v 129.204.197.213 3478

连接成功时提示

Connection to 129.204.197.213 3478 port [tcp/*] succeeded!

如果没有开放那就要去设置云服务器的安全组了。

第二步

以腾讯云为例:https://console.cloud.tencent.com/cvm/securitygroup


云容器端口31048不通 云服务器端口范围_ubuntu_04


这里还有个UDP的端口范围(coturn做relay时使用)


云容器端口31048不通 云服务器端口范围_服务器_05


要确定修改的规则是已经关联到自己主机的。

参考规则:https://cloud.tencent.com/document/product/213/34601

将我们需要的端口都开放

3478:udp/tcp

443:tcp

8088:tcp

8089:tcp

8090:tcp

40000-60000:udp


云容器端口31048不通 云服务器端口范围_ubuntu服务器开放端口_06


云容器端口31048不通 云服务器端口范围_云容器端口31048不通_07


云容器端口31048不通 云服务器端口范围_云容器端口31048不通_08


云容器端口31048不通 云服务器端口范围_ubuntu_09


云容器端口31048不通 云服务器端口范围_ubuntu_10


云容器端口31048不通 云服务器端口范围_云服务_11


云容器端口31048不通 云服务器端口范围_云容器端口31048不通_12


第三步 启动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 http:// nort.gov &

或者我们可以在前台启动coturn进行测试先

sudo turnserver --min-port 40000 --max-port 60000 -L 0.0.0.0 -a -u lqf:123456 -v -f -r http:// nort.gov

第四步 测试coturn是否正常

测试网址:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice

具体参考上课的文档

测试stun,测试stun的时候不需要输入账号密码,只需要输入stun:


云容器端口31048不通 云服务器端口范围_服务器_13


加入后选择all,可以F12开右边浏览器终端输出,然后点击Gather candidates,进行测试,出现done说明stun是起作用了。


云容器端口31048不通 云服务器端口范围_云服务_14


测试turn,需要输入turn地址,以turn:开头,以及账号密码,单纯测试turn则选择relay

即是


云容器端口31048不通 云服务器端口范围_服务器_15


加入后,选择relay,可以F12开右边浏览器终端输出,然后点击Gather candidates,进行测试,出现done说明turn是起作用了。


云容器端口31048不通 云服务器端口范围_服务器_16


4 附录

4.1 停止coturn服务


云容器端口31048不通 云服务器端口范围_云容器端口31048不通_17


如果是ubuntu 请执行命令之前加sudo