云服务器搭建coturn之所以测试不通过,大部分的原因都是因为云服务器没有开放相应的端口
这里我们以《WebRTC音视频技术入门与提高》课程为例,讲解应该怎么在公网搭建coturn。

1. 我们要开放的端口

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

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

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

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

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

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

image.png

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

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

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

centos(可参考):

  1. 查看防火墙状态

    systemctl status firewalld.service
    打印
    image.png

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

    systemctl stop firewalld.service

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

    systemctl disable firewalld.service

ubuntu(可参考):

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

sudo ufw status

  1. 禁止防火墙

    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 -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
image.png

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

要确定修改的规则是已经关联到自己主机的。
参考规则:https://cloud.tencent.com/document/product/213/34601

将我们需要的端口都开放
3478:udp/tcp
443:tcp
8088:tcp
8089:tcp
8090:tcp
40000-60000:udp
image.png
image.png
image.png

image.png

image.png

image.png
image.png

第三步 启动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:
image.png
加入后选择all,可以F12开右边浏览器终端输出,然后点击Gather candidates,进行测试,出现done说明stun是起作用了。
image.png

测试turn,需要输入turn地址,以turn:开头,以及账号密码,单纯测试turn则选择relay
即是
image.png
加入后,选择relay,可以F12开右边浏览器终端输出,然后点击Gather candidates,进行测试,出现done说明turn是起作用了。
image.png

4 附录

4.1 停止coturn服务

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

使用coTurn服务启动TURN服务后,执行以下命令即可:
turnutils_uclient -v -t -T -u lqf -w 123456 192.168.206.135
其中
-v 表示给出详细提示
-t 使用TCP协议(默认使用UDP)
-T TCP协议中继传输(默认是UDP)
-u TURN的用户名
-w TURN服务对应用户的密码
192.168.206.135 TURN服务的IP地址