stun server、turn server、coturn server安装与使用
前提:雙網(wǎng)卡服務(wù)器
stun
什么STUN
STUN(Simple Traversal of User Datagram Protocol through Network Address Translators (NATs),NAT的UDP簡(jiǎn)單穿越)是一種網(wǎng)絡(luò)協(xié)議,它允許位于NAT(或多重NAT)后的客戶 端找出自己的公網(wǎng)地址,查出自己位于哪種類型的NAT之后以及NAT為某一個(gè)本地端口所綁定的Internet端端口。這些信息被用來(lái)在兩個(gè)同時(shí)處于 NAT路由器之后的主機(jī)之間建立UDP通信。該協(xié)議由RFC 3489定義。目前RFC 3489協(xié)議已被RFC 5389協(xié)議所取代,新的協(xié)議中,將STUN定義為一個(gè)協(xié)助穿越NAT的工具,并不獨(dú)立提供穿越的解決方案。它還有升級(jí)版本RFC 7350,目前正在完善中。
下載、安裝stun
上github下載源碼包
https://github.com/jselbie/stunserver
更新系統(tǒng)
yum update -y
解壓文件后進(jìn)入目錄
安裝依賴
sudo yum groupinstall "Development Tools" # For g++, make, et. al.
sudo yum install boost-devel # For Boost
sudo yum install openssl-devel # For OpenSSL
編譯
makemake后會(huì)生成stunserver、stunclient、stuntestcdoe三個(gè)文件
stunserver是server文件
stunclient是客戶端文件
查看幫助信息
./stunserver --help
--mode 指定模式。有"basic"和"full"兩種模式
--primaryinterface指定第一個(gè)監(jiān)聽(tīng)的本機(jī)ip地址或網(wǎng)卡
--altinterface 指定第二個(gè)監(jiān)聽(tīng)的本機(jī)ip地址或網(wǎng)卡
--primaryport 指定第一個(gè)監(jiān)聽(tīng)的端口(默認(rèn)3478)
--altport 指定第一個(gè)監(jiān)聽(tīng)的端口(默認(rèn)3479)
--family 網(wǎng)絡(luò)類型,4表示IPV4,6表示IPV6
--protocol 指定網(wǎng)絡(luò)連接類型,udp或tcp,默認(rèn)為udp
--maxconn 設(shè)置最大連接數(shù)
--verbosity 設(shè)置日志級(jí)別,0最少,1其次,2較多,3最多。默認(rèn)0
--ddp 分布式拒絕訪問(wèn)。開(kāi)啟此選項(xiàng)時(shí)如果客戶端以過(guò)多的數(shù)據(jù)包沖擊服務(wù)器端將被短時(shí)間的拒絕訪問(wèn),該IP后續(xù)的數(shù)據(jù)庫(kù)將被刪除。
--primaryadvertised
--altadvertised --primaryadvertised和--altadvertised用于設(shè)置公網(wǎng)ip,必須使用full模式,僅當(dāng)你的stunserver運(yùn)行在NAT后面的私有環(huán)境時(shí)使用。如經(jīng)過(guò)內(nèi)外端口映射,經(jīng)過(guò)服務(wù)轉(zhuǎn)發(fā)等。
--configfile 指定配置文件
--help 查看幫助信息
經(jīng)過(guò)防火墻地址轉(zhuǎn)換后的用法:
nohup ./stunserver --mode full --primaryinterface IP1 --altinterface IP2 --primaryadvertised public IP --altadvertised public IP
turn server
官方網(wǎng)址:http://turnserver.sourceforge.net/index.php?n=Main.HomePage
什么是turn
百度百科
TURN協(xié)議允許NAT或者防火墻后面的對(duì)象可以通過(guò)TCP或者UDP接收到數(shù)據(jù)。這在使用了對(duì)稱式的NAT(或者防火墻)的網(wǎng)絡(luò)中尤其具有實(shí)用價(jià)值 。
TURN的全稱為Traversal Using Relay NAT,即通過(guò)Relay方式穿越NAT,TURN應(yīng)用模型通過(guò)分配TURNServer的地址和端口作為客戶端對(duì)外的接受地址和端口,即私網(wǎng)用戶發(fā)出的報(bào)文都要經(jīng)過(guò)TURNServer進(jìn)行Relay轉(zhuǎn)發(fā),這種方式應(yīng)用模型除了具有STUN方式的優(yōu)點(diǎn)外,還解決了STUN應(yīng)用無(wú)法穿透對(duì)稱NAT(SymmetricNAT)以及類似的Firewall設(shè)備的缺陷,即無(wú)論企業(yè)網(wǎng)/駐地網(wǎng)出口為哪種類型的NAT/FW,都可以實(shí)現(xiàn)NAT的穿透,同時(shí)TURN支持基于TCP的應(yīng)用,如H323協(xié)議。此外TURNServer控制分配地址和端口,能分配RTP/RTCP地址對(duì)(RTCP端口號(hào)為RTP端口號(hào)加1)作為本端客戶的接受地址,避免了STUN應(yīng)用模型下出口NAT對(duì)RTP/RTCP地址端口號(hào)的任意分配,使得客戶端無(wú)法收到對(duì)端發(fā)過(guò)來(lái)的RTCP報(bào)文(對(duì)端發(fā)RTCP報(bào)文時(shí),目的端口號(hào)缺省按RTP端口號(hào)加1發(fā)送)
使用環(huán)境:
內(nèi)網(wǎng)openfire服務(wù)器提供視頻服務(wù),用stunserver轉(zhuǎn)發(fā)外網(wǎng)。。。。。。反正就是stunserver不行,無(wú)法穿透,無(wú)法保證視頻通話的成功率,就用turnserver了
下載頁(yè)面
http://turnserver.sourceforge.net/index.php?n=Main.Download
安裝
安裝confuse依賴庫(kù)
wget?http://savannah.spinellicreations.com/confuse/confuse-2.7.tar.gz
tar axf confuse-2.7.tar.gz
cd confuse-2.7
./configure
make && make install && echo $?
安裝libconfuse-devel
yum install libconfuse-devel -y
將下載的turnserver-0.7.3.tar.bz2 傳上來(lái),然后解壓
tar axf turnserver-0.7.3.tar.bz2
編譯安裝
cd turnserver-0.7.3
./configure
make && make install && echo $?
生成并修改配置文件
cp extra/turnserver.conf.template /etc/turnserver.conf
vim /etc/turnserver.conf
生成并修改認(rèn)證文件
cp extra/turnusers.txt.template /etc/turnusers.txt
toto是默認(rèn)用戶,password是默認(rèn)密碼,后面的是固定格式,修改用戶名和密碼即可
coturn (turn)(推薦使用)(建議使用centos7及以上版本安裝)
coturn是turn的升級(jí)版,同一作者,老的turn作者已經(jīng)不再維護(hù),下的coturn下載需要去githup,建議使用coturn
githup地址:https://github.com/coturn/coturn/tree/master
安裝coturn
下載好后進(jìn)入安裝目錄
查看INSTALL文件,里面安裝過(guò)程講解的非常詳細(xì)(啰嗦)
安裝依賴
如果報(bào)錯(cuò) libevent2 和 libevent沖突就卸載 libevent裝libevent2,如果yum源沒(méi)有l(wèi)ibevent2就去下rpm包或源碼包,如果還有其他報(bào)錯(cuò)就按報(bào)錯(cuò)處理
編譯安裝
使用c++代替c編譯
安裝完成后會(huì)生成(centos7會(huì)在coturn的安裝目錄下的bin目錄生成執(zhí)行文件)
/usr/local/bin/turnadmin
/usr/local/bin/turnserver?
/usr/local/bin/turnutils_natdiscovery
/usr/local/bin/turnutils_oauth
/usr/local/bin/turnutils_peer
/usr/local/bin/turnutils_stunclient
/usr/local/bin/turnutils_uclient
centos7修改環(huán)境變量
vim /etc/profile
#COTURN
source /etc/profile
配置
生成證書
openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes生成認(rèn)證文件(MD5密碼)
turnadmin -k -u USERNAME -r REALM -p PASSWORD >/etc/turnuserdb.conf生成主配置文件
cp examples/etc/turnserver.conf /etc/turnserver.conf修改配置文件(按照里面的說(shuō)明逐個(gè)添加即可)(一下是我的配置)
listening-port=PORT #“默認(rèn)3478” tls-listening-port=PORT #"默認(rèn)5349"listening-ip=IP1 #"監(jiān)聽(tīng)地址" relay-ip=IP2 #"轉(zhuǎn)發(fā)地址,可以和監(jiān)聽(tīng)地址一樣" external-ip=public #“公網(wǎng)IP” min-port=48000 #“連接使用最小端口” max-port=49000 #"連接是使用最大端口"lt-cred-mech #“使用證書認(rèn)證(證書認(rèn)證和靜態(tài)身份認(rèn)證不能同時(shí)使用)” # static-auth-secret=USERNAME #“使用靜態(tài)身份認(rèn)證,后面指定的是用戶名” user=USERNAME:PASSWORD #”用戶名1:密碼1“ user=USERNAME:MD5 #“用戶名2:密碼2(密碼2為)/etc/turnuserdb.conf中的值” sha256 #“指定加密算法” userdb=/etc/turnuserdb.conf #“database文件名,自動(dòng)上面生成的文件” realm=REALM #“域,需要與turnadmin創(chuàng)建認(rèn)證信息時(shí)指定的一樣” stale-nonce #"nonce生命周期,如果像這里不指定具體的值則使用默認(rèn)值600(秒)" cert=/etc/turn_server_cert.pem #"指定認(rèn)證文件" pkey=/etc/turn_server_pkey.pem #"指定認(rèn)證文件"no-loopback-peers #"安全設(shè)置,禁止環(huán)回網(wǎng)卡" no-multicast-peers #"安全設(shè)置,禁止知名廣播地址" mobility #"支持mobility" no-cli #"禁止CLI,默認(rèn)運(yùn)行"啟動(dòng)服務(wù)
/usr/local/bin/turnserver -L LISTEN-IP -o -a -b /etc/turnuserdb.conf -f -r REALM連接測(cè)試
turnutils_uclient -u USERNAME -w PASSWORD -p PORT -v LISTEN-ADDRESS-u 指定用戶 -w密碼-p端口 -v使用Verbose,最后指定監(jiān)聽(tīng)端口
單網(wǎng)卡配置方式
vim /etc/turnserver.conf
listening-port=3478 listening-ip=IP #"私網(wǎng)ip" external-ip=public/private #"公網(wǎng)ip" min-port=49152 #“連接使用最小端口” max-port=65535 #“連接使用最大端口”lt-cred-mech user=USERNAME1:PASSWORD1 user=USERNAME2:PASSWORD2 userdb=/etc/turnuserdb.conf realm=REALM stale-nonce=600 cert=/etc/turn_server_cert.pem pkey=/etc/turn_server_pkey.pemno-loopback-peers no-multicast-peers mobility no-cli啟動(dòng)服務(wù)
turnserver -o -a
連接測(cè)試
turnutils_uclient -v -t -T -y -u USERNAME -w PASSWORD IP
如下說(shuō)明成功
參考文檔
COTURN服務(wù)器使用
:http://blog.csdn.net/day_day_up1991/article/details/52253892
STUN和TURN技術(shù)淺析請(qǐng)
總結(jié)
以上是生活随笔為你收集整理的stun server、turn server、coturn server安装与使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: webRTC+coturn穿透服务器的安
- 下一篇: 这么多连麦方案,到底哪种适合你?