基于coturn的stun/turn云服务器搭建

webrtc是google推出的基于浏览器的实时语音-视频通讯架构。其典型的应用场景为:浏览器之间端到端(p2p)实时视频对话,但由于网络环境的复杂性(比如:路由器/交换机/防火墙等),浏览器与浏览器很多时候无法建立p2p连接,只能通过公网上的中继服务器(也就是所谓的turn服务器)中转。示例图如下:

上图中的Relay server即为turn中继服务器,而STUN server的作用是通过收集NAT背后peer端(即:躲在路由器或交换机后的电脑)对外暴露出来的ip和端口,找到一条可穿透路由器的链路,俗称“打洞”。stun/turn服务器通常要部署在公网上,能被所有peer端访问到,coturn开源项目同时实现了stun和turn服务的功能,是webrtc应用的必备首选。

下面介绍coturn的搭建过程:

一、弄一台有公网ip的云主机

我这里使用的天翼云的服务器,其他的云服务器我没用过,但应该都一样。我这里用的是ubuntu16.04

二、安装coturn的依赖组件

由于新环境上什么都没有,必须先安装以下组件:

apt-get  install  build-essential #(可选),如果后面的./configure失败时,可先安装gcc
apt-get install openssl libssl-dev make
 
wget https://github.com/libevent/libevent/releases/download/release-2.1.10-stable/libevent-2.1.10-stable.tar.gz
tar -zxvf libevent-2.1.10-stable.tar.gz
cd libevent-2.1.10-stable
./configure
make & make install
apt-get install sqlite libsqlite3-dev
cd ~/


注:coturn的用户信息等,默认是持久化保存在sqlite中,如果想保存到mysql中,上面的sqlite安装选项,需要改成mysql相关的依赖项。

三、下载coturn源码并编译

wget https://github.com/coturn/coturn/archive/4.5.1.1.tar.gz

tar -zxvf 4.5.1.1.tar.gz

cd coturn-4.5.1.1

./configure

make & make install

四、创建用户并配置coturn

turnadmin -a -u your_name -p your_password -r your_realm

这里,需要将 your_name 替换成你自己的名字, your_password 替换成你自己的密码, your_realm替换成你自己的域名,这三个要替换的都可以顺便写,自己记住就行

cp /usr/local/etc/turnserver.conf.default /usr/local/etc/turnserver.conf

上面的命令,将配置模式文件复制一份到/usr/local/etc/下

vim /usr/local/etc/turnserver.conf

使用vim打开配置文件,新环境里没有vim,需要先 apt install vim

修改下面几个关键项:

listening-port=3478 #监听端口

listening-device=eth0 #监听的网卡

external-ip=xxx.xxx.xxx.xxx #云主机的公网ip

user=your_name:your_password #用户名:密码

realm=your_realm #一般与turnadmin创建用户时指定的realm一致

cli-password=123456 #这个随便填

五、添加安全组规则

云主机默认是未开放我们需要的端口的,这里将我们需要的端口都开放,登陆购买的云主机的控制中心,找到安全组规则修改的页面

3478:udp/tcp

443:tcp

8088: tcp

8089:tcp

8090: tcp

40000-60000:udp

可以使用nc命令检测要使用的端口是否已经开放,比如检测3478端口

以服务器IP:129.204.197.213 为例

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

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

服务器:

nc -l 3478

客户端:

nc -v 129.204.197.213 3478

连接成功时提示

Connection to129.204.197.2133478port [tcp/*] succeeded!

六、启用coturn并验证

回到我们云主机的命令行窗口

turnserver -o -a -f -v -r your_realm

webrtc-samples官网还提供了一个检测ice穿透的在线工具:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

参考下图,把stun和turn地址设置好,然后点击最下面的“Gather candidates”(收集候选链路)

如果看到最后的reply那一行,address里的ip与turn服务器的公网ip相同,说明中继成功。

内容参考自:

https://www.cnblogs.com/yjmyzz/p/how-to-install-coturn-on-ubuntu.html

https://www.jianshu.com/p/707e8a4e812a

猜你喜欢

转载自blog.csdn.net/qq_37381177/article/details/109612392
今日推荐