搭建turn服务器

coturn符合目前最新RFC关于STUN/TURN/ICE的相关要求。该项目由rfc5766-turn-server进化而来,是原作者Oleg Moskalenko为了应对新的标准重新开发的标准TURN服务器。
本文档描述在虚拟机上搭建coturn服务的详细步骤。

1 操作系统要求

本文所描述的coturn搭建步骤基于以下的操作系统环境:

  • REDHAT/CentOS Server 7.6

coturn目前需要安装的gcc版本:

  • gcc 3.4.4 thru 4.8.x

修改当前用户的最大打开描述符数,增加到10万,并保存到默认配置文件 /etc/security/limits.conf
查看:cat /proc/sys/fs/file-max,修改即修改该数值

2 依赖包

在搭建coturn之前,请确保如下的软件包/库已经安装到系统标准位置。

  • openssl及开发包

sudo yum install openssl-devel

  • sqlite及开发包
sudo yum install sqlite
sudo yum install sqlite-devel
  • libevent及开发包
sudo yum install libevent
sudo yum install libevent-devel

为了使用yum安装以上的软件包,需要先手动安装epel:

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

另外,目前在epel中未能找到libevent-devel包,所以需要手动安装。在网上找到一个rpm包仓库,http://www.rpmfind.net/linux/rpm2html/search.php?query=libevent-devel,里面包含本环境下的libevent-devel.

sudo yum install http://www.rpmfind.net/linux/centos/7.6.1810/os/x86_64/Packages/libevent-devel-2.0.21-4.el7.x86_64.rpm

3 安装目录创建

为方便维护,第三方安装的应用不安装到系统标准目录下,而是单独安装到另一个/apprun目录。 创建相关目录的指令如下:

sudo mkdir /apprun
sudo chown ec2-user:ec2-user /apprun/
mkdir /apprun/usr/
mkdir /apprun/usr/log
mkdir /apprun/usr/var/db
mkdir /apprun/usr/var/run

4 构建

解压coturn源码包,在源码顶层目录执行如下操作

配置:

configure --prefix=/apprun/usr

编译coturn:

make

安装coturn到指定目录

make install

5 修改coturn配置文件

将附件中的turnserver.conf复制到以下目录

/apprun/usr/etc/

附件中的默认turnserver.conf主要对以下几个设置项进行配置,请根据具体部署情况进行修改:

  • external-ip: 设置为云主机的公网IP
  • min-port/max-port: 最低/最高的UDP转发端口
  • verbose: 启动详细日志
  • lt-cred-mech: 启动long-term验证机制
  • userdb: 存储user信息的sqlite数据库文件路径,本文中是设置为/apprun/usr/var/db/turndb
  • realm: 默认的realm,当客户端没有指定realm时,将默认使用该realm
  • log-file: 日志文件路径,本例子中是/apprun/usr/log/turn.log, coturn的日志系统,每次重启coturn都将覆盖此日志文件,默认每天生成一个新的日志文件。(若设置了日志文件路径,则文件名中不拼接pid,导致上一次日志被覆盖,有一定的设计缺陷)
  • allow-loopback-peers: 允许loopback接口上进行处理,方便调试
  • pidfile: pid文件路径,本案例中是/apprun/usr/var/run/turnserver.pid
  • no-tls: 不监听tls端口
  • no-dtls: 不监听dtls端口
  • user: 静态用户/密码配置(当前系统所有终端采用同一个静态用户名/密码)

6 手动启动coturn

在任意目录键入如下命令,以守护进程方式启动coturn。

/apprun/usr/bin/turnserver -c /apprun/usr/etc/turnserver.conf -o

7 修改防火墙配置

修改云端防火墙配置,增加如下的放行规则

入站规则:

协议 端口范围 来源
TCP 3478 - 3479 0.0.0.0/0
UDP 3478 - 3479 0.0.0.0/0
UDP 20000 - 29999 0.0.0.0/0

出站规则: 所有流量

8 手动自检

成功启动coturn服务后,我们还需要手动执行测试脚本,确保服务器已经正常运行。
进入已经编译成功的源码目录,在源码目录下执行以下的测试脚本

./examples/scripts/rfc5769.sh # 自测加密签名功能

修改examples/scripts/basic/udp_c2c_client.sh,将其中的127.0.0.1更改为coturn服务器的公网IP, ,增加-u test -w 1234参数(与配置文件中设置的用户密码一致), 然后执行该脚本

./examples/scripts/basic/udp_c2c_client.sh

也可以在另外的主机上执行此脚本,更真实验证turn的连通性。

9 安装定时检测脚本

为了提高可靠性,以及开机自动启动,需要在系统中安装一个检查脚本。当coturn由于意外情况退出时,能够及时重新启动,保证服务可用性。安装方法如下:
将附件中的start.coturn.sh脚本复制到/apprun/usr/bin/目录,修改脚本中的工作路径为/apprun/usr

使用以下命令,打开当前用户crontab,

crontab -e

在crontab 表中加入如下引号中的语句:

" * * * * * /apprun/usr/bin/start.coturn.sh > /dev/null 2>&1 "

你可能感兴趣的:(搭建turn服务器)