0. 前言html
很久以前寫過一篇搭建WebRTC的文章,裏面有簡單的說到怎麼搭建一個stun服務。但那時只是一筆帶過。正好,這兩天搭建stun服務,這篇博客就再複習一遍,並把搭建過程整理一下。git
1. 安裝github
https://github.com/coturn/coturn 在這裏git clone 下來而後編譯安裝,一切默認便可。編譯後,也能夠不用安裝。在編譯目錄下bin文件夾下有turnserver turnutils_stunclient turnutils_uclient 這三個等一下會用到的軟件。web
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的轉發功能,暫時不考慮。tcp
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