webrtc笔记(1): 基于coturn项目的stun/turn服务器搭建
webrtc是google推出的基于瀏覽器的實時語音-視頻通訊架構。其典型的應用場景為:瀏覽器之間端到端(p2p)實時視頻對話,但由于網絡環境的復雜性(比如:路由器/交換機/防火墻等),瀏覽器與瀏覽器很多時候無法建立p2p連接,只能通過公網上的中繼服務器(也就是所謂的turn服務器)中轉。示例圖如下:
上圖中的Relay server即為turn中繼服務器,而STUN server的作用是通過收集NAT背后peer端(即:躲在路由器或交換機后的電腦)對外暴露出來的ip和端口,找到一條可穿透路由器的鏈路,俗稱“打洞”。stun/turn服務器通常要部署在公網上,能被所有peer端訪問到,coturn開源項目同時實現了stun和turn服務的功能,是webrtc應用的必備首選。
下面介紹coturn的搭建過程:
一、弄一臺有公網ip的云主機
對于新手,推薦使用國內DaoCloud的"免費膠囊主機",可免費耍2小時,即不花錢,又搞了運行環境(就是干活時,手腳要麻利點),等基本概念熟悉了,再到阿里云或騰迅云上買一臺可長期使用的主云機。
創建成功后,在主機詳情里,可以看到公網及內網ip,包括ssh登錄方法
?
二、安裝coturn的依賴組件
daocloud提供的免費膠囊主機是ubuntu環境,上面啥都沒有,必須先安裝以下組件:
sudo su root #先切換到root apt-get install build-essential #(可選),如果后面的./configure失敗時,可先安裝gcc apt-get install openssl libssl-dev makewget https://github.com/libevent/libevent/releases/download/release-2.1.10-stable/libevent-2.1.10-stable.tar.gz tar -zxvf libevent-2.1.10-stable.tar.gz cd libevent-2.1.10-stable ./configure make & make install apt-get install sqlite libsqlite3-dev cd ~/注:coturn的用戶信息等,默認是持久化保存在sqlite中,如果想保存到mysql中,上面的sqlite安裝選項,需要改成mysql相關的依賴項。
1 apt-get install mysql-server -y #可選(安裝mysql) 2 apt-get install mysql-client -y 3 apt-get -y install libmysqlcppconn-dev libmysqlclient-dev libmysql++-dev?
三、下載coturn源碼并編譯
wget https://github.com/coturn/coturn/archive/4.5.1.1.tar.gz tar -zxvf 4.5.1.1.tar.gz cd coturn-4.5.1.1 ./configure make & make installtips: daoclound的免費主機下載github源碼的速度并不快,如果本機網速夠快,可以事先在本機下載好,然后用類似
scp ~/Downloads/4.5.1.1.tar.gz ubuntu@52.81.17.142:/home/ubuntu直接上傳,速度要快很多。
注意:一定要在./configure前,把sqlite或mysq依賴項安裝好,否則./configure時無法識別出sqlite或mysql,最后make成功的版本,會顯示xxx is not supported。sqlite\mysql正常的版本,啟用時會有類似下面的顯示:?
如果對sqlite里的表結構感興趣,可以把turndb down到本機,用工具打開:
?
四、創建用戶并配置coturn
turnadmin -a -u yjmyzz -p yjmyzz.cnblogs.com -r cnblogs上面的命令,將創建用戶yjmyzz,密碼為yjmyzz.cnblogs.com,同時指定realm為cnblogs,大家根據實際情況修改
cp /usr/local/etc/turnserver.conf.default /usr/local/etc/turnserver.conf上面的命令,將配置模式文件復制一份到/usr/local/etc/下
vim /usr/local/etc/turnserver.conf修改下面幾個關鍵項:
listening-port=3478 #監聽端口 listening-device=eth0 #監聽的網卡 external-ip=52.81.17.142 #公網ip user=yjmyzz:yjmyzz.cnblogs.com #用戶名:密碼 realm=cnblogs #一般與turnadmin創建用戶時指定的realm一致注:如果機器上有多塊網卡,注意listening-ip與listening-device要匹配,參考下圖:
?
五、啟用coturn并驗證
turnserver -o -a -f -v -r cnblogs最后的-r cnblogs意為指定realm,要與創建用戶時指定的realm一致。可用lsof -i:3478校驗下是否啟動成功,如果看到類似下面的輸出,說明3478監聽正常。
webrtc-samples官網還提供了一個檢測ice穿透的在線工具:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
參考下圖,把stun和turn地址設置好,然后點擊最下面的“Gather candidates”(收集候選鏈路)
如果看到最后的reply那一行,address里的ip與turn服務器的公網ip相同,說明中繼成功。
?
參考文章:
https://www.kancloud.cn/vim26/v1/578933
?
轉載于:https://www.cnblogs.com/yjmyzz/p/how-to-install-coturn-on-ubuntu.html
總結
以上是生活随笔為你收集整理的webrtc笔记(1): 基于coturn项目的stun/turn服务器搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TheFatRat一般使用
- 下一篇: laravel命令