记录一下coturn服务的搭建

1,058 阅读4分钟

1.准备

首先需要一个公网服务器, 系统为 linux centos7.X,这里用阿里云服务器为例

1.阿里云控制台配置安全组规则,端口范围自定义,仅作示例

image.png

2.连接服务器,安装依赖和软件

yum install git gcc gcc-c++ openssl openssl-devel libevent2 libevent-devel

我在下载libevent2时报错找不到这个依赖,遇到此问题可以如下操作

wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar zxvf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable && ./configure
make && make install

安装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

如果成功了,可以通过which turnserver命令进行验证。如果出现路径即为成功,默认路径为 /usr/local/bin/turnserver

2.配置文件

进入文件夹: cd /usr/local/etc/ 输入命令:ll, 可以看到urnserver.conf.default的配置文件。 然后通过命令在当前文件夹生成签名证书

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

生成证书的时候会让填写国家地区等一些信息,可以随便填写

完成后,可以在当前文件夹下看到turn_server_cert.pem和turn_server_pkey.pem两个文件。

然后在当前文件夹下,通过命令创建一个文件turnuserdb.conf

cp turnserver.conf.default turnuserdb.conf

此时的文件目录如下

image.png

3.编辑配置文件

用命令生成账号密码的md5码,-u yonghum -r地区 -p密码 命令执行后会生成一段md5码,记得复制下来

turnadmin -k –u demo -r chengdu -p 123456 

vim命令打开turnuserdb.conf文件,在其中填入用户名和刚才生成的md5码并保存 然后到了最重要的一步,按照如下的配置文件进行配置

我们对配置文件turnserver.conf进行编辑,vim命令打开文件,输入如下的配置信息

#中继服务器监听的IP地址,NAT环境下直接写私网IP地址,可以指定多个IP
listening-ip=私网IP
#中继服务器转发地址(本地IP地址将用于传递数据包的给每个端),和监听地址一样
#relay-ip=私网IP
#外部IP,NAT环境下直接写:公网IP
external-ip=公网IP
cli-password=123456
#打开fingerprint的注释,使用长期证书机制。
fingerprint
#打开密码验证,使用短期证书机制。
lt-cred-mech
#服务器名称,用于OAuth认证,默认和realm相同,直接填公网ip.部分浏览器本段不设可能会引发cors错误。
server-name=公网IP
# TURN REST API的长期凭证机制范围,同样设为ip,同server-name.
realm=公网IP
#移动的ICE(MICE)的规范支持。
mobility
#快捷的添加用户是使用user=XXX:XXXX的方式,可以添加多个。/var/db/turndb也工作,可以使用turnadmin来管理其中用户,可以添加多个。
user=demo:123456

保存文件后,我们到usr/local/bin文件夹下,通过如下命令开启服务

cd /usr/local/bin
turnserver -v -r 公网ip:3478 -a -o 

服务开启后,窗口中如下显示则代表服务开启成功

image.png

4.测试

打开链接测试开启的turnserver服务器能否起作用 # Trickle ICE 可以看到如下界面

输入turn:公网ip:3478, 账号密码,点击gather candidates按钮, 收到replay udp:公网ip就说明配置成功了,如果没有我们公网IP地址,只显示done,并不代表成功

image.png

测试stun同上,可以不用输入账号密码, 同样,收到replay udp:公网ip就说明配置成功了,如果没有我们公网IP地址,只显示done,并不代表成功

注意

turnserver服务是在后台默认开启的,如果重复执行开启服务的命令,会造成多个turnserver服务在后台一起打开,用如下命令可以查看服务是否在后台运行

ps -ef|grep turnserver 

如果有多个turnserver服务同时在后台开启,可以用如下命令杀掉所有turnserver服务

killall turnserver 

如果启动服务时报错ERROR: set_ctx: ERROR: cannot set DH 使用如下命令生成dhparam

openssl dhparam -out dhparam4096.pem 4096

在turnserver.conf文件中加入配置

dh-file=生成的dhparam的路径

此问题可以参考这儿

本文参考来源

Coturn服务器搭建步骤