Turn and Stun server · J
本文简介了Turnserver(Turn + Stun)服务器的搭建。Turnserver主要提供了stun服务,支撑NAT、防火墙穿透,turn服务器,支撑打洞失败时的数据中转。使用场景上类似于前端使用的WEBRTC音视频数据服务,在不同网络环境下可通过stun服务器进行打洞以及turn服务器进行中转,最终实现web前端上的音视频通信。
Turnserver 搭建
简介
webrtc的p2p穿透部分,一般都需要借助于turnserver,步骤大概是这样的
- 尝试直连
- 通过stun服务器进行NAT、防火墙穿透
- 穿透失败则依赖于turn服务器中转
一、安装turnserver(CentOS)
下载安装依赖库(依赖于libevent,最好也安装下mysql)
12345678910yum install -y make automake gcc cc gcc-c++ wget #一般系统都带了gcc4,无需升级yum install -y openssl-devel libevent libevent-devel mysql-devel mysql-serverwget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gztar -zxvf libevent-2.0.21-stable.tar.gz #解压缩cd libevent-2.0.21-stable.tar.gzsudo ./configuresudo makesudo make installcd ..下载turnServer安装包
这里使用都是4.4.5.2版本。也可以到http://turnserver.open-sys.org/downloads/ 下载你想要的版本。1234567wget http://turnserver.open-sys.org/downloads/v3.2.3.95/turnserver-4.4.5.2.tar.gztar -zxvf turnserver-4.4.5.2.tar.gzcd turnserver-4.4.5.2.tar.gzsudo ./configuresudo makesudo make installcd ..接下来是配置turnserver.conf文件
可以到[your turnserver path]/examples/etc/下找到默认的turnserver.conf文件,建议拷贝到系统/etc/turnserver.conf。编辑该文件:12345678910111213141516# 配置为你服务器的外网ip地址external-ip=106.74.23.11# 由于WEBRTC默认需要使用long-term认证机制(中转服务器需要),所以必须添加-a(--lt-cred-mech)配置。使用该配置后,需要指定-r(realm)并且配置账号密码。修改turnserver.conf文件的user=ghost:passwordrealm=demo# 配置你的数据库连接,如果你想使用tu 大专栏 Turn and Stun server · Jrn中转服务器,需要配置上一步的账号密码和realm值,只时候需要经由turnadmin工具往数据库添加用户记录。因此需要用到数据落地工具,WEBRTC提供了mysql、sqlite、mongoDB等方式,你只需要选一个你熟悉的方式即可。如以下的mysql配置:mysql-userdb="host=localhost dbname=turnserver user=root password=root connect_timeout=30"# 当然,你也可以修改turnServer默认监听的端口3478,以及需要监听的内网ip(内网ip可配置多个,全部注释时系统自动获取所有网卡ip):listening-port=3478listening-ip=127.0.0.1listening-ip=0.0.0.0# 还有其他非常多的配置项,包括中转服务器线程数、中转服务器地址等等,有兴趣的可以详细阅读turnserver.conf配置文件创建并导入数据库
简单配置过turnserver.conf后,我们需要做的还有是导入数据库文件。否则启动时会提示连接数据库超时或找不到指定数据库。数据库结构文件在[your turnserver path]/turndb/下,例如mysql的schema.sql。123456mysql -u root -p******$ create Database turnserver;$ use turnserver$ [copy schema.sql into here, and database tables will be created automatic.]新增用户到数据库
1turnadmin -a -u root -r demo -p root -M "host=localhost dbname=turnserver user=root password=root connect_timeout=30"启动turnserver服务
1turnserver -a -o #-o 后台运行配置客户端
12345678910111213const servers = {iceServers: [{url: 'stun:106.74.23.11:3478'}, {url: 'turn:106.74.23.11:3478',username: 'root',credential: 'root'}]}let rtc = new RTCPeerConnection(servers);简单测试
两个手机同时连入移动4g网络,在打开turn服务器情况下可通过stun实现打洞并数据p2p;
其中一个手机切换到联通网络,stun服务器无法打通,转由turn服务器中转。
Turn and Stun server · J的更多相关文章
- 在Ubuntu上部署一个基于webrtc的多人视频聊天服务
最近研究webrtc视频直播技术,网上找了些教程最终都不太能顺利跑起来的,可能是文章写的比较老,使用的一些开源组件已经更新了,有些配置已经不太一样了,所以按照以前的步骤会有问题.折腾了一阵终于跑起来了 ...
- WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建
WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建 四月 4, 2019 作者:李超,音视频技术专家.本文首发于 RTC 开发者社区,欢迎在社区留言与作者交流. htt ...
- (转)WebRTC信令控制与STUN/TURN服务器搭建
转:https://rtcdeveloper.com/t/topic/13742 本文将向大家介绍两个方面的知识: WebRTC信令控制 STUN/TURN服务器的搭建 在前面的文章中已经向大家介绍了 ...
- webrtc进阶-信令篇-之三:信令、stun、turn、ice
webRTC支持点对点通讯,但是webRTC仍然需要服务端: . 协调通讯过程中客户端之间需要交换元数据, 如一个客户端找到另一个客户端以及通知另一个客户端开始通讯. . 需要处理NAT(网 ...
- STUN和TURN技术浅析
转自:http://blog.csdn.net/yu_xiang/article/details/9227023 在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分 ...
- [转]STUN和TURN技术浅析
[转]STUN和TURN技术浅析 http://www.h3c.com.cn/MiniSite/Technology_Circle/Net_Reptile/The_Five/Home/Catalog/ ...
- NAT类型与穿透 及 STUN TURN 协议
STUN : Simple Traversal of User Datagram Protocol [UDP] Through Network Address Translators [NATs] S ...
- stun/turn/ice学习笔记
stun基本只是用于client探测NAT之后靠近stun server的外网地址,本身不包含应用数据通信的功能,其底层STUN协议通信多是基于UDP的.多个端点之间相互通过信令通道拿到彼此的NAT外 ...
- P2P技术详解(三):P2P技术之STUN、TURN、ICE详解
1.内容概述 在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet.很多时候,我们希望网络中的两台主机能够直接进行通信,即所谓的P2P ...
随机推荐
- 哈夫曼编码的理解(Huffman Coding)
哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,可变字长编码(VLC)的一种.Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最 ...
- apt源换国内源
vim /etc/apt/sources.list deb http://mirrors.163.com/debian/ jessie main non-free contribdeb http:// ...
- Arcengine对Com组件调用返回错误
将AE对象序列化如果路径不对或者没权限就会出现: 将xml反序列化为AE对象某些电脑上会出现,但是加上trycatch,不理会这个错误,也能反序列化成功:
- F - Filter Gym - 100553F (bitset用法)
题目链接:http://codeforces.com/gym/100553/attachments/download/2885/20142015-acmicpc-northeastern-europe ...
- Java之代码块
package com.atguigu.java3;/* * 代码块(或初始化块) * * 1. 代码块的作用:用来初始化类.对象 * 2. 代码块如果有修饰的话,只能使用static. * 3. 分 ...
- ofo小黄车做信息流!这到底算怎么回事?
不得不说,现在ofo绝对处于商业处境和舆论的风口浪尖上.近段时间以来,ofo各种大动作实在是让业界和大众都"看不懂".但毋庸置疑的是,ofo的种种举措都是为了"自救&qu ...
- Mac环境下pyCharm的安装,激活及使用
1.pyCharm的安装 安装地址: https://www.jetbrains.com/pycharm/download/#section=mac 2.激活 获取注册码地址: http://idea ...
- 55)PHP,在html嵌套PHP写法
样例代码:
- Docker系列六: 使用Docker官方公共仓库和私有仓库
使用公共仓库 登陆官方网站:https://hub.docker.com/ 注册账号和密码 在Docker hub中创建一个资源, create respositories, 创建后会提示 ...
- single-value grouping |limit grouping|cutpoint grouping|Lower class limit|Upper class limit|Class width|Class mark|rounding error or roundoff error|Histograms|Dotplots|Stem-and-Leaf
2.3 Organizing Quantitative Data group quantitative data: To organize quantitative data, we first gr ...