Turn and Stun server · J
2024-09-01 23:44:45
本文简介了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服务器中转。
最新文章
- Window对象方法
- 深入grootJs(进阶教程)
- 【项目总结】之——导出Excel
- AC自动机 - 多模式串匹配问题的基本运用 + 模板题 --- HDU 2222
- Js 和 PHP 中保留小数点后X位数的方法 toFixed、round、number_format、sprintf
- 修改Oracle 表空间名称 tablespace name
- eclipse中DDMS的LOGcat只有一列level
- Ognl底层使用
- #使用parser获取图片信息,输出Python官网发布的会议时间、名称和地点。
- 【解决】VS2013 + Qt 5.7(5.6适用)使用QSqlDatabase出现“无法解析的外部符号";错误
- python学习之数字
- 阿里云CentOS部署小笔记
- 用于模拟百度分享的errno错误代码
- 关于fftshift----将零频率的分量移到频谱的中心
- SSM框架—环境搭建(MyEclipse+Tomcat+MAVEN+SVN)
- 【记一次pull request的惨痛教训】不可见的分隔符之Zero-with-space
- BFC的形成和排版规则
- js实现打印
- C#_图片存取数据库Winform
- [信息检索] 第一讲 布尔检索Boolean Retrieval