搭建turnserver
参考文件:
http://blog.csdn.net/kl222/article/details/20145423
为什么要搭建TURN服务器?
因为我们编写的sip客户端再和南瑞的sip服务器进行通信的时候,中间经过一个安全平台,这个安全平台具有NAT和防火墙功能。RTP和RTCP包传递不了。所以要增加一个TURN服务器。同时在sip客户端侧要实现TURN客户端功能。
搭建TURN服务器的步骤:
要安装两个软件 libConfuse和TURN server
1,下载
别人说通过svn和git方式下载,但是这个地址都下载不下来,提示地址错误。我是在windows下访问下面的两个网站,直接下载的文件。
官网:http://turnserver.sourceforge.net/
官网: http://www.nongnu.org/confuse/
下载的两个文件如下:
confuse-2.7.tar.gz
turnserver-0.7.3.tar.bz2
2,传输
我在windows下面使用的是xshell, 配置xshell下面的ZMODEM的上传和下载目录,就可以使用rz命令向CentOS主机传输文件了。
我是在根目录下创建了一个turnserver目录。
mkdir turnserver
3,解压
tar -xzvf confuse-2.7.tar.gz
tar -jxvf turnserver-0.7.3.tar.bz2
解压后的目录如下:

4,编译安装confuse-2.7
cd confuse-2.7 ./configure //这里不要指定目录,使用默认目录进行安装。默认是安装在/usr/local目录下面。 make sudo make install
没有报错,安装成功。
5,编译安装turnserver-0.7.3
cd turnserver-0.7.3 ./configure //这里不要指定目录,使用默认目录进行安装。默认是安装在/usr/local目录下面。 make sudo make install
这两个只所以没有指定安装目录是因为设置了安装目录后,再安装turnserver的时候,提示前面的confuse没有安装。
6,熟悉、建立、修改配置文件。
6.1 在turnserver源码根目录下的extra目录下有配置模板可以参考。
turnserver.fedora.initd #fedora平台的启动脚本
turnserver.spec #fedora平台的启动脚本
turnserver.debian.initd #debian平台的启动脚本
turnserver.conf.template#配置文件
turnusers.txt.template #用户名、密码配置文件
6.2 建立配置文件:
[hy@localhost-turnserver]$ cd extra/
[hy@localhost-extra]$ cp turnserver.conf.template /usr/local/etc/turnserver.conf
[hy@localhost-extra]$ cp turnusers.txt.template /usr/local/etc/turnusers.txt
[hy@localhost-extra]$ cd /usr/local/etc
6.3修改配置文件
cd /usr/local/etc
chmod 777 turnserver.conf
chmod 777 turnusers.txt
vi turnserver.conf
listen_address = {"183.62.225.76" } #把对应公网网卡的IP地址写入(如果公网地址是用镜像的,则用镜像的那个IP地址),一般只要改这个配置,其它的用默认值就可以了。
## Account method.
account_method = "file" #配置账户数据为文件
## Account file (if account_method = file).
account_file ="/usr/local/etc/turnusers.txt" #指定账户文件位置
[root@rlnf-76etc]# vi turnusers.txt
foo:bar:domain.org:authorized
用户名:密码:领域:需要验证的
领域的值应与配置文件(turnserver.conf)中的
## Realm value.
realm = "domain.org"
的值相同.这个值用于密码确认的.
7,启动turnserver
[root@rlnf-76etc]# cd ../sbin
[root@rlnf-76sbin]# ./turnserver -c /usr/local/etc/turnserver.conf
8 启动回显服务:
在服务器上启动回显测试服务端程序:
[root@rlnf-76bin]# ./test_echo_server
UDP Echo server started on port 4588
9 测试服务器是否正常
在其它机器上(客户机器)启动测试程序:
rdc@rdc-Virtual-Machine:/home/turnserver/src$./test_turn_client -t udp -s 183.62.225.76 -p 183.62.225.76 -w 4588 -u foo -g 1234-d domain.org
Protocol: udp (17) use TLS: 0.
sock: 3 speer: (nil) connected!
Send Allocate request.
Send Allocate request.
Probably wrong credentials or requestedfamily not supported.
这个是说权限错误,一般是用户或密码不对。修改用户和密码,再次运行:
rdc@rdc-Virtual-Machine:/home/turnserver/src$./test_turn_client -t udp -s 183.62.225.76 -p 183.62.225.76 -w 4588 -u foo -gbar -d domain.org
Protocol: udp (17) use TLS: 0.
sock: 3 speer: (nil) connected!
Send Allocate request.
Send Allocate request.
Allocate an address!
Send CreatePermission request.
Permission installed!
Send Send indication.
Receive data: 1024
Send CreatePermission request.
Channel bound to 16393.
Send ChannelData.
Received ChannelData: 1024 bytes
Send Refresh request.
Cleanup and exit.
10 服务端打印的日志:
::26.632297 [turnserver_main:] Received UDP on listening address ::26.632336[turnserver_listen_recv:] Nomessage integrity ::26.636506 [turnserver_main:] Received UDP on listening address ::26.636534[turnserver_listen_recv:] OK basicvalidation are done, process the TURN message ::26.636546 [turnserver_process_turn:] Process a TURN message ::26.636559[turnserver_process_allocate_request:] Allocate request received! ::26.636573[turnserver_process_allocate_request:] lifetime: seconds ::26.636667 [turnserver_process_allocate_request:] Account foo, allocations used: ::26.636719[turnserver_process_allocate_request:] Allocation successful, send success allocate response ::26.640733 [turnserver_main:] Received UDP on listening address ::26.640758[turnserver_listen_recv:] OK basicvalidation are done, process the TURN message ::26.640770[turnserver_process_turn:] Process aTURN message ::26.640781[turnserver_process_createpermission_request:] CreatePermission request received ::26.640807[turnserver_process_createpermission_request:] Install permission for 183.62.225.76 ::26.640828[turnserver_process_createpermission_request:] CreatePermission successful, send successCreatePermission response ::26.645088 [turnserver_main:] Received UDP on listening address ::26.645110[turnserver_listen_recv:] OK basicvalidation are done, process the TURN message ::26.645121[turnserver_process_turn:] Process aTURN message ::26.645131[turnserver_process_send_indication:] Send indication received! ::26.645143[turnserver_check_bandwidth_limit:] Tokendown bucket available: , tokens requested: ::26.645154[turnserver_process_send_indication:] Will not set DF flag ::26.645166[turnserver_process_send_indication:] Send data to peer ::26.645224 [turnserver_main:] Received UDP on a relayed address ::26.645241[turnserver_check_bandwidth_limit:] Tokenup bucket available: , tokens requested: ::26.645314[turnserver_relayed_recv:] Send datato client ::26.649140 [turnserver_main:] Received UDP on listening address ::26.649165[turnserver_listen_recv:] OK basicvalidation are done, process the TURN message ::26.649177[turnserver_process_turn:] Process aTURN message ::26.649187[turnserver_process_channelbind_request:] ChannelBind request received! ::26.649199[turnserver_process_channelbind_request:] Client request a ChannelBinding for 183.62.225.76 ::26.649234[turnserver_process_channelbind_request:] ChannelBind successful, send success ChannelBind response ::26.653515 [turnserver_main:] Received UDP on listening address ::26.653532[turnserver_process_channeldata:] ChannelData received! ::26.653544[turnserver_check_bandwidth_limit:] Tokendown bucket available: , tokens requested: ::26.653557[turnserver_process_channeldata:] Send ChannelData to peer ::26.653596 [turnserver_main:] Received UDP on a relayed address ::26.653611[turnserver_check_bandwidth_limit:] Tokenup bucket available: , tokens requested: ::26.653623[turnserver_relayed_recv:] Send datato client ::26.657563 [turnserver_main:] Received UDP on listening address ::26.657586[turnserver_listen_recv:] OK basicvalidation are done, process the TURN message ::26.657598[turnserver_process_turn:] Process aTURN message ::26.657608[turnserver_process_refresh_request:] Refresh request received! ::26.657618[turnserver_process_refresh_request:] lifetime: seconds ::26.657664[turnserver_process_refresh_request:] Account foo, allocations used: ::26.657677[turnserver_process_refresh_request:] Explicit delete of allocation ::26.657692[turnserver_process_refresh_request:] Refresh successful, send success refresh response
服务端打印的日志
搭建turnserver的更多相关文章
- 在ubuntu上搭建turnserver
这边文章的目的:搭建turnserver,设定开机启动 1.下载turnserver的源码,最新的地址https://code.google.com/p/rfc5766-turn-server/ no ...
- 搭建自己的AppRTCDemo服务器
http://www.jianshu.com/p/c55ecf5a3fcf http://io.diveinedu.com/2015/02/05/%E7%AC%AC%E5%85%AD%E7%AB%A0 ...
- google开源服务器apprtc的搭建
本文参考网帖: http://www.jianshu.com/p/c55ecf5a3fcf http://io.diveinedu.com/2015/02/05/%E7%AC%AC%E5%85%AD% ...
- WebRTC服务器——Licode 环境搭建
WebRTC服务器--Licode 环境搭建 系统配置 阿里云服务器 Ubuntu 14.04.5 LTS Docker 环境搭建 在一台空的机器上搭建docker环境,先要安装docker,执行下面 ...
- WebRTC信令控制简介与STUN, TURN服务器搭建
本文将向大家介绍两个方面的知识: WebRTC信令控制 STUN/TURN服务器的搭建 在前面的文章中已经向大家介绍了如何构建信令服务器.但构建的信令服务器是如何工作的?哪些消息需要信令服务器控制和中 ...
- stun服务器搭建(coTurn)
0. 前言 好久之前写过一篇搭建WebRTC的文章,里面有简单的说到怎么搭建一个stun服务.但那时只是一笔带过.正好,这两天搭建stun服务,这篇博客就再复习一遍,并把搭建过程整理一下. 1. 安装 ...
- p2p webrtc服务器搭建系列1: 房间,信令,coturn打洞服务器
中继(relay) 在RTCPeeConnection中,使用ICE框架来保证RTCPeerConnection能实现NAT穿越 ICE,全名叫交互式连接建立(Interactive Connecti ...
- webrtc笔记(1): 基于coturn项目的stun/turn服务器搭建
webrtc是google推出的基于浏览器的实时语音-视频通讯架构.其典型的应用场景为:浏览器之间端到端(p2p)实时视频对话,但由于网络环境的复杂性(比如:路由器/交换机/防火墙等),浏览器与浏览器 ...
- WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建
WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建 四月 4, 2019 作者:李超,音视频技术专家.本文首发于 RTC 开发者社区,欢迎在社区留言与作者交流. htt ...
随机推荐
- CString string char* char 之间的字符转换(多种方法)
在写程序的时候,我们经常遇到各种各样的类型转换,比如 char* CString string 之间的互相转换.首先解释下三者的含义. CString 是一种很有用的数据类型.它们很大程度上简化了MF ...
- MATLAB连通域标记函数
L = bwlabel(BW,n)返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1.2.num(连通区域的个数).n的值为4或8,表示是按4连通寻找区域,还是 ...
- 【BZOJ 1997】[Hnoi2010]Planar
Description Input Output 找到哈密尔顿环之后找到不在哈密尔顿环上的边 这些边如果同时在里面相交那他们同时在外面也相交,所以只能一外一内,这就变成了2-SAT,判一下就好了 ...
- 宣讲ppt的技巧
这是一个L运营商的项目,项目规模比较大,中兴的客户群体定位主要是电信运营商,运营商的项目做起来非常累,不是一般的小公司能玩的,一般项目要经过这几个过程,前期信息获得——技术交流引导——实验局测试——投 ...
- java中的匿名内部类总结(转)
源出处: java中的匿名内部类总结 匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接 ...
- 软件工程随堂小作业——随机四则运算Ⅱ(C++)
一.设计思路 设计思路已给出,此处不再赘述. 二.源代码 (1)四则运算2.cpp(源文件) // 四则运算2.cpp : Defines the entry point for the consol ...
- Eigen库实现简单的旋转、平移操作
本来课程要求用GUI界面来实现Eigen的旋转.平移操作的,但是接触GUI编程时间太短,虽然要求很简单,但是做了几天还是没有完成.就把命令行下面的简单的贴一下吧. main.cpp #include ...
- Mysql的主从数据库没有同步的解决办法
Mysql的主从数据库没有同步的解决办法 今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. ...
- UVALive - 7368 Airports DAG图的最小路径覆盖
题目链接: http://acm.hust.edu.cn/vjudge/problem/356788 Airports Time Limit: 3000MS 问题描述 An airline compa ...
- Javascript使用function创建类的两种方法
1.使用function类 //myFunction.js var CMyFunc=function() { //类的公共方法,供外部调用 this.Func1=function() { var i= ...