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