0. 前言
好久之前寫過一篇搭建WebRTC的文章,里面有簡單的說到怎么搭建一個stun服務。但那時只是一筆帶過。正好,這兩天搭建stun服務,這篇博客就再復習一遍,並把搭建過程整理一下。
1. 安裝
https://github.com/coturn/coturn 在這里git clone 下來然后編譯安裝,一切默認即可。編譯后,也可以不用安裝。在編譯目錄下bin文件夾下有turnserver turnutils_stunclient turnutils_uclient 這三個等一下會用到的軟件。
http://www.stunprotocol.org/ 這個stunserver 也是可以的。
2. 配置turnserver.conf
可以創建 bin/turnserver.conf 文件,增加以下配置信息。
1 listening-ip=0.0.0.0 2 listening-port=3478 3 4 #relay-ip=0.0.0.0 5 external-ip=0.0.0.0 6 7 min-port=59000 8 max-port=65000 9 10 Verbose 11 fingerprint 12 13 no-stdout-log 14 syslog 15 16 cert=pem/turn_server_cert.pem 17 pkey=pem/turn_server_pkey.pem 18 19 user=demo:demo 20 21 no-tcp 22 no-tls 23 no-tcp-relay 24 stun-only 25 #secure-stun
簡單說明,listening-ip 監聽的IP,這里的IP必須是外網IP,如果服務器有外網IP網卡即可。最近(2018-04)購買的阿里雲ECS虛擬主機,由於采用VPC專有網絡架構。購買的ECS主機在主機內部是看不到外網網卡的,提工單問了,說是不行了,新的專有網絡跟以前的經典網絡不一樣了。現在的網絡是在外面映射到虛擬主機的。這就很尷尬了,到時候如果要實際生產,那應該是要購買獨立物理主機了。 好吧,我錯了。是可以正常的運行的,是因為阿里雲網絡安全組的問題,類似與防火牆的東西。之前配了TCP,忘記還有UDP這回事了。道歉!!各位親,要注意哦。我是在排查問題時,發現,所有的UDP包都處理不了,突然想起的。
cert 和 pkey 這兩個是配置如果要進行安全SSL連接用到的證書。TCP是SSL,UDP是DTLS連接。
no-tcp 和 no-tls 表示不要TCP連接了,因為NAT穿透,對TCP支持很弱,一般是使用UDP來進行穿透。
由於產品處於前期,這里只支持stun服務,對於turn的轉發功能,暫時不考慮。
3.啟動turnserver服務
4.測試stun服務
(1) 使用 turnutils_stunclient 測試
可通過該工具進行查詢,里面出現 The response is an error 401 (Unauthorized) 是如果服務器開啟secure-stun選項時,那么就會出現401未授權錯誤。turnutils_stunclient 是不支持帳號密碼驗證的。
(2) 使用 turnutils_uclient 測試
./turnutils_uclient -S -v -u demo -w demo -i pem/turn_client_cert.pem -k pem/turn_client_pkey.pem xxx.wunaozai.com -y
如果不用帳號密碼校驗的可以不用 -u -w, 如果不用DTLS安全連接的可以不要-i -k.
(3) 使用 stun-client-0-96.exe 測試
(4)使用 NatTypeTester.exe 測試
使用 https://github.com/webrtc/samples 下 /src/content/peerconnection/trickle-ice/index.html 測試
5.參考資料
https://www.cnblogs.com/idignew/p/7446121.html
https://www.cnblogs.com/idignew/p/7440048.html
https://www.cnblogs.com/kakawater/p/7112925.html
https://www.cnblogs.com/mobilecard/p/6544731.html
https://www.cnblogs.com/lingdhox/p/4209659.html
本文地址: https://www.cnblogs.com/wunaozai/p/9071097.html