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

编译

make

make后会生成stunserver、stunclient、stuntestcdoe三个文件
stun server、turn server、coturn server安装与使用

stunserver是server文件
stunclient是客户端文件

查看帮助信息
./stunserver --help
stun server、turn server、coturn server安装与使用
--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

 #"修改转发地址,公网地址"
 listen_address ={ “8.8.8.8”,"114.114.114.114" }
 #“修改监听端口,默认3478”
 udp_port = 3478
 tcp_port = 3478
 #“使用后台服务,默认为false”
 daemon = true
 #"设置网络限制,0表示无限制"
 restricted_bandwidth = 0
 #“指定认证文件”
account_file = "/etc/turnusers.txt"

生成并修改认证文件
cp extra/turnusers.txt.template /etc/turnusers.txt

 toto:password:domain.org:authorized

toto是默认用户,password是默认密码,后面的是固定格式,修改用户名和密码即可

coturn (turn)(推荐使用)(建议使用centos7及以上版本安装)

coturn是turn的升级版,同一作者,老的turn作者已经不再维护,下的coturn下载需要去githup,建议使用coturn

githup地址:https://github.com/coturn/coturn/tree/master

安装coturn

下载好后进入安装目录
查看INSTALL文件,里面安装过程讲解的非常详细(啰嗦)
安装依赖

yum install gcc gcc-c++ openssl-devel libevent2 libevent2-devel

如果报错 libevent2 和 libevent冲突就卸载 libevent装libevent2,如果yum源没有libevent2就去下rpm包或源码包,如果还有其他报错就按报错处理
编译安装
使用c++代替c编译

CC=g++ ./configure
make && echo $?

安装完成后会生成(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

export COTURN_HOME=/coturn-master
export PATH=$PATH:${COTURN_HOME}/bin

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.pem

no-loopback-peers
no-multicast-peers
mobility
no-cli

启动服务
turnserver -o -a
连接测试
turnutils_uclient -v -t -T -y -u USERNAME -w PASSWORD IP
如下说明成功
stun server、turn server、coturn server安装与使用

参考文档

COTURN服务器使用
:http://blog.csdn.net/day_day_up1991/article/details/52253892
STUN和TURN技术浅析请

转载于:https://blog.51cto.com/13323775/2061637

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值