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