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服務器運行正常!

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