最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

[webrtc 入门系列] centos搭建coturn服务器 当前播报

来源:博客园

1. coturn的搭建过程

1.1. 找一台有公网IP的主机

我的云服务器:华为云主机,操作系统:CentOS

1.2. 安装需要的环境

yum install gityum install opensslyum -y install openssl-develyum install libeventyum install libevent2yum install libevent-devel
  • 安装opensslyum install openssl-devel 如果yum安装的openssl版本比较低,可以下载源码编译高版本的openssl


    (资料图)

  • 编译安装libevent(手动安装)

wget https://github.com/libevent/libevent/releases/download/release-2.1.10-stable/libevent-2.1.10-stable.tar.gztar -zxvf libevent-2.1.10-stable.tar.gzcd libevent-2.1.10-stable./configuremake & make install
  • 安装sqlite或mysqlyum install sqlite libsqlite3-dev

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

yum -y install mysql-server #可选(安装mysql)yum -y install mysql-clientyum -y install libmysqlcppconn-dev libmysqlclient-dev libmysql++-dev 

1.3. 下载coturn源码并编译

使用 wget https://github.com/coturn/coturn/archive/4.5.1.1.tar.gz 下载安装包,或是使用 git clone https://github.com/coturn/coturn 下载源码:

wget https://github.com/coturn/coturn/archive/4.5.1.2.tar.gztar -zxvf 4.5.1.1.tar.gzcd coturn-4.5.1.1./configure  --prefix=/localDev/turnserver // 指定安装的目录make & make install

注意:一定要在./configure前,把sqlite或mysq依赖项安装好,否则./configure时无法识别出sqlite或mysql,

出现以下信息即为安装成功:

也可以使用如下命令检验coturn是否安装成功,出现turnserver程序的详细路径则表示安装成功。

1.4. 使用openssl创建证书

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

1.5. turnadmin设置用户名和密码

turnadmin -a -u ytest -p qqq123 -r realmtest创建用户ytest,密码为123,同时指定realm为realmtest,请根据实际情况修改。

turnadmin -k -u ytest -p qqq123 -r realmtest

执行命令后会显示一串加密的密码字符串,在/etc目录下新建turnuserdb.conf文件,用于保存用户名和密码。

1.6.修改turnserver.conf配置文件

将默认配置模式文件复制一份到/usr/local/etc/下cp /usr/local/etc/turnserver.conf.default /usr/local/etc/turnserver.conf

修改下面几个关键项:

listening-port=3478     # 监听端口listening-device=eth0   # 监听的网卡relay-device=eth0       # 中转网卡listening-ip=10.2.6.47  # 内网IPtls-listening-port=5349 relay-ip=10.2.6.47               #内网IPexternal-ip=45.90.208.43         #公网IPrelay-threads=50 lt-cred-mech cert=/etc/turn_server_cert.pem    # 证书文件pkey=/etc/turn_server_pkey.pem    # 私钥文件min-port=49152 max-port=65535userdb=/etc/turnuserdb.conf#turnuserdb.conf中的用户名和密码,可以有多个user=admin:qqq123    #账号密码#一般与turnadmin创建用户时指定的realm一致,不指定realm时,默认为: 外网地址:3478#realm=realmtestpidfile="/var/run/turnserver.pid"    #存储进程pid的文件名#打开密码验证lt-cred-mech

1.7.启用coturn并验证

turnserver -v -r realmtest -a -o -c turnserver.conf

1.8.网站检测穿透效果

webrtc-samples官网还提供了一个检测ice穿透的在线工具:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/参考下图,把stun和turn地址设置好,然后点击最下面的“Gather candidates”(收集候选链路)

注意:

如果看到最后的reply那一行,address里的ip与turn服务器的公网ip相同,说明中继成功。如果访问不了,可能是服务器防火墙没有开启3478端口。如果开启了防火墙的3478端口还不能访问,则考虑云服务的安全组策略是否同样开启了3478的tcp和udp端口。

如果 coturn log 中提示类似 9: session 001000000000000001: realm user <>: incoming packet message processed, error 401: Unauthorized 的提示,其实是没问题的,可以忽略。

1.9.停止turnserver

ps -ef | grep turnserver kill -9 xxxx 

关键词: