设为首页 收藏本站
查看: 2844|回复: 0

[经验分享] stun server、turn server、coturn server安装与使用

[复制链接]

尚未签到

发表于 2018-10-12 13:34:53 | 显示全部楼层 |阅读模式
  前提:双网卡服务器

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

  stunserver是server文件
  stunclient是客户端文件
  查看帮助信息
  ./stunserver --help
DSC0001.jpg

  --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>  使用环境:
  内网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
  如下说明成功
DSC0002.jpg


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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-620833-1-1.html 上篇帖子: SQL server shrink log-Jason 下篇帖子: 对比SQL Server 2008 和SQL Server 2005的性能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表