[webrtc 入门系列] centos搭建coturn服务器
1. coturn的搭建过程
1.1. 找一台有公网IP的主机
我的云服务器:华为云主机,操作系统:CentOS
1.2. 安装需要的环境
yum install git
yum install openssl
yum -y install openssl-devel
yum install libevent
yum install libevent2
yum install libevent-devel
-
安装openssl
yum 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.gz
tar -zxvf libevent-2.1.10-stable.tar.gz
cd libevent-2.1.10-stable./configure
make & make install
- 安装sqlite或mysql
yum install sqlite libsqlite3-dev
注:coturn的用户信息等,默认是持久化保存在sqlite中,如果想保存到mysql中,把上面的sqlite安装选项改成mysql相关的依赖项。
yum -y install mysql-server #可选(安装mysql)
yum -y install mysql-client
yum -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.gz
tar -zxvf 4.5.1.1.tar.gz
cd 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 -nodes
openssl 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 # 内网IP
tls-listening-port=5349
relay-ip=10.2.6.47 #内网IP
external-ip=45.90.208.43 #公网IP
relay-threads=50
lt-cred-mech
cert=/etc/turn_server_cert.pem # 证书文件
pkey=/etc/turn_server_pkey.pem # 私钥文件
min-port=49152
max-port=65535
userdb=/etc/turnuserdb.conf
#turnuserdb.conf中的用户名和密码,可以有多个
user=admin:qqq123 #账号密码
#一般与turnadmin创建用户时指定的realm一致,不指定realm时,默认为: 外网地址:3478
#realm=realmtest
pidfile="/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
1.9.停止turnserver
ps -ef | grep turnserver
kill -9 xxxx