前提:双网卡服务器

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三个文件

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

 #"修改转发地址,公网地址"listen_address ={ “8.8.8.8”,"114.114.114.114" }
 #“修改监听端口,默认3478”udp_port = 3478tcp_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.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安装与使用相关推荐

  1. Webrtc中stun和turn的理解

    对于stun和turn的理解 在介绍turn和stun之前我们先来了解几个概念 会话描述协议 SDP(Session Description Protocol ) 网络地址转换 NAT (Networ ...

  2. Lync server 2013 监控角色的安装

    Lync server 2013 监控角色的安装 我的Lync server 2013环境介绍 内部域名contoso.com,外部域为tiancang.net, 两个前端服务器,fe01.conto ...

  3. Exchange server 2010系列教程之一 安装Exchange 2010准备条件

    Exchange server 2010系列教程之一 安装Exchange 2010准备条件 最近看了不少论坛和资料,许多人安装Exchange 2010都有问题啊,说实话,我自己开始也出现不少问题, ...

  4. SQL Server 2008 R2中文版快速安装

    SQL Server 2008 R2中文版快速安装 1 实验环境 1)域: 域名为fengxja.com: 域功能级别和林功能级别为Windows server 2003模式. 2)DC01服务器: ...

  5. python cv2模块安装_python 连接sql server数据库,pymssql模块安装。

    python 连接sql server数据库,pymssql模块安装. python版本:python3.7 数据库版本:sql server 2016 连接sql server数据库,本菜鸟用的是p ...

  6. Sql server管理工具SQLManagementStudio2008的安装

    如果你用的是Visual Studio 2010, 那么需要自行安装SQLManagementStudio. 微软官方下载地址: http://www.microsoft.com/downloads/ ...

  7. mysql2008数据库配置_SQL Server 2008 R2 超详细安装图文教程

    这篇文章主要介绍了SQL Server 2008 R2 超详细安装图文教程,需要的朋友可以参考下 一.下载SQL Server 2008 R2安装文件 二.将安装文件刻录成光盘或者用虚拟光驱加载,或者 ...

  8. Windows Server 2008搭建域环境---安装活动目录

    搭建域环境 首先搭建一个单域环境,掌握活动目录的功能,后面的章节将会讲授活动目录树活动目录林,以及林之间的信任.在现阶段只介绍单域单域控制器环境中如何使用活动目录集中管理和统一身份验证. 目标 u 学 ...

  9. Microsoft Office Communications Server 2007部署以及客户端安装(详细)【一】

    (注:由于本文截图比较多,所以在此仅发布安装的相关目录,需要的请到下载中心下载,我已经将附件上传上去了,有疑问的加Q:2535653001,大家相互交流一下.) Microsoft Office Co ...

最新文章

  1. 王甲佳全息营销系列03-离散集聚式地方机构建设与全息营销活动设计实践
  2. 速领:1024大礼包
  3. 利用运行时设置UITextField 光标颜色
  4. 众筹课 | 电气系统运维培训报名啦
  5. 4、(日期和时间类型)DTAETIME、TIMESTAMP、DATE、TIME、YEAR
  6. 洛谷 - P6292 区间本质不同子串个数(SAM+LCT+线段树)
  7. ejb 2.0 3.0_定义EJB 3.1视图(本地,远程,无接口)
  8. mysql中文编码问题
  9. linux spoon.sh闪退,解决Linux Kettle出现闪退问题
  10. C语言形参跟实参详解
  11. FX2LP与FPGA的简单批量回环
  12. 基于python的客流统计_贵阳智能车载客流(人数)统计方案
  13. 在线卡密销售系统之JAVA WEB学习之路
  14. C语言error2005,关于ERROR LNK 2005错误
  15. 你是探索者,还是归客?用大数据说话
  16. 白话斯坦福机器学习课程-CS229 - 监督学习应用:梯度下降
  17. oracle的switch+case语句吗,2.7 switch 语句中的 case 范围
  18. 菜鸟入门--摄影术语
  19. 科学家与艺术家心中都装着什么
  20. 微软发布免费的文件恢复工具

热门文章

  1. IT人经常围观精品站点推荐
  2. Basic INFO - InstallScript脚本编程的限制
  3. 关于一个Panel上鼠标不及时响应MouseLeave事件
  4. 笨方法学python之import sys与from sys import argv的区别
  5. HDU - 3364 Lanterns(高斯消元解方程(取模))
  6. 中石油训练赛 - One-Way Conveyors(边双缩点+树上差分)
  7. SDUT - 2609 A-Number and B-Number(二分+数位dp)
  8. HDU - 6315 Naive Operations(线段树+思维)
  9. exe软件ui嵌套软件_UI设计行业中的PS软件起什么用途
  10. python将list写入文件_Python:将 list 写入一个 txt 文件