部署私有的turn/stun服务器

前言

笔者在几年前就搞过webrtc,对于turn服务器这块没有做过记录,最近又要搞这个。做个记录。网上有搭建turn服务器的问题,期间遇到很多文章,我写下自己的成功案例吧。

以下的搭建过程是经过测试,可以使用的。

coturn 是一个免费的开源的 TURN/STUN 服务器。coturn 服务器完整的实现了 STUN/TURN/ICE 协议,支持 P2P 穿透防火墙。

  • STUN 服务器用于获取设备的外部网络地址
  • TURN 服务器是在点对点失败后用于通信中继。

WebRTC 建立连接的步骤大概是这样的:

  1. 客户端(浏览器)直接尝试直连;
  2. 如果如果直连则通过 STUN 服务器进行穿透;
  3. 如果无法穿透则通过 TURN 服务器进行中转。

环境

搭建环境是阿里云的centos服务器。

下载coturn源码

可以去github上下载,https://github.com/coturn/coturn

在centos的opt目录操作

wget https://github.com/coturn/coturn/archive/master.zip

下载后解压,使用unzip命令,没有安装unzip需要去安装一下

yum install -y unzip zip

这块注意不要下载到windows上,解压后在拷贝到centos上,因为window解压后的格式跟linux解压后的文件是有一些格式区别的,后续执行命令可能会报错。尽量在centos下解压。

unzip master.zip 

然后进入目录

cd coturn-master/

编译coturn

在编译coturn之前,先确认几个lib是否存在

比如:libevent2、gcc。如果不安装 后续可能会报错。

安装libevent2

1.在http://libevent.org/下载libevent-2.1.8-stable.tar.gz

2.tar -zxvf libevent-2.1.8-stable.tar.gz

3.cd libevent-2.1.8-stable

4./configure --prefix=/usr --libdir=/usr/lib64

5.make

6.make install

安装gcc

yum install gcc-c++

安装openssl-devel 

yum -y install openssl-devel 

编译

进入到coturn-master源码目录后,执行如下命令

./configure 或者 sh configure
make
make install

以上3个命令执行后,要注意是否有错误信息,正常来说应该没什么问题,假如有报错信息自行去百度搜索。总之我这块没遇到其他问题。

使用如下命令看下是否安装成功:

which turnserver

安装成功后,初始化数据库的用户名密码

turnadmin -a -u 用户名(test) -p 密码(123456) -r 区域(beijing)

到如下目录修改配置文件

/usr/local/etc

默认情况下,该目录下会有turnserver.conf.default文件,复制一份turnserver.conf,修改该文件

cp turnserver.conf.default turnserver.conf

生成秘钥

生成指令:

openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes 

执行后,会在/etc下生成2个文件

然后vim修改turnserver.conf文件

listening-port=3478 #监听端口
listening-device=eth0 #监听的网卡
external-ip=xx.xx.xx.xx #公网ip
listening-ip=172.xx.xx.xxx #内网地址
user=username:password
realm=haha #一般与turnadmin创建用户时指定的realm一致
cli-password=123456 #不加这个运行会报错,随便写
tls-listening-port=5349 #tls端口
relay-ip=172.xx.xx.xxx  #内网地址
relay-threads=50
lt-cred-mech
pidfile=”/var/run/turnserver.pid”
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem

这里重点注意user=username:password后边千万别家注释,否则会报error 401:Unauthorized!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!笔者的惨痛经历

把以上内容复制到文件头部即可。

网卡名称,内网地址通过ifconfig去查询

外网地址通过

curl https://myip.ipip.net

去查询外网地址

阿里云端口配置

需要开通阿里云安全组,udp、tcp的3478和5349端口,切记!

启动服务

执行如下命令,启动服务

turnserver -o -a -f -v -r beijing

使用如下命令,查看进程是否启动

ps -ef|grep turn

使用如下命令,监听端口

lsof -i:3478

假如没有lsof可以通过如下命令安装

yum install lsof

查看日志

可以到var/log目录查看日志:

测试是否可用

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

在如图地方添加server,然后点击下边的Gather candidates。

列表中Address出现你的公网ip,Type为relay时,代表你的服务是公网能访问的。

否则保证存在问题,检查端口映射,防火墙,配置等原因。

一定要切记一定要出现relay 后边跟你的公网ip,才代表测试通过,否则都是有问题的,我之前这块没测通过,内网能跑通,公网跑不通,后来测试通过,公网也可以了。!!!!!!!!!!!!!

客户端配置

客户端的地址修改为【turns:公网ip:3478】即可访问,当然别忘记配置用户名和密码

更多使用说明参考github。 https://github.com/coturn/rfc5766-turn-server/blob/v3.2/README.turnserver

以上。

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值