turnserver 搭建

环境搭建

  1. 环境依赖 libevent

    • 说明

      libevent是一个事件通知库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue、IOCP等系统调用管理事件机制。著名分布式缓存软件memcached也是基于libevent,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。
      coturn 的底层网络部分依赖libevent. 所以需要先安装libevent2

    • 下载地址 http://libevent.org/

    • 安装

      ./configure make make install

  2. turnserver 搭建

    • 说明

      由于国内通讯都被监控,所以WebRTC是不能直接P2P的,都需要中继服务作为转发的,所以在国内使用WebRTC是需要搭建中继服务。
      谷歌推荐的开源穿透服务器,包含trun和stun服务。

    • 下载地址 http://turnserver.open-sys.org/downloads/

    • 安装

      ./configure
      make
      make install
      cp turnserver-4.5.0.6/examples/etc /etc/turnserver.conf

目录结构

  • bin

    • turnadmin turnutils_peer turnutils_stunclient
    • turnserver turnutils_rfc5769check turnutils_uclient
    • turnserver 就是我们需要的服务器.
    • turnadmin 用来管理账户.
    • turnutils_stunclient 用于测试stun服务
    • turnutils_uclient 用于测试turn服务. 模拟多个UDP,TCP,TLS or DTLS 类型的客户端
  • example 目录主要是示范如何配置和使用turn. 包含一些测试用例.

    • example/etc 下是pem证书和conf配置文件
    • example/var/db 下是sqlite的db库. 用于示范数据库的格式.
    • turnadmin turnutils_peer turnutils_stunclient
    • coturn 支持三种配置. 命令行, conf文件和数据库. 数据库支持sqlite, MySQL, postgresql, MongoDB, Redis.
  • examples\scripts 下一些测试用例:

    • loadbalance 示范如何进行负载均衡. 设置一个master turn server 然后配置若干个slave turn server.
    • longtermsecure 示范如何使用long-term 验证
    • longtermsecuredb 与 longtermsecure 类似, 不过是从数据库配置
    • shorttermsecure 示范如何使用short-term验证.
    • restapi 示范了web方面的使用.

配置文件说明

阅读地址

启动

  • 配置

    listening-ip=外网IP
    listening-port=3478
    tls-listening-port=5349
    relay-ip=外网IP
    external-ip=外网IP
    relay-threads=50
    lt-cred-mech
    user=veln:密码 sqlite配置时不需要该配置
    userdb=/etc/turnuserdb.conf sqlite配置时配置db路径
    pidfile=/var/run/turnserver.pid
    log-file=/var/run/turnserver.log

  • 密码生成方式

    sqlite 存储密码 turnadmin -k -u -r -p //turnadmin -k -a -u veln -r veln.cn -p veln-bek-pass

    生成密码 turnuserdb.conf
    这个文件可以用作长期用户帐户存储凭证机制。
    钥匙必须由turnadmin实用程序生成。键值取决于用户名称、领域和密码:
    turnadmin -k -u ninefingers -r north.gov -p youhavetoberealistic
    输出是: 0xbc807ee29df3c9ffa736523fb2c4e8ee ('0x'开始的关键是区分从密码的关键。如果它有0x,那么它是一个关键,否则这是一个密码)。
    相应的用户帐号在userdb文件中是:ninefingers:0xbc807ee29df3c9ffa736523fb2c4e8ee 或者是这样(不安全的):ninefingers:youhavetoberealistic

  • 启动

    turnserver -L 外网IP -c /etc/turnserver.conf -o -a -b /etc/turnuserdb.conf -f -r veln.cn
    sqlite 启动 turnserver -L 外网IP -c /etc/turnserver.conf -o -a -f -r veln.cn
    服务器针对turn端口要开发三种端口协议:tcp、udp、sctp
    http://外网IP:3479 访问出现 turn server 表示暂时安装成功,但不一定代表就可以使用 真正测试地址 测试成功后,表示turnserver 搭建成功了

注意

由于启动时候需要绑定外网IP指定端口(3478),所以不能用内网服务器进行外网IP地址端口转发,这样无法启动成功

你可能感兴趣的:(技术)