0. 前言

  好久之前写过一篇搭建WebRTC的文章,里面有简单的说到怎么搭建一个stun服务。但那时只是一笔带过。正好,这两天搭建stun服务,这篇博客就再复习一遍,并把搭建过程整理一下。

1. 安装

  https://github.com/coturn/coturn 在这里git clone 下来然后编译安装,一切默认即可。编译后,也可以不用安装。在编译目录下bin文件夹下有turnserver turnutils_stunclient turnutils_uclient 这三个等一下会用到的软件。

  http://www.stunprotocol.org/ 这个stunserver 也是可以的。

2. 配置turnserver.conf

  可以创建 bin/turnserver.conf 文件,增加以下配置信息。

 listening-ip=0.0.0.0
listening-port=3478 #relay-ip=0.0.0.0
external-ip=0.0.0.0 min-port=59000
max-port=65000 Verbose
fingerprint no-stdout-log
syslog cert=pem/turn_server_cert.pem
pkey=pem/turn_server_pkey.pem user=demo:demo no-tcp
no-tls
no-tcp-relay
stun-only
#secure-stun

  简单说明,listening-ip 监听的IP,这里的IP必须是外网IP,如果服务器有外网IP网卡即可。最近(2018-04)购买的阿里云ECS虚拟主机,由于采用VPC专有网络架构。购买的ECS主机在主机内部是看不到外网网卡的,提工单问了,说是不行了,新的专有网络跟以前的经典网络不一样了。现在的网络是在外面映射到虚拟主机的。这就很尴尬了,到时候如果要实际生产,那应该是要购买独立物理主机了。 好吧,我错了。是可以正常的运行的,是因为阿里云网络安全组的问题,类似与防火墙的东西。之前配了TCP,忘记还有UDP这回事了。道歉!!各位亲,要注意哦。我是在排查问题时,发现,所有的UDP包都处理不了,突然想起的。

  
  cert 和 pkey 这两个是配置如果要进行安全SSL连接用到的证书。TCP是SSL,UDP是DTLS连接。
  no-tcp 和 no-tls 表示不要TCP连接了,因为NAT穿透,对TCP支持很弱,一般是使用UDP来进行穿透。
  由于产品处于前期,这里只支持stun服务,对于turn的转发功能,暂时不考虑。

3.启动turnserver服务

  

4.测试stun服务

  (1) 使用 turnutils_stunclient 测试
  
  可通过该工具进行查询,里面出现 The response is an error 401 (Unauthorized) 是如果服务器开启secure-stun选项时,那么就会出现401未授权错误。turnutils_stunclient 是不支持帐号密码验证的。
  (2) 使用 turnutils_uclient 测试

./turnutils_uclient -S -v -u demo -w demo -i pem/turn_client_cert.pem -k pem/turn_client_pkey.pem xxx.wunaozai.com -y 

  如果不用帐号密码校验的可以不用 -u -w, 如果不用DTLS安全连接的可以不要-i -k.

  
  (3) 使用 stun-client-0-96.exe 测试
  

  
  (4)使用 NatTypeTester.exe 测试
  
  使用 https://github.com/webrtc/samples 下 /src/content/peerconnection/trickle-ice/index.html 测试
  

5.参考资料

  https://www.cnblogs.com/idignew/p/7446121.html
  https://www.cnblogs.com/idignew/p/7440048.html
  https://www.cnblogs.com/kakawater/p/7112925.html
  https://www.cnblogs.com/mobilecard/p/6544731.html
  https://www.cnblogs.com/lingdhox/p/4209659.html

  本文地址: https://www.cnblogs.com/wunaozai/p/9071097.html

