為什么我要搭建coturn中繼服務(wù)器?
- 我的項(xiàng)目里用到了WebRTC技術(shù)鸭廷,沒(méi)有配置
iceServers
參數(shù),在本地測(cè)試時(shí)是可以進(jìn)行語(yǔ)音通話和白板協(xié)作,但是部署到服務(wù)器后用2臺(tái)不同主機(jī)進(jìn)行P2P通話或白板協(xié)作炭剪,發(fā)現(xiàn)無(wú)法建立連接。于是網(wǎng)上一搜翔脱,發(fā)現(xiàn)需要一個(gè)公網(wǎng)的中繼服務(wù)器進(jìn)行中轉(zhuǎn)奴拦,其作用就是通過(guò)收集NAT背后的peer端(即:躲在路由器或交換機(jī)后的電腦)對(duì)外暴露出來(lái)的IP
和PORT
,找到一條可穿透路由器的鏈路届吁,俗稱(chēng)打洞
错妖。stun/turn
服務(wù)器通常要部署在公網(wǎng)上,能被所有peer端訪問(wèn)到疚沐,coturn開(kāi)源項(xiàng)目同時(shí)實(shí)現(xiàn)了stun和turn服務(wù)的功能暂氯,是WebRTC應(yīng)用的必備首選。
Centos7.x 搭建coturn服務(wù)器教程
- 安裝相關(guān)依賴:
yum install -y make gcc cc gcc-c++ wget openssl-devel libevent libevent-devel openssl
yum install git
- 下載編譯安裝coturn開(kāi)源項(xiàng)目亮蛔,若克隆項(xiàng)目時(shí)間較長(zhǎng)痴施,可單獨(dú)到該主頁(yè)中下載壓縮包,然后執(zhí)行命令:①解壓包:
unzip coturn-master.zip
究流;②重命名文件夾:mv coturn-master coturn
辣吃。
git clone https://github.com/coturn/coturn
cd coturn
./configure
make
make install
- 查看是否安裝成功:
which turnserver
安裝成功
- 將
/usr/local/etc/
目錄下的turnserver.conf.default
文件復(fù)制一份,文件名為turnserver.conf
:
cd /usr/local/etc/
cp turnserver.conf.default turnserver.conf
- 查看網(wǎng)卡芬探,記錄網(wǎng)卡名稱(chēng)和內(nèi)網(wǎng)地址:
ifconfig
-
cert
和pkey
配置的自簽名證書(shū)用Openssl
命令生成神得,提示的相關(guān)信息隨便填寫(xiě)即可。
openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
生成的兩個(gè)文件在/etc/目錄下
- 修改配置文件信息:
vim /usr/local/etc/turnserver.conf
# 網(wǎng)卡名
relay-device=eth0
#內(nèi)網(wǎng)IP
listening-ip=172.16.0.5
listening-port=3478
#內(nèi)網(wǎng)IP
relay-ip=172.16.0.5
tls-listening-port=5349
# 外網(wǎng)IP
external-ip=134.xxx.xxx.xxx
relay-threads=500
#打開(kāi)密碼驗(yàn)證
lt-cred-mech
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
min-port=40000
max-port=65535
#設(shè)置用戶名和密碼偷仿,創(chuàng)建IceServer時(shí)使用
user=admin:123456
# 外網(wǎng)IP綁定的域名
realm=xxxx.cn
# 服務(wù)器名稱(chēng)哩簿,用于OAuth認(rèn)證宵蕉,默認(rèn)和realm相同,部分瀏覽器本段不設(shè)可能會(huì)引發(fā)cors錯(cuò)誤节榜。
server-name=xxxx.cn
# 認(rèn)證密碼羡玛,和前面設(shè)置的密碼保持一致
cli-password=123456
- 在騰訊云后臺(tái)的安全組規(guī)則添加3478端口的tcp/udp規(guī)則,udp一定要配置宗苍!
- 服務(wù)器開(kāi)放端口:
3478/udp
和3478/tcp
:
#開(kāi)放端口
firewall-cmd --zone=public --add-port=3478/udp --permanent
firewall-cmd --zone=public --add-port=3478/tcp --permanent
#刷新防火墻
firewall-cmd --reload
#查看當(dāng)前開(kāi)放的端口
firewall-cmd --list-port
- 啟動(dòng)服務(wù):
turnserver -o -a -f
稼稿。備注:turnserver
命令會(huì)自動(dòng)尋找到turnserver.conf
文件的位置。 - 終止服務(wù):
ps -ef | grep turnserver
kill -9 pid
- 在線檢測(cè)ICE穿透的地址:點(diǎn)我即達(dá)
中繼成功
- 在創(chuàng)建
peerConnection
對(duì)象時(shí)傳入設(shè)定的iceServers
參數(shù)值即可浓若,若初始化參數(shù)中 iceServers 為null
時(shí)只能創(chuàng)建本地連接渺杉。
部署效果圖,1v1視頻成功