1、概述
在安裝開源的webrtc服務器coturn服務器后,會附帶安裝coturn的相關工具,主要有以下幾種工具
2、turnadmin工具
說明:服務器命令行工具,提供添加用戶、添加管理員、生成TURN密鑰等功能,turnadmin -h查看詳細用法
命令參數用法:
2.1 直接短選項名用法,后面不加=
eg: turnadmin -u ccc
2.2 參數長選項名用法加=
eg: turnadmin --user=ccc
2.3 命令Commands
2.3.1 -P
作用: 生成并將密碼的加密形式輸出到標準輸出,可以生成密鑰,然后設置到/etc/turnserver.conf(web-admin/cli-password)中,防止明文保存在配置文件,增加安全性
eg: turnadmin -P -u ccc -p ccc
終端輸出:$5$c58bf5b9e61e5c4a$088e97128d5eacac61130713fe15269b17653410704a1b60fc8d1a076c9d6d2d
備注: 這個密鑰生成是針對管理賬號和telnet連接賬號,不是針對普通用戶,普通用戶長期憑證機制用用-k生成,普通用戶還支持臨時憑證
2.3.2 -k
作用: 生成長期憑證機制用戶密鑰的選項
eg: turnadmin -k -u ccc -p ccc -r nort.gov
終端輸出: 0xa00561524d93eb959c884a531cda1769
備注: 把這個配置到/etc/turnserver.conf即可,防止了明文的顯示,增加安全。
2.3.3 -a
作用: 添加或更新一個長期憑證用戶
eg: turnadmin -a -u ccc -p ccc -r nort.gov
數據庫保存:會把這個用戶保存到數據庫表turnusers_lt
備注: coturn數據庫支持sqlite、mysql、redis、postgrepsql、mogo-db, 命令選型根據
sqlite: -b /var/db/turndb
mysql: -M
pqsql: -e
redis: -N
mogo: -J
2.3.4 -A
作用:添加或更新管理員賬號
eg: turnadmin -A -u ccc -p ccc
數據庫: 會把這個用戶保存在數據庫表admin_user中
2.3.5 -d
作用: 刪除長期憑證機制用戶
eg: turnadmin -d -u ccc
2.3.6 -D
作用: 刪除管理員用戶
2.3.7 -l
作用: 列出當前長期憑證機制用戶
eg: turnadmin -l
2.3.8 -L
作用: 列出當前管理員用戶
eg: turnadmin -L
2.3.9 -s
作用: 為REST API設置共享密鑰
eg: turnadmin -s mytestpwd -r nort.gov
備注: 會保存在數據庫表turn_secret中
2.3.10 -S
作用: 顯示REST API的共享密鑰
eg: turnadmin -S
2.3.11 -X
作用: 刪除REST API 共享密鑰
eg: turnadmin -X mytestpwd -r
2.3.12 -O
作用: 添加源到域中
eg: turnadmin -O -o https://www.my.com -r myrealm
備注: 保存到turn_origin_to_realm 數據表
2.3.13 -R
作用:刪除源與域的對應關系
eg: turnadmin -R -o https://www.my.com -r myrealm
2.3.14 -I
作用: 列出源與域的關系
eg: turnadmin -I
2.3.15 -g
作用: 設置域相關參數選項,比如設置某個域的最大比特率,可控制某個域內所有用戶總帶寬(max-bps)上限制,總配額(total-quota)【網絡連接數,會話數等】,每個用戶的配額(user-quota)
eg: turnadmin -g -r nort2.gov --total-quota 300 -- max-bps 1020000
eg: turnadmin -g -r nort2.gov --user-quota 20
備注:數據保存在數據庫的turn_realm_option這個表中
2.3.16 -G
作用: 顯示域相關參數配置
eg: turnadmin -G
3、turnutils_stunclient
作用:檢測STUN服務器是否可用,查看客戶端公網ip和端口,理解當前環境下NAT類型。
示例:turnutils_stunclient -p 3479 117.72.111.221
4、?turnutils_peer
一個簡單的無狀態UDP echo”服務器,用作中繼模式中的最終服務器(“對等”)。對于每一個到來UDP數據包,它只是將其回傳
(此程序僅用于測試目的!),就是簡單監聽UDP端口,然后發什么它就返回什么的一個簡單udp程序。
5、turnutils_uclient
用于測試TURN服務器的功能,驗證TURN服務器的配置,確保TURN服務器正確配置,能正常工作
5.1 測試coturn服務器基礎功能是否正常
5.1.1 先運行turnutils_peer(部署在公網上,有公網IP端口,方便測試)
作為模擬的端側客戶端,只打開UDP端口,接受了什么數據,就源路返回什么。
5.1.2 執行turnutils_uclient -e 117.72.111.221 -r 3480 -n 3 -l 1024 -p 3478 117.72.111.221
-e代表 對端的地址(比如A跟B通信,turnutils_client代表A端,B就是對端116.205.233.111)
-r 3480代表對端的端口為3480
-n 3 代表發送的數據包為3個
-l 1024 代表發送的數據包的內容長度為1024
-p 代表coturn的端口3478
117.72.111.221 代表要測試的coturn服務器的地址
5.1.3 結果分析
turnutils_client會與coturn進行通信,發送3個數據包到對端,然后分析發包、和收包,判斷丟包率,RTT等數據分析以此驗證coturn是否正常
其中會經歷Allocate Request、Channel Binding Request 、Create Peermission Request等TURN協議的發送與接收處理,具體協議的結構格式,類型值看下面的協議篇。
5.2 測試coturn服務器dtls加密功能是否正常
turnutils_uclient -S -i /home/webrtc/webrtc_server.crt -k /home/webrtc/webrtc_server.key -e 117.72.111.221 -r 3480 -n 3 -l 1024 -p 5349 117.72.111.221 -v -u test?-w test
6、turnutils_natdiscovery
是一個用于 ?NAT 類型檢測和網絡診斷? 的命令行工具,其核心作用是通過模擬不同場景的通信請求,幫助開發者或運維人員快速識別設備的 NAT 類型及網絡限制條件?,(NAT映射規則和防火墻過濾行為)
turnutils_natdiscovery -m -f Example Domain
1)-m 參數
開啟映射行為發現
映射行為分為:
端點獨立映射: 無論請求的外部服務器地址和端口是什么,NAT設備總是將內部主機同一IP地址和端口映射到相同的外部IP地址和端口
地址依賴映射: NAT設備根據請求的外部服務器IP地址創建映射,如果請求不同的外部服務器IP地址,NAT設備會創建不同的映射
地址和端口依賴映射:NAT設備根據請求的外部服務器IP地址和端口創建映射,只有當請求的外部服務器IP地址和端口相同時才會使用相同的映射為
2)-f 參數
開啟過濾行為發現
過濾行為分為:
端點獨立過濾: 主機可以接收來自任何外部主機的響應,只要該響應是對其之前發出的請求的響應
地址依賴過濾: 主機只能接收來自之前請求的IP地址的響應,無論響應的端口是什么
地址和端口依賴過濾: 主機只能接收來自剛才請求的ip和端口的端口的響應
3)-t 參數
開啟映射生命周期行為發現,它會測試NAT設備中映射的生命周期,即映射在多長時間保持有效
turnutils_natdiscovery -t -T 60 -p 3478 stun.example.com
-t 啟用映射生命周期行為發現
-T 60 指定定時器值為60秒,即等待60秒后再次請求以測試映射是否有效
4) -c參數
用于碰撞行為發現,它會測試當兩個不同的內部地址使用相同的端口向外部服務器發送請求時,NAT設備的處理方式
turnutils_natdiscovery -c -L 192.168.1.100 -A 192.168.1.101 -p 3478 stun.example.com
-c 啟用碰撞行為發現
-L 192.168.1.100: 指定第一個本地地址為192.168.1.100
-A 192.168.1.101: 指定第二個本地地址為192.168.1.101,該選項在使用-c時是必須的
-p : 指定STUN服務器的端口為3478
stun.example.com: 指定STUN服務器的地址
5)-H選項
用于開啟自環行為發現,自環是指當一個內部主機通過NAT設備訪問自己外部映射地址時,NAT設備能否正確處理這種情況
turnutils_natdiscovery -H -p 3478 stun.example.com
-H 啟用自環行為發現