stun服务器搭建(coTurn)的更多相关文章

  1. p2p webrtc服务器搭建系列1: 房间,信令,coturn打洞服务器

    中继(relay) 在RTCPeeConnection中,使用ICE框架来保证RTCPeerConnection能实现NAT穿越 ICE,全名叫交互式连接建立(Interactive Connecti ...

  2. WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建

    WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建 四月 4, 2019 作者:李超,音视频技术专家.本文首发于 RTC 开发者社区,欢迎在社区留言与作者交流. htt ...

  3. STUN/TURN服务器搭建

    目录 STUN/TURN服务器搭建 编译安装 配置使用 添加用户 启动server 测试 开机启动 参考 STUN/TURN服务器搭建 编译安装 编译安装 OpenSSL: sudo apt-get ...

  4. (转)WebRTC信令控制与STUN/TURN服务器搭建

    转:https://rtcdeveloper.com/t/topic/13742 本文将向大家介绍两个方面的知识: WebRTC信令控制 STUN/TURN服务器的搭建 在前面的文章中已经向大家介绍了 ...

  5. 配置stun服务器实现穿墙

    Turn服务器的配置流程 Webrtc是基于P2P的,在两个客户端建立连接之前需要服务器建立连接,这时两台设备一般都处于一个或者多个NAT中,那么两台设备建立连接就需要穿墙技术. 这时就用到了turn ...

  6. Git本地服务器搭建及使用详解

    Git本地服务器搭建及使用 Git是一款免费.开源的分布式版本控制系统.众所周知的Github便是基于Git的开源代码库以及版本控制系统,由于其远程托管服务仅对开源免费,所以搭建本地Git服务器也是个 ...

  7. ​Linux下的SVN服务器搭建

    ​Linux下的SVN服务器搭建 鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总 ...

  8. 版本控制-svn服务器搭建和常用命令(centos 6.3)

    Svn是比较优秀的版本控制工具,虽然功能和性能上无法和Git媲美,但由于其容易搭建和使用的特性,所以在各个小公司还是很受欢迎的.使用Git可参考<版本控制-Git服务器搭建和常用命令使用> ...

  9. 版本控制-Git服务器搭建和常用命令使用

    Git是目前世界上最先进的分布式版本控制系统(没有之一).使用Svn的请参考<版本控制-svn服务器搭建和常用命令(centos 6.3)>,下面介绍Git的常用命令 常用命令 简单版 升 ...

随机推荐

  1. 使用static关键字修饰一个属性

    //使用static关键字修饰一个属性 //static作用: //static:静态 //1.使用static关键字修饰一个属性,声明为static的变量本质就是一个全局变量; //2.静态变量或方 ...

  2. jQuery get selected text from SELECT (or DROPDOWN) list box

    Most of the time in JavaScript we want to do following things with Select (or dropdown) list box. – ...

  3. 2011的n次方

    题目:http://noi.openjudge.cn/ch0204/2991/ 总时间限制:1000ms  内存限制: 65536kB 描述 已知长度最大为200位的正整数n,请求出2011^n的后四 ...

  4. NPOI 中的公式列的值的获取

    方法1 NPOI 中,对 sheet 对象设置 ForceFormulaRecalculation = true,即可实现自动将 Excel 的公式计算出来. 方法2 循环 Excel 的行.列,取出 ...

  5. c++ ado 程序终止时崩溃

    在_ConnectionPtr析构的时候要将_ConnectionPtr置NULL ADODB::_ConnectionPtr conn;conn.CreateInstance(__uuidof(AD ...

  6. HDU 3018 Ant Trip (欧拉回路)

    Ant Trip Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  7. jquery datetimepicker 配置参数

    jquery的datetimepicker时间控件除了样式有点不太美观,功能性还是相当强大的. 在正常情况下input的type应该设置为"text",可点击又可输入(mask,e ...

  8. 【Spring】SpringMVC之基于注解的实现SpringMVC+MySQL

    目录结构: contents structure [-] SprinigMVC是什么 SpringMVC工作原理 @Controller和@RequestMapping注解 @Controller注解 ...

  9. 【java】Java泛型

    一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(Stri ...

  10. 技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp.net core 系列 9 环境(Development、Staging 、Production)

    黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. “九阴神抓”本是& ...