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