COTURN服务器使用

一、安装

coturn是作为一个STUN/TURN来使用,其中STUN是用于P2P,而TURN是用于中继转发。

安装形式有两种:
方式1:
直接在网上下载适合系统版本的编译好的安装包安装,包地址:
http://turnserver.open-sys.org/downloads
安装方法,参考:
http://blog.csdn.net/day_day_up1991/article/details/52050003
最后的穿透服务器安装。

方式2:
下载相应源码,自己编译安装。
源码地址:
https://github.com/coturn/coturn.git

安装方法:
git clone到本地;
在coturn目录中执行
./configure
sudo make all

二、使用

我使用的是第二种安装方法,在执行完make all之后,会在coturn目录中出现bin目录。
在bin目录中,会存在turnadmin\turnserver\turn_uclient等可执行文件。

可以通过执行man turnserver等查看相应的使用。

在example目录下,有一些配置、密钥以及客户端等的使用例程。

三、配置

进入coturn/bin目录

1、使用turnadmin添加用户及计算密码

turnadmin的使用方法,可以通过man查看。如果查看turnadmin属性,则会发现turnadmin是一个链接,指向turnserver。

1)添加lt-cred-mech用户:
./turnadmin -a -u demo -p 4080218913 -r demo

其中的参数含义
-a: 表示使用lt-cred-mech方式连接
-u:用户名
-p:密码
-r :realm 域。自己试了,似乎随便写,没啥影响。

2)添加admins用户,应该是使用https时使用吧
./turnadmin -A -u demo -p 4080218913 -r demo

其中的参数含义同上,
-A:表示admin用户。

3)根据用户名、密码、realm计算出值
./turnadmin -k -u demo -p 4080218913 -r demo

此时会出来一串数字。
XXXXXXX

2、配置turnserver.conf文件

可以将example中的turnserver.conf文件拷贝到bin目录下。

将turnserver.conf文件按照如下配置编辑。

#如果多网卡,记得此处设置为和你所用监听的IP相对应的eth
listening-device=eth0 
listening-port=3478
relay-device=eth0
min-port=59000
max-port=65000
Verbose
fingerprint
#webrtc需要使用此选项
lt-cred-mech
use-auth-secret
static-auth-secret=4080218913
#之前turnadmin中-r参数的值,此处要对应
realm=demo
stale-nonce
#可以添加用户名和密码
user=demo:4080218913
#测试期间可以使用example/etc中的pem,自己计算的话需要用到openssl,方法为:
#sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes

#填写pem目录即可,如
cert=~/coturn/example/etc/turn_server_cert.pem
pkey==~/coturn/example/etc/turn_server_pkey.pem
no-loopback-peers
no-multicast-peers
mobility
no-cli
#各项参数含义,可以看turnserver.conf中的说明。

保存之后退出。

sudo turnserver 启动即可
turnserver会载入当前目录中的配置文件。

四、TURN REST API的使用

此处参考
http://www.jianshu.com/p/c55ecf5a3fcf
中的代码。
最后的nginx配置,也按照其中的来就可以。

五、修改APPRTC中相应文件

1、修改apprtc.debug.js
参考
https://github.com/webrtc/apprtc
最后面的第6步。

直接修改
apprtc/out/app_engine/js/apprtc.debug.js中的
requestIceServers function
修改为

#其中的IP需要和你turnserver.conf中设置的IP一样或者turnserver.conf文件中设置的网卡的IP对应!
function requestIceServers(iceServerRequestUrl, iceTransports) {
  return new Promise(function(resolve, reject) {
    var servers = [{
        credential: "turnPassword",
        username: "turnUser",
        urls: [
          "turn:yourTURNIP:3478?transport=udp",
          "turn:yourTURNIP:3478?transport=tcp"
        ]
    },{
        urls:["STUN:yourSTUNIP:3478"]
    }];
    resolve(servers);
  });
}

保存退出。

2、修改constants.py
修改apprtc/out/app_enginee/constants.py中的TURN_BASE_URL值为

TURN_BASE_URL=’your ip:your nginx port’

按照http://blog.csdn.net/day_day_up1991/article/details/52050003中房间服务器的方式,重新启动apprtc。
记得先要把之前的房间服务器进程关掉。

都修改完之后,按照
http://www.jianshu.com/p/c55ecf5a3fcf
中的方式配置好nginx。访问配置的端口即可!
启动nginx

coturn就可以提供STUN/TURN服务了。

六、查看

利用firefox或者chrome(如果是http通信,则只能用firefox)浏览器登录房间服务器,同时打开firefox的设置中,开发者选项-》控制台,查看登录房间过程中,web和服务器交互的信息。
找到candidates,查看其中是否有内网IP及端口等信息,如果服务器是部署在公网,则还还应该可以查看到公网IP及端口信息。
如果candidates都有以上信息,则表明coturn服务器运行正常!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章