coturn 搭建 stun / turn 服務(wù)器

coturn 搭建 stun / turn 服務(wù)器

分享經(jīng)驗(yàn)總結(jié),歡迎加入

簡介

STUN,首先在RFC3489中定義,作為一個完整的NAT穿透解決方案,英文全稱是Simple Traversal of UDP Through NATs,即簡單的用UDP穿透NAT。

STUN(Simple Traversal of User Datagram Protocol Through Network Address Translators),即簡單的用UDP穿透NAT,是個輕量級的協(xié)議,是基于UDP的完整的穿透NAT的解決方案。它允許應(yīng)用程序發(fā)現(xiàn)它們與公共互聯(lián)網(wǎng)之間存在的NAT和防火墻及其他類型。它也可以讓應(yīng)用程序確定NAT分配給它們的公網(wǎng)IP地址和端口號。STUN是一種Client/Server的協(xié)議,也是一種Request/Response的協(xié)議,默認(rèn)端口號是 3478。

TURN,首先在RFC5766中定義,英文全稱是Traversal Using Relays around NAT:Relay Extensions to Session Traversal Utilities for NAT,即使用中繼穿透NAT:STUN的擴(kuò)展。簡單的說,TURN與STURN的共同點(diǎn)都是通過修改應(yīng)用層中的私網(wǎng)地址達(dá)到NAT穿透的效果,異同點(diǎn)是TURN是通過兩方通訊的“中間人”方式實(shí)現(xiàn)穿透。

STUN協(xié)議在RFC5389中被重新命名為Session Traversal Utilities for NAT,即NAT會話穿透效用。在這里,NAT會話穿透效用被定位為一個用于其他解決NAT穿透問題協(xié)議的協(xié)議。它可以用于終端設(shè)備檢查由NAT分配給終端的IP地址和端口號。同時,它也被用來檢查兩個終端之間的連接性,好比是一種維持NAT綁定表項(xiàng)的?;顓f(xié)議。STUN可以用于多種NAT類型,并不需要它們提供特殊的行為。

STUN本身不再是一種完整的NAT穿透解決方案,它相當(dāng)于是一種NAT穿透解決方案中的工具。這是與RFC3489/STUN版本相比最重要的改變。

ICE跟STUN和TURN不一樣,ICE不是一種協(xié)議,而是一個框架(Framework),它整合了STUN和TURN。

coturn 搭建

鏈接:https://github.com/coturn/coturn

代碼拉取后,先安裝所需的依賴包

sudo apt-get install libssl-dev  
sudo apt-get install libevent-dev  
sudo apt-get install libpq-dev  
sudo apt-get install mysql-client  
sudo apt-get install libmysqlclient-dev  
sudo apt-get install libhiredis-dev  
sudo apt-get install gcc
sudo apt-get install pkg-config

編譯 coturn

source ./configure
make -j 8
sudo make install

安裝部分截圖
在這里插入圖片描述

安裝完成后編輯配置文件

路徑:/usr/local/etc/turnserver.conf.default

必須的配置項(xiàng),其他項(xiàng)自行百度查看

listening-port=3478        #指定偵聽的端口
external-ip=39.121.185.185 #指定云主機(jī)的公網(wǎng)IP地址
user=aaaaaa:bbbbbb         #訪問 stun/turn服務(wù)的用戶名和密碼
realm=stun.xxx.cn          #域名,這個一定要設(shè)置
cli-password=123456

開啟端口3478

turnserver 啟動

路徑:cd /usr/local/bin

turnserver -c ../etc/turnserver.conf

檢測 ice 穿透的在線工具

鏈接:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

測試發(fā)現(xiàn)火狐瀏覽器正常,谷歌瀏覽器不正常

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
Android 端使用
PeerConnection.IceServer iceServer = new PeerConnection.IceServer("turn:172.21.0.147:3478", "taxiao", "123456");
iceServers.add(iceServer);
PeerConnection.RTCConfiguration configuration = new PeerConnection.RTCConfiguration(iceServers);
微信公眾號(他曉),關(guān)注并轉(zhuǎn)發(fā),謝謝
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容