雲伺服器搭建coturn之所以測試不通過,大部分的原因都是因為雲伺服器沒有開放相應的埠。
這裡我們以《C/C++Linux伺服器開發/後台架構師【零聲學院】-學習視頻教程-培訓課程-騰訊課堂》系列課程中的音視頻技術為例,講解應該怎麼在公網搭建coturn。
1. 我們要開放的埠
我們先列舉下我們要用到的埠
- 3478:是打洞必備的埠,我們將其開放為udp、tcp
- 40000-60000:我們在P2P不成功時需要走turn模式,涉及到udp埠開放的問題,所以這裡可以指定一段UDP埠範圍,在後續我們啟動coturn的時候,我們可以通過min-port和max-port參數設置udp埠範圍。
這裡再引申講解,我們在搭建AppRTC時還涉及到443/8090/8088/8089,所以這部分埠也需要開放。
2. 雲伺服器埠開放規則
往下看之前先確定一個知識點,雲伺服器的防火牆分兩層:
- 雲伺服器接入層:即是雲服務商的安全組,需要通過網頁登錄雲服務商設置安全組;
- 系統主機(ubuntu或centos):即我們可以自己在系統操作的防火牆,這裡為了更為快速把系統搭建起來,建議是先把系統的防火牆先關閉。
3. 騰訊雲伺服器開放WebRTC開放所需要的埠
接下來以騰訊云為例去搭建coturn伺服器(手上沒有阿里雲的伺服器)
對於新手來講,建議先把主機系統的防火牆關掉,當然了如果你對防火牆配置非常熟悉那你可以在系統防火牆開發相應的埠。
centos(可參考):
- 查看防火牆狀態
systemctl status firewalld.service
列印
- 關閉防火牆(這個命令只是暫時關閉,重啟後防火牆又生效)
systemctl stop firewalld.service
- 禁止防火牆(重啟後也是關閉狀態)
systemctl disable firewalld.service
ubuntu(可參考):
- 查看防火牆狀態(顯示Status: inactive則說明已經關閉伺服器)
sudo ufw status
- 禁止防火牆
sudo ufw disable
第一步,先使用nc命令檢測要使用的埠是否已經開放,比如檢測3478埠
nc使用參考:https://www.cnblogs.com/zhaijiahui/p/9028402.html
以伺服器IP:129.204.197.213 為例
簡單的檢測原理:伺服器使用nc -l 3478監聽3478埠,然後找一台linux機器使用nc 命令去連接,具體操作
比如:測試3478的TCP是否開放
伺服器:
sudo nc -l 3478
客戶端:
nc -v 129.204.197.213 3478
連接成功時提示
Connection to 129.204.197.213 3478 port [tcp/*] succeeded!
如果沒有開放那就要去設置雲伺服器的安全組了。
第二步 設置雲伺服器的安全組
以騰訊云為例:https://console.cloud.tencent.com/cvm/securitygroup
這裡還有個UDP的埠範圍(coturn做relay時使用)
要確定修改的規則是已經關聯到自己主機的。
參考規則:https://cloud.tencent.com/document/product/213/34601
將我們需要的埠都開放
3478:udp/tcp
443:tcp
8088:tcp
8089:tcp
8090:tcp
40000-60000:udp
第三步 啟動coturn的時候帶上min-port和max-port參數,即是
sudo nohup turnserver --min-port 40000 --max-port 60000 -L 0.0.0.0 -a -u lqf:123456 -v -f -r nort.gov &
或者我們可以在前台啟動coturn進行測試先
sudo turnserver --min-port 40000 --max-port 60000 -L 0.0.0.0 -a -u lqf:123456 -v -f -r nort.gov
第四步 測試coturn是否正常
測試網址:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice
具體參考上課的文檔
測試stun,測試stun的時候不需要輸入帳號密碼,只需要輸入stun:
加入後選擇all,可以F12開右邊瀏覽器終端輸出,然後點擊Gather candidates,進行測試,出現done說明stun是起作用了。
測試turn,需要輸入turn地址,以turn:開頭,以及帳號密碼,單純測試turn則選擇relay
即是
加入後,選擇relay,可以F12開右邊瀏覽器終端輸出,然後點擊Gather candidates,進行測試,出現done說明turn是起作用了。
4 附錄
4.1 停止coturn服務
如果是ubuntu 請執行命令之前加sudo