zoukankan      html  css  js  c++  java
  • 搭建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    服务端打印的日志:

    15:44:26.632297 [turnserver_main:4509]  Received UDP on listening address
    
    15:44:26.632336[turnserver_listen_recv:3273]   Nomessage integrity
    
    15:44:26.636506 [turnserver_main:4509]  Received UDP on listening address
    
    15:44:26.636534[turnserver_listen_recv:3581]   OK basicvalidation are done, process the TURN message
    
    15:44:26.636546 [turnserver_process_turn:2942]  Process a TURN message
    
    15:44:26.636559[turnserver_process_allocate_request:2302]     Allocate request received!
    
    15:44:26.636573[turnserver_process_allocate_request:2536]     lifetime: 165 seconds
    
    15:44:26.636667 [turnserver_process_allocate_request:2767]      Account foo, allocations used: 3
    
    15:44:26.636719[turnserver_process_allocate_request:2903]     Allocation successful, send success allocate response
    
    15:44:26.640733 [turnserver_main:4509]  Received UDP on listening address
    
    15:44:26.640758[turnserver_listen_recv:3581]   OK basicvalidation are done, process the TURN message
    
    15:44:26.640770[turnserver_process_turn:2942]  Process aTURN message
    
    15:44:26.640781[turnserver_process_createpermission_request:1627]      CreatePermission request received
    
    15:44:26.640807[turnserver_process_createpermission_request:1767]      Install permission for 183.62.225.76 4588
    
    15:44:26.640828[turnserver_process_createpermission_request:1806]      CreatePermission successful, send successCreatePermission response
    
    15:44:26.645088 [turnserver_main:4509]  Received UDP on listening address
    
    15:44:26.645110[turnserver_listen_recv:3581]   OK basicvalidation are done, process the TURN message
    
    15:44:26.645121[turnserver_process_turn:2942]  Process aTURN message
    
    15:44:26.645131[turnserver_process_send_indication:1414]      Send indication received!
    
    15:44:26.645143[turnserver_check_bandwidth_limit:503] Tokendown bucket available: 150000, tokens requested: 1024
    
    15:44:26.645154[turnserver_process_send_indication:1536]      Will not set DF flag
    
    15:44:26.645166[turnserver_process_send_indication:1567]      Send data to peer
    
    15:44:26.645224 [turnserver_main:4686]  Received UDP on a relayed address
    
    15:44:26.645241[turnserver_check_bandwidth_limit:477] Tokenup bucket available: 150000, tokens requested: 1024
    
    15:44:26.645314[turnserver_relayed_recv:3722]  Send datato client
    
    15:44:26.649140 [turnserver_main:4509]  Received UDP on listening address
    
    15:44:26.649165[turnserver_listen_recv:3581]   OK basicvalidation are done, process the TURN message
    
    15:44:26.649177[turnserver_process_turn:2942]  Process aTURN message
    
    15:44:26.649187[turnserver_process_channelbind_request:1860]  ChannelBind request received!
    
    15:44:26.649199[turnserver_process_channelbind_request:1936]  Client request a ChannelBinding for 183.62.225.76 4588
    
    15:44:26.649234[turnserver_process_channelbind_request:2055]  ChannelBind successful, send success ChannelBind response
    
    15:44:26.653515 [turnserver_main:4509]  Received UDP on listening address
    
    15:44:26.653532[turnserver_process_channeldata:1239]  ChannelData received!
    
    15:44:26.653544[turnserver_check_bandwidth_limit:503] Tokendown bucket available: 150000, tokens requested: 1024
    
    15:44:26.653557[turnserver_process_channeldata:1366]  Send ChannelData to peer
    
    15:44:26.653596 [turnserver_main:4686]  Received UDP on a relayed address
    
    15:44:26.653611[turnserver_check_bandwidth_limit:477] Tokenup bucket available: 150000, tokens requested: 1024
    
    15:44:26.653623[turnserver_relayed_recv:3722]  Send datato client
    
    15:44:26.657563 [turnserver_main:4509]  Received UDP on listening address
    
    15:44:26.657586[turnserver_listen_recv:3581]   OK basicvalidation are done, process the TURN message
    
    15:44:26.657598[turnserver_process_turn:2942]  Process aTURN message
    
    15:44:26.657608[turnserver_process_refresh_request:2101]      Refresh request received!
    
    15:44:26.657618[turnserver_process_refresh_request:2146]      lifetime: 0 seconds
    
    15:44:26.657664[turnserver_process_refresh_request:2201]      Account foo, allocations used: 2
    
    15:44:26.657677[turnserver_process_refresh_request:2203]      Explicit delete of allocation
    
    15:44:26.657692[turnserver_process_refresh_request:2245]      Refresh successful, send success refresh response
    服务端打印的日志
  • 相关阅读:
    拓端tecdat|R语言投资组合优化求解器:条件约束最优化、非线性规划求解
    拓端tecdat|R语言多元时间序列滚动预测:ARIMA、回归、ARIMAX模型分析
    拓端tecdat|R语言聚类有效性:确定最优聚类数分析IRIS鸢尾花数据和可视化
    拓端tecdat|R语言k-means聚类、层次聚类、主成分(PCA)降维及可视化分析鸢尾花iris数据集
    【拓端tecdat】R语言用Hessian-free 、Nelder-Mead优化方法对数据进行参数估计
    springcloud之zuul网关服务并携带头信息转发token
    windows环境搭建Vue开发环境
    JVM之top+jstack分析cpu过高原因
    JVM调优之jstack找出最耗cpu的线程并定位代码
    用自顶向下、逐步细化的方法进行以下算法的设计: 1. 输出1900---2000年中是软黏的年份,符合下面两个条件之一的年份是闰年:
  • 原文地址:https://www.cnblogs.com/matthew-2013/p/4933244.html
Copyright © 2011-2022 走看看