STUN/TURN服务器搭建
stun/turn服务器搭建
编译安装
- 编译安装 openssl;
sudo apt-get install libssl-dev
- 编译安装 libevent 最新版;
wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz tar xvfz libevent-2.0.21-stable.tar.gz cd libevent-2.0.21-stable ./configure make sudo make install
- coturn 可以选择使用多种数据库,这里使用的是 sqlite ,使用命令
sudo apt-get install sqlite
(or sqlite3) 和sudo apt-get install libsqlite3-dev
(or sqlite3-dev) 安装; - 编译coturn;
下载coturn
tar xvfz turnserver-<...>.tar.gz ./configure make sudo make install
执行 ./configure 命令时没有使用 --prefix=/opt 参数,因为 openssl 是通过 apt-get 安装在默认位置,如果安装到其他位置 libevent 会找不到 openssl 库文件。
安装完成后在 bin 目录下生成六个可执行文件:
- turnserver - stun/turn 服务器
- turnadmin - 用于配置、管理账户
- turnutils_stunclient - 用于测试 stun 服务
- turnutils_uclient 用于测试 turn 服务,模拟多个udp、tcp、tls 或 dtls 类型的客户端
- turnutils_peer
- turnutils_rfc5769check
配置使用
添加用户
$ sudo turnadmin -a -u you_name -p you_password -r you_realm
这里默认使用了 sqlite 数据库,其中 -a
表示添加一个 long-term 用户,-u <user>
为用户名,-p <password>
为密码,-r <realm>
为该用户所属的 realm。在启动 turnserver 时需要指定 realm ,只有该 realm 下的用户才能登录。
注意一定要使用 root 权限配置,否则会配置失败,但是还没有错误提示。
启动server
配置完用户后就可以启动 turnserver 了,第一次启动前需要一个配置文件,这是使用模板生成,然后就可以启动 turnserver 了。
sudo cp /usr/local/etc/turnserver.conf.default /usr/local/etc/turnserver.conf sudo turnserver -a -f -v -r lynky
其中 -a
表示使用 long-term 机制, -r
为指定的 realm ,只有该 realm 下的用户可以使用服务器。
测试
可以使用 trickle ice 测试
stun
使用下面的命令即可测试 stun 服务使用可用,唯一此参数是 stun 服务器的 ip地址或域名。
turnutils_stunclient 132.232.100.103
turn
使用下面的命令即可测试 turn 服务使用可用,值得注意的是必须使用 turnserver 启动时指定 realm 下的用户。
turnutils_uclient -u lynky -w lynky123 132.232.100.103
开机启动
修改/etc/turnserver.conf
listening-ip=127.0.0.1 listening-ip=172.16.0.99 # 内网ip external-ip=221.208.117.45 # 公网ip,如果服务器在nat后需要指定该参数 fingerprint lt-cred-mech realm=<you_realm_name>
添加/etc/systemd/system/turnserver.service
[unit] description=coturn documentation=man:coturn(1) man:turnadmin(1) man:turnserver(1) after=syslog.target network.target [service] type=forking pidfile=/var/run/turnserver.pid execstart=/usr/local/bin/turnserver --daemon --pidfile /var/run/turnserver.pid -c /etc/turnserver.conf execstoppost=/usr/bin/rm -f /var/run/turnserver.pid restart=on-abort limitcore=infinity limitnofile=999999 limitnproc=60000 limitrtprio=infinity limitrttime=7000000 cpuschedulingpolicy=other
然后执行以下命令
# 使服务自动启动 sudo systemctl enable turnserver.service # 启动服务 sudo systemctl start turnserver # 停止服务 sudo systemctl stop turnserver
参考
[1] webrtc下的网络连接: stun, turn, ice, tcp
[2] 自己动手搭建 webrtc turn&stun 服务器
[3] coturnconfig
推荐阅读
-
apache2服务器的搭建和配置步骤详解
-
Ubuntu下搭建mail邮件服务器的方法教程
-
详解如何在 CentOS7.0 上搭建DNS 服务器
-
基于node搭建服务器,写接口,调接口,跨域的实例
-
利用nodeJs anywhere搭建本地服务器环境的方法
-
使用Nginx反向代理与proxy_cache缓存搭建CDN服务器的配置方法
-
windows下svn服务器快速搭建图文教程
-
Docker 1分钟搭建DNS服务器的方法
-
3分钟用Docker搭建一个Minecraft服务器
-
基于Windows 7(本地)和CentOS7.6(云端)的Minecraft服务器(无Forge/有Forge)搭建方法