当前位置: 首页 > news >正文

stun服务器搭建(coTurn)

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 文件,增加以下配置信息。

 1 listening-ip=0.0.0.0
 2 listening-port=3478
 3 
 4 #relay-ip=0.0.0.0
 5 external-ip=0.0.0.0
 6 
 7 min-port=59000
 8 max-port=65000
 9 
10 Verbose
11 fingerprint
12 
13 no-stdout-log
14 syslog
15 
16 cert=pem/turn_server_cert.pem
17 pkey=pem/turn_server_pkey.pem
18 
19 user=demo:demo
20 
21 no-tcp
22 no-tls
23 no-tcp-relay
24 stun-only
25 #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 

 

相关文章:

  • 讲清楚之javascript作用域
  • Windows Containers 大冒险: 容器网络
  • Java判断对象类型是否为数组
  • Django学习
  • 性能是.NET Core的一个关键特性
  • itext7 html转pdf实现
  • django常见问题
  • mysql 查询表的字段数目
  • docker run 与docker start的区别
  • qsort用法
  • Python3学习笔记-构造函数与析构函数
  • SQL Server查询优化方法(查询速度慢的原因很多,常见如下几种)
  • Java入门 | 如何傻瓜式的安装JDK和配置环境变量?
  • git 比较 change to be committed
  • MySQL DDL--ghost工具学习
  • ES2017异步函数现已正式可用
  • ES6系统学习----从Apollo Client看解构赋值
  • HTML5新特性总结
  • JS变量作用域
  • MySQL用户中的%到底包不包括localhost?
  • php面试题 汇集2
  • Redis学习笔记 - pipline(流水线、管道)
  • Spring声明式事务管理之一:五大属性分析
  • TypeScript迭代器
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 从重复到重用
  • 计算机常识 - 收藏集 - 掘金
  • 想写好前端,先练好内功
  • 用 Swift 编写面向协议的视图
  • PostgreSQL之连接数修改
  • puppet连载22:define用法
  • RDS-Mysql 物理备份恢复到本地数据库上
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​Python 3 新特性:类型注解
  • ​人工智能书单(数学基础篇)
  • #QT(智能家居界面-界面切换)
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (04)odoo视图操作
  • (2)Java 简介
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (LeetCode) T14. Longest Common Prefix
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (第一天)包装对象、作用域、创建对象
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • 、写入Shellcode到注册表上线
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)