coturn 配置初探

概述
Coturn 是webrtc,p2p視頻通話必不少的,主要包含2個主要功能stun服務, turn服務
Coturn 的githup地址爲 https://github.com/coturn/coturn/

安裝
有兩種方式安裝,第一種是使用編譯好的,第二種方式是自己編譯
第一種編譯好的下載地址爲 http://turnserver.open-sys.org/downloads/
第二種方式是下載代碼,自行編譯 需要一些第三方依賴, 不編譯不能,故不詳寫。
配置
這部分我認爲是最重要的。
Coturn 主要的程序是以下幾種
Turnadmin
Turnserver
Turnutils_uclient
主要使用的是這些, 由於現在是搭建p2p視頻通話demo階段,故coturn沒有研究集羣的搭建。等涉及到的時候再研究。
功能總術
Turnadmin:coturn的管理工具,主要是生成用戶帳戶的鍵值,列出數據庫中的可用用戶,在數據庫中添加和刪除用戶。更新用戶密碼,爲TURN REST API設置共享祕鑰。
Turnserver:主要功能的程序
Turnutils_uclient:測試客戶機,用於對coturn服務的測試工具。

Turnadmin使用
語法 turnadmin [command] [options]
Command
• -P, --generate-encrypted-password 生成祕鑰
• -k, --key 生成用戶帳戶鍵值
• -a, --add 添加或更新用戶
• -d, --delete 刪除用戶
• -l, --list 列出所有用戶
• -s, --set-secret=…設置密碼在數據庫存儲
• -S, --show-secret 展示在數據庫存儲的密碼
• -X, --delete-secret 刪除共離祕鑰
• --delete-all-secrets 刪除所有 REST API共享祕鑰.
• -O, --add-origin 添加 origin-to-realm 關係
• -R, --del-origin 刪除 origin-to-realm 關係
• -I, --list-origins 列出origin-to-realm 關係
• -g, --set-realm-option 設置reaml參數: max-bps, total-quota, user-quota.
• -G, --list-realm-options 列出reaml參數
Options:
• -b, --db, --userdb SQLite 數據庫文件名
• -e, --psql-userdb, --sql-userdb PostgreSQL數據庫連接字符串.
• -M, --mysql-userdb MySQL 數據庫連接字符串
• -N, --redis-userdb Redis數據庫連接字符串.
• -J, --mongo-userdb MongoDB 用戶數據庫連接字符串.
• -u, --user 用戶名.
• -r, --realm Realm.
• -p, --password 密碼.
• -o, --origin origin Fully-formed origin, for example https://crinna.org:443.不清楚用途
• --max-bps 設置限速.
• --total-quota Set value of realm’s total-quota parameter. Setting to zero value means removal of the option.
• --user-quota Set value of realm’s user-quota parameter. Setting to zero value means removal of the option.
• -h, --help Help.
示例
生成鍵值
turnadmin -k -u -r -p

生成的鍵值添加進數據庫中
turnadmin -a [-b | -e | -M | -N ] -u -r -p
暫時使用以上兩個命令就可以了。
Turnserver使用
語法:
turnserver [flags] [-n | -c ] [ --db= | --userdb= | --psql-userdb= | --mysql-userdb= | --mongo-userdb= | --redis-userdb= ] [options]
Flags:
• -v, --verbose ‘Moderate’ 詳細模式
• -V, --Verbose 'Extra’詳細模式,不推薦使用
• -o, --daemon後臺運行.
• -f, --fingerprint在TURN消息中加入印記, 如果來的請求包含登記, 那麼TURN服務器將總是添加印記到消息這那會話中。
• -a, --lt-cred-mech 使用憑證機制
• -z, --no-auth 不使用任何憑證機制, 允許匿名訪問, 與-a或-A選項相反.
• --use-auth-secret TURN REST API 標誌. 設置一個特殊WEBRTC身份驗證基於authentication secret選項, 這個選項的用途在於支持TURN Server REST API, 配合 -a使用
• --oauth 支持 oAuth 驗證
• --dh566 使用 566 位 DH TLS 密鑰. 默認大小爲 1066.
• --dh2066使用2066位DH TLS密鑰.默認大小爲1066.
• --no-tlsv1 不允許 TLSv1 協議.
• --no-tlsv1_1不允許TLSv1.1協議.
• --no-tlsv1_2不允許TLSv1.2協議.
• --no-udp 不監聽udp
• --no-tcp 不監聽tcp
• --no-tls 不監聽tls
• --no-dtls 不監聽dtls
• --no-udp-relay 不允許udp轉發
• --no-tcp-relay 不允許tcp轉發
• --stale-nonce用有生命週期的現時標誌值來額外安全機制
• --no-stdout-log 不標準輸出日誌信息, 默認是日誌同時標準輸出和日誌文件
• --syslog 標誌所有信息重定向到系統日誌 (syslog).
• --simple-log 簡單日誌
• --no-loopback-peers 不允許本地地址 (127.x.x.x and ::1).
• --no-multicast-peers 不允許廣播地址 (224.0.0.0 and above, and FFXX:*).
• --udp-self-balance在aux端點之間平衡UDP通信. 結合 --aux-server 選項.
• --secure-stun需要驗證STUN 綁定請求.
• -S, --stun-only 只做爲STUN服務器,所有的TURN請求將被忽略.
• --no-stun Run as只做爲TURN服務器,所有的STUN請求將被忽略.
• --mobility 支持移動ICE
• --no-cli I 不支持cli
• --server-relay 服務器中繼.
• --check-origin-consistency 設置原點一致性檢查的標誌
配置文件設置
-n 不使用配置文件, 只使用命令行參數
-c 使用指定配置文件 搜索先後爲
當前目錄
當前目錄下的 etc/子目錄
上層目錄的 etc/
/etc/
/usr/local/etc/

用戶數據庫設置
-b –db, --userdb sqlite數據庫
-M –mysql-userdb mysql數據庫
“host= dbname= user= password= connect_timeout=”
-N, --redis-userdb redis數據庫
“ip= dbname= password= connect_timeout=”
-J, --mongo-userdb
“mongodb://username:password@host:port/database?options”.
Options:
• -d, --listening-device 監聽網卡
• -L, --listening-ip 監聽外網地址.
• -p, --listening-port TURN監聽TCP/UDP端口,默認3478.
• --tls-listening-port TURN 監聽TLS&DTLS端口,默認5349
• --alt-listening-port UDP/TCP替代端口
• --alt-tls-listening-port TLS&DTLS替代端口
• -E, --relay-ip 中轉地址, 本地ip地址轉發包給個人.
• -X, --external-ip [/private-ip] 外網IP
• -m, --relay-threads 處理外網連接線程數目
• --min-port 中繼端點分配的UDP端口範圍的下界。默認值爲49152.
• --max-port 中繼端點分配的UDP端口範圍的上界。默認值爲65535.
• -u, --user user:password or user:0xkey 用戶帳戶
• -r, --realm realm值
• -q, --user-quota 每個用戶分配配額: 用戶可以創建多少併發分配.
• -Q, --total-quota 總分配配額:併發分配的全侷限制
• -s, --max-bps 限帶寬數
• -B, --bps-capacity 服務器最大容量
• --static-auth-secret 靜態身份祕鑰值
• --server-name 用於支持oAuth身份驗證, 默認值爲realm.
• --cert 證書文件, PEM 格式… 如果同時If both --no-tls and --no-dtls 設置, 則該參數無用,該文件爲openssl生成
• --pkey 私有密鑰文件, PEM 格式.
• --pkey-pwd 私有密鑰文件密碼,當密鑰被加祕的話.
• --CA-file CA 文件,促使將服務器驗證客戶端SSL證書.默認不開啓
• --cipher-list 允許TLS/ DTLS連接使用OpenSSL密碼錶.
• --ec-curve-name Curve name for EC ciphers, if supported by OpenSSL library (TLS and DTLS). The default value is prime256v1, if pre-OpenSSL 1.0.2 is used. With OpenSSL 1.0.2+, an optimal curve will be automatically calculated, if not defined by this option.
• -l, --log-file or “stdout” or “syslog” 設置日誌全路徑
• --alternate-server ip:port選擇設置“重定向”模式。這個選項的值是UDP和TCP服務的備用服務器的地址
• --tls-alternate-server ip:port選擇設置“重定向”模式。這個選項的值是TLS和DTLS服務的備用服務器的地址[:]
• --max-allocate-timeout 最大時間,以秒爲單位,允許完全分配建立,默認60s.
• --denied-peer-ip=<IPaddr[-IPaddr]>, --allowed-peer-ip=<IPaddr[-IPaddr]>黑白名單
• --pidfile 存儲進程pid的文件
• --proc-user 進程刊用
• --proc-group 進程組
• --cli-ip用於CLI管理接口的本地系統IP地址.
• --no-cli.
• --cli-portCLI管理接口端口默認5766.
• --cli-password cli密碼, 默認無密碼.
turnutils_uclient 使用
turnutils_uclient [-tSvsyhcxg] [options]
Flags:
• -t 使用tcp ,默認udp
• -b 使用SCTP,默認udp
• -T使用TCP進行中繼傳輸
• -P被動TCP.
• -S 安全連接: TLS for TCP, DTLS for UDP.
• -U安全加密連接(suite eNULL): SSL/TLS for TCP, DTLS for UDP.
• -v 詳細.
• -s 使用send方法, 默認使用TURN 頻道.
• -y使用客戶機到客戶機的連接:RTP/RTCP通道對到另一個RTP/RTCP通道對.
• -h在最後一個發送包之後無限期地等待.
• -c 不創建rtcp 連接.
• -x 請求 IPv6 中繼地址 (RFC6156).
• -X 顯式請求IPv4中繼地址.
• -g 設置 DONT_FRAGMENT 參數 在TURN請求.
• -D強制通道填充
• -N負面的測試(some limited cases only).
• -R 負面協議測試.
• -O “DOS 攻擊” 模式.
• -M 使用 TURN ICE.
• -I不設置轉彎中繼端點的權限
• -G 生成額外的請求
Options:
• -l 消息長度, 默認100字節
• -i 證書文件
• -k 私有祕鑰文件.
• -E 服務器證書驗證證書文件
• -p TURN 服務端口(默認: 3478 unsecure, 5349 secure).
• -n 發送消息數量,默認爲5.
• -d 本地網卡.
• -L 本地IP地址.
• -m 客戶端數量,默認1,2,4
• -e 前端地址.
• -r 前端端口 (default 3480).
• -z 每會話包間隔默認20ms.
• -u STUN/TURN 用戶名.
• -w STUN/TURN 密碼.
• -W TURN REST API 密鑰.
• -o the ORIGIN STUN 屬性值.
• -a 帶寬用於分配中的帶寬請求,默認爲0.

有些身份驗證部分還未深入研究,有些說不清, 不瞭解具體什麼用及有什麼坑,有這些大致可以使用。等之後涉及之後,再寫博客記錄

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