1.ICE服務(wù)器介紹
最近一段時間在做關(guān)于webrtc語音視頻通話,網(wǎng)上免費的公開的STUN服務(wù)器可以用于測試,使用起來響應(yīng)時間非常的慢,用起來不爽。作為一個有情懷的技術(shù)人員的我,就需要自己搭建了coturn服務(wù)器,現(xiàn)在分享給大家。
前提先介紹一下ICE服務(wù)器,ICE服務(wù)器包含了STUN和TURN兩部分,實際上我們就需要TURN服務(wù)器就可以進(jìn)行P2P穿墻。coturn服務(wù)器是在turnserver上增加了部分高級特性(感謝項目作者,為我們提供了很好的環(huán)境)。coturn支持cp, udp, tls, dtls 連接。coturn支持linux bsd solaris Mac os 系統(tǒng),暫不支持windows系統(tǒng)。
我是在公網(wǎng)部署搭建coturn服務(wù)器,來進(jìn)行STUN服務(wù)器進(jìn)行穿透和TURN服務(wù)器中轉(zhuǎn)。具體思想和步驟是這樣的。先會嘗試直連,直連失敗后通過STUN服務(wù)器進(jìn)行穿透,若穿墻失敗則通過TURN服務(wù)器中轉(zhuǎn)。
2.安裝coturn
2.1安裝依賴組件
安裝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 git
2.2 下載編譯安裝coturn
命令如下
git clone https://github.com/coturn/coturn
cd coturn
./configure
make
sudo make install
3.配置coturn
3.1.拷貝默認(rèn)配置
coturn 源碼的 example/etc 目錄中,有提供 coturn 的默認(rèn)配置文件,以供我們使用,我們需要分別拷貝 turnserver 所需要的三個配置文件>
首先在 /etc 目錄下創(chuàng)建 turnserver 配置的存放目錄
sudo mkdir /etc/turnserver/
拷貝 conf 配置腳本
進(jìn)入 coturn 目錄
cd coturn
sudo cp ./examples/etc/turnserver.conf /etc/turnserver/
拷貝 pem 秘鑰文件
將 *.pem 秘鑰文件也拷貝到 /etc/turnserver/ 目錄下
sudo cp ./examples/etc/turn_server_*.pem /etc/turnserver/
4.生成 coturn 用戶
為了安全起見,需要配置用戶和密碼,也就是鏈接的用戶和密碼,這里還有域名。
域名可以不用放上
sudo turnadmin -a -u 用戶名 -p 密碼 -r 域名
執(zhí)行成功后,可通過 turnadmin -l 既可查看:
sudo turnadmin -a -u abcabc -p abcabc -r beijing.com
turnadmin -l
當(dāng)然我們也可以到了啟動 turnserver 的時候設(shè)置用戶名和密碼。
5.配置turnserver.conf
編輯之前的拷貝出來的turnserver.conf
我們先看看本地網(wǎng)卡名字和地址,記下來,下面我們會用到
ifconfig

現(xiàn)在我們就修改turnserver.conf配置,找到下面的參數(shù)進(jìn)行修改。
relay-device=eth0 #與ifconfig查到的網(wǎng)卡名稱一致
listening-ip=172.17.0.6 #內(nèi)網(wǎng)IP
listening-port=3478
tls-listening-port=5349
relay-ip=172.17.0.6
external-ip=49.234.237.xxx #公網(wǎng)IP
relay-threads=50
lt-cred-mech
cert=/etc/turnserver/turn_server_cert.pem
pkey=/etc/turnserver/turn_server_pkey.pem
pidfile=”/var/run/turnserver.pid”
min-port=49152
max-port=65535
user=abcabc:abcabc #用戶名密碼,創(chuàng)建IceServer時用
cli-password=qwerty #這個是新增的一定要加上
上面配信息修改完就到這里就算完成了,接下來我們來把turnserver啟動。
6.啟動turnserver
turnserver -o -a -f -user=abcabc:abcabc

如果用到云服務(wù)器,需要到云服務(wù)器開通3478端口。
如果不是云服務(wù)器打開3478端口,然后重啟防火墻即可
添加
firewall-cmd --zone=public --add-port=3478/udp --permanent
firewall-cmd --zone=public --add-port=3478/tcp --permanent
重新載入
firewall-cmd --reload
重啟防火墻
systemctl restart firewalld
7.ICE測試
turnserver測試Trickle ICE
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
8.心得
我使用騰訊云服務(wù)器,1核2內(nèi)存1M配置,用起來比公共ICE服務(wù)器的響應(yīng)速度快多了,ICE服務(wù)器不需要很高的配置就可以達(dá)到想要的結(jié)果。 第一次寫東西,描述比較少,干貨多吧,需要下點功夫理解,反正我是部署上。
9.附加
QQ:328555416