经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
STUN/TURN服务器搭建
来源:cnblogs  作者:itshun  时间:2019/9/29 8:52:13  对本文有异议

STUN/TURN服务器搭建

编译安装

  1. 编译安装 OpenSSL;
  1. sudo apt-get install libssl-dev
  1. 编译安装 libevent 最新版;
  1. wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
  2. tar xvfz libevent-2.0.21-stable.tar.gz
  3. cd libevent-2.0.21-stable
  4. ./configure
  5. make
  6. sudo make install
  1. coturn 可以选择使用多种数据库,这里使用的是 SQLite ,使用命令sudo apt-get install sqlite (or sqlite3) 和 sudo apt-get install libsqlite3-dev (or sqlite3-dev) 安装;
  2. 编译coturn;
    下载coturn
  1. tar xvfz turnserver-<...>.tar.gz
  2. ./configure
  3. make
  4. 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

配置使用

添加用户

  1. $ 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 了。

  1. sudo cp /usr/local/etc/turnserver.conf.default /usr/local/etc/turnserver.conf
  2. sudo turnserver -a -f -v -r lynky

其中 -a 表示使用 long-term 机制, -r 为指定的 Realm ,只有该 Realm 下的用户可以使用服务器。

测试

可以使用 Trickle ICE 测试

STUN

使用下面的命令即可测试 STUN 服务使用可用,唯一此参数是 STUN 服务器的 IP地址或域名。

  1. turnutils_stunclient 132.232.100.103

TURN

使用下面的命令即可测试 TURN 服务使用可用,值得注意的是必须使用 turnserver 启动时指定 Realm 下的用户。

  1. turnutils_uclient -u lynky -w lynky123 132.232.100.103

开机启动

修改/etc/turnserver.conf

  1. listening-ip=127.0.0.1
  2. listening-ip=172.16.0.99 # 内网ip
  3. external-ip=221.208.117.45 # 公网ip,如果服务器在NAT后需要指定该参数
  4. fingerprint
  5. lt-cred-mech
  6. realm=<you_realm_name>

添加/etc/systemd/system/turnserver.service

  1. [Unit]
  2. Description=coturn
  3. Documentation=man:coturn(1) man:turnadmin(1) man:turnserver(1)
  4. After=syslog.target network.target
  5. [Service]
  6. Type=forking
  7. PIDFile=/var/run/turnserver.pid
  8. ExecStart=/usr/local/bin/turnserver --daemon --pidfile /var/run/turnserver.pid -c /etc/turnserver.conf
  9. ExecStopPost=/usr/bin/rm -f /var/run/turnserver.pid
  10. Restart=on-abort
  11. LimitCORE=infinity
  12. LimitNOFILE=999999
  13. LimitNPROC=60000
  14. LimitRTPRIO=infinity
  15. LimitRTTIME=7000000
  16. CPUSchedulingPolicy=other

然后执行以下命令

  1. # 使服务自动启动
  2. sudo systemctl enable turnserver.service
  3. # 启动服务
  4. sudo systemctl start turnserver
  5. # 停止服务
  6. sudo systemctl stop turnserver

参考

[1] WebRTC下的网络连接: STUN, TURN, ICE, TCP
[2] 自己动手搭建 WebRTC TURN&STUN 服务器
[3] CoturnConfig

原文链接:http://www.cnblogs.com/itshun/p/11605449.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号