环境依赖 libevent
说明
libevent是一个事件通知库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue、IOCP等系统调用管理事件机制。著名分布式缓存软件memcached也是基于libevent,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。
coturn 的底层网络部分依赖libevent. 所以需要先安装libevent2
下载地址 http://libevent.org/
安装
./configure make make install
turnserver 搭建
说明
由于国内通讯都被监控,所以WebRTC是不能直接P2P的,都需要中继服务作为转发的,所以在国内使用WebRTC是需要搭建中继服务。
谷歌推荐的开源穿透服务器,包含trun和stun服务。
安装
./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地址端口转发,这样无法启动成功