参考文件:

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的更多相关文章

  1. 在ubuntu上搭建turnserver

    这边文章的目的:搭建turnserver,设定开机启动 1.下载turnserver的源码,最新的地址https://code.google.com/p/rfc5766-turn-server/ no ...

  2. 搭建自己的AppRTCDemo服务器

    http://www.jianshu.com/p/c55ecf5a3fcf http://io.diveinedu.com/2015/02/05/%E7%AC%AC%E5%85%AD%E7%AB%A0 ...

  3. google开源服务器apprtc的搭建

    本文参考网帖: http://www.jianshu.com/p/c55ecf5a3fcf http://io.diveinedu.com/2015/02/05/%E7%AC%AC%E5%85%AD% ...

  4. WebRTC服务器——Licode 环境搭建

    WebRTC服务器--Licode 环境搭建 系统配置 阿里云服务器 Ubuntu 14.04.5 LTS Docker 环境搭建 在一台空的机器上搭建docker环境,先要安装docker,执行下面 ...

  5. WebRTC信令控制简介与STUN, TURN服务器搭建

    本文将向大家介绍两个方面的知识: WebRTC信令控制 STUN/TURN服务器的搭建 在前面的文章中已经向大家介绍了如何构建信令服务器.但构建的信令服务器是如何工作的?哪些消息需要信令服务器控制和中 ...

  6. stun服务器搭建(coTurn)

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

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

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

  8. webrtc笔记(1): 基于coturn项目的stun/turn服务器搭建

    webrtc是google推出的基于浏览器的实时语音-视频通讯架构.其典型的应用场景为:浏览器之间端到端(p2p)实时视频对话,但由于网络环境的复杂性(比如:路由器/交换机/防火墙等),浏览器与浏览器 ...

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

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

随机推荐

  1. 编译基于ARM LINUX的驱动模块的Makefile

    KERNELDIR =/home/wenhao/platform/linux-2.6.34PWD := $(shell pwd)CROSS_COMPILE = /usr/local/arm/4.3.2 ...

  2. 理解JavaScript中的事件路由冒泡过程及委托代理机制

    当我用纯CSS实现这个以后.我开始用JavaScript和样式类来完善功能. 然后,我有一些想法,我想使用Delegated Events (事件委托)但是我不想有任何依赖,插入任何库,包括jQuer ...

  3. Hibernate从入门到精通(十一)多对多双向关联映射

    上次我们在中Hibernate从入门到精通(十)多对多单向关联映射讲解了一下多对多单向关联映射,这次我们讲解一下七种映射中的最后一种多对多双向关联映射. 多对多双向关联映射 按照我们之前的惯例,先看一 ...

  4. OpenGL学习笔记之了解OpenGL

    OpenGL(全写Open GraphicsLibrary)是个定义了一个跨编程语言.跨平台的编程接口规格的专业的图形程序接口.它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库. 说 ...

  5. Linux C 文件与目录4 将缓冲区数据写入磁盘

    将缓冲区数据写入磁盘 所谓缓冲区,是Linux系统对文件的一种处理方式.在对文件进行写操作时,并没有立即把数据写入到磁盘,而是把数据写入到缓冲区.如果需要把数据立即写入到磁盘,可以使用sync函数.用 ...

  6. 基于.net mvc的校友录(七、文件上传以及多对多关系表的LINQ查询实现)

    图片的上传与调用 图片的上传就是文件的上传,在前台使用的是type="file"的input,但是,要将表单声明为multipart/form-data模式,方法是在BeginFo ...

  7. 使用JavaScript+Html创建win8应用(一)

            最近在学习win8 metro app的开发,今天刚刚学了一个小的例子,分享一下 开始之前你需要准备... 1.开发win8应用需要具备Windows 8 和 Microsoft Vi ...

  8. xml基础学习笔记04

    今天继续xml学习,主要是:SimpleXML快速解析文档.xml与数组相互转换 .博客中只是简单的做一个学习记录.积累.更加详细的使用方法,可以查看php手册 1.SimpleXML快速解析文档 前 ...

  9. android下的数据存储

    android下数据存储的几种方式:(简单讨论) 1.文件 举例:登陆时“记住密码” 因为是基于Linux系统,直接建文件,文件会出现在项目工程:而手机登陆时,应该把文件放在手机里,通常数据放在dat ...

  10. HTML 表格生成

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...