Turnserver伺服器搭建
1. 安裝
>
sudo apt-get install coturn
2. 配置
turnserver.conf
路徑:
>
/etc/turnserver.conf
內容:
>
listening-port=3478
tls-listening-port=5349
>
listening-ip=your ip
relay-ip=your ip
external-ip=your ip
>
server-name=your domain
realm=your domain
>
lt-cred-mech
userdb=/var/lib/turn/turndb
cert=/etc/turn_server_cert.pem pkey=/etc/turn_server_pkey.pem no-stdout-log log-file=/var/tmp/turnserver.log pidfile="/var/run/turnserver.pid"
欄位含義:
listening-port: turnserver監聽UDP/TCP埠,預設為3478; tls-listening-port: turnserver監聽TLS/DTLS埠,預設為5349, 將TCP/UDP和TLS/DTLS分別定義監聽埠是符合RFC5766規範的,但是通過配置兩者能使用同一埠,不推薦; listening-ip: 中繼伺服器的監聽IP地址,可以配置多個; relay-ip: 中繼伺服器的IP地址; external-ip: 外部IP,當中繼伺服器在NAT網路內部時指定,此處可以不新增; server-name: 伺服器名稱,用於OAuth認證,預設和realm相同; realm: 域名; userdb: 用於儲存使用者資訊; cert/pkey: 自簽名證書相關;
注意事項:
1) coturn使用了SQLlite作為儲存,請保證userdb的正確配置(userdb=/var/lib/turn/turndb),不需要新增turnuserdb.conf檔案(turnuserdb.conf多用於restund的配置方式);
2) cert和pkey配置的自簽名證書用Openssl命令生成
>
sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
3) 配置成功後生成使用者名稱/密碼
>
turnadmin -k -u -r -p //turnadmin -k -a -u btzh -r ice.btzh.net -p webrtc
執行上述命令後,會建立一個使用者/密碼,並新增到SQLlite資料庫中.
引數含義請參見
>
man turnadmin
3. 啟動服務
1) 確保埠開放
>
iptables -A INPUT -p udp –dport 3478 -j ACCEPT
iptables -A INPUT -p udp –dport 5349 -j ACCEPT
2) 啟動
後臺啟動
>
service coturn start
非後臺啟動:
>
turnserver
初次執行請使用非後臺啟動,會顯示當前執行狀態,如果有錯誤會直接顯示在控制檯上.
3) 驗證監聽埠
>
lsof -n -i4TCP:3478 | grep LISTEN
lsof -n -i4TCP:5349 | grep LISTEN
或直接檢視所有UDP/TCP 埠
>
netstat -nat | grep LISTEN
4. 驗證服務
1) stun
>
apt-get install stun-client
之後執行
>
stun domain.com:port //例如: stun ice.btzh.net:3478
2) 直接測試
瀏覽器輸入
>
domain/IP:port // 例如 ice.btzh.net:3478
出現文字”TURN Server use https connection for the admin session”
3) 線上測試(推薦)
網址
>
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
測試格式
>
stun:domain:port // example: stun:ice.btzh.net:3478
注意: 不要以此網站測試TURN username/TURN password的正確性(it doesn`t work for username/pwd test).