2019独角兽企业重金招聘Python工程师标准>>>

1.1.1  Turnserver

1.1.1.1 官网:http://turnserver.sourceforge.net/

(最新地址http://sourceforge.net/projects/turnserver/)

1.1.1.2 支持协议:

TURN and STUN Request For Comments (respectively RFC 5766 and RFC5389)。RFC6156 namely TURN-IPV6 (relay between IPv4-IPv6, IPv6-IPv4 andIPv6-IPv6 addresses) and RFC6062 namely TURN-TCP (relay data with TCP)。

1.1.1.3 下载源码:

[root@rlnf-76home]# svn co svn://svn.code.sf.net/p/turnserver/code/trunk turnserver

我是从http://sourceforge.net/projects/turnserver/下载的源代码上传服务器

然后

tar jxvf XX.tar.bz2

如果tar不支持j选项,就用下面方式解压

bzip2 -d  XX.tar.bz2

tar -xvf  XX.tar.bz2

1.1.1.4 安装依赖

1.1.1.4.1 libConfuse

1.       官网: http://www.nongnu.org/confuse/

2.       下载并安装libconfuse依赖:

[root@rlnf-76 home]# git clone https://github.com/martinh/libconfuse.git

[root@rlnf-76home]# cd turnserver/

[root@rlnf-76libconfuse]# ./autogen.sh

[root@rlnf-76libconfuse]# ./configure --prefix=/usr

[root@rlnf-76libconfuse]# make install

3.       安装依赖:

l  Ubuntu:

sudoapt-get install flex

l  CentOS:

yuminstall flex

1.1.1.5 产生配置脚本:

[root@rlnf-76turnserver]# cd turnserver

[root@rlnf-76turnserver]# autoreconf --install

1.1.1.6 编译

[root@rlnf-76turnserver]# ./configure --enable-debug-build

--enable-debug-build:允许编译调试信息,用于调试。发行版本不需要这个参数。

[root@rlnf-76turnserver]# make

[root@rlnf-76turnserver]# make install

1.1.1.7  编译时可能会出现的问题

l  在CentOS下可能会出现下面错误:

编译json-c arm版本 可以顺利通过, 但是链接json-c动态库的时候会有提示: undefined reference to rpl_malloc

按照网上的搜索结果在configure的时候加上--with-gnu-ld和config.h里加上#undefine rpl_malloc都不能解决问题。

后来发现config.h.in里定义了

#undef malloc

#undef realloc

把这两个去掉,编译顺利通过。

l  Ubuntu下可能会出现的下面错误:

util_sys.c:259:14: error: ignoring returnvalue of ‘setegid’, declared with attribute warn_unused_result[-Werror=unused-result]

setegid(gid_real);

^

util_sys.c:270:14: error: ignoring returnvalue of ‘setegid’, declared with attribute warn_unused_result[-Werror=unused-result]

setegid(user.pw_gid);

^

util_sys.c: In function‘sys_gain_privileges’:

util_sys.c:291:10: error: ignoring returnvalue of ‘setegid’, declared with attribute warn_unused_result[-Werror=unused-result]

setegid(gid_eff);

^

cc1: all warnings being treated as errors

解决方法:

把src/Makefile.am文件中的下面警告标志去掉:

-Wall -Wextra -Werror

1.1.1.8   配置

在源码根目录下的extra目录下有配置模板可以参考。

[root@rlnf-76extra]# ls

turnserver.fedora.initd #fedora平台的启动脚本

turnserver.spec         #fedora平台的启动脚本

turnserver.debian.initd #debian平台的启动脚本

turnserver.conf.template#配置文件

turnusers.txt.template  #用户名、密码配置文件

1.1.1.9  建立配置文件:

[root@rlnf-76turnserver]# cd extra/

[root@rlnf-76extra]# cp turnserver.conf.template /usr/local/etc/turnserver.conf

[root@rlnf-76extra]# cp turnusers.txt.template /usr/local/etc/turnusers.txt

[root@rlnf-76extra]# cd /usr/local/etc

1.1.1.10      修改配置文件:

[root@rlnf-76etc]# vi turnserver.conf

listen_address = {"183.62.225.76" }           #把公网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

用户名:密码:领域:需要验证的

1.1.1.11      启动turnserver:

[root@rlnf-76etc]# cd ../sbin

[root@rlnf-76sbin]# ./turnserver -c /usr/local/etc/turnserver.conf

1.1.1.12      启动回显服务:

[root@rlnf-76bin]# ./test_echo_server

UDP Echo server started on port 4588

1.1.1.13      测试服务器是否正常

在其它机器上启动测试程序:

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.

1.1.1.14      服务端打印的日志:

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

转载于:https://my.oschina.net/u/181793/blog/212950

搭建turnserver(转) 稍加整理相关推荐

  1. LVGL 之 windows 上 lvgl 模拟器基于 Visual Studio 搭建方法的简单整理

    LVGL 之 windows 上 lvgl 模拟器 基于 Visual Studio 搭建方法的简单整理 目录 LVGL 之 windows 上 lvgl 模拟器 基于 Visual Studio 搭 ...

  2. 【EmbeddedDev】BBBRTL8188CUS搭建wifi AP 问题整理

    BBB&RTL8188CUS搭建wifi AP 问题整理 1.nl80211 not found. root@beaglebone:~# iw listnl80211 not found. 解 ...

  3. 搭建turnserver

    参考文件: http://blog.csdn.net/kl222/article/details/20145423 为什么要搭建TURN服务器? 因为我们编写的sip客户端再和南瑞的sip服务器进行通 ...

  4. Eclipse 搭建Android开发环境(整理)

    1>配置Java开发环境 参考:http://blog.csdn.net/cxc19890214/article/details/41243495 2>安装ADT插件: ①打开已安装好的E ...

  5. php的turn服务器,搭建TurnServer服务器

    一:下载turnserver服务器 [root@iZ28d8mzdwrZ src]#wget http://ncu.dl.sourceforge.net/project/turnserver/turn ...

  6. Linux服务器搭建相关教程链接整理

    Linux: Linux 教程 | 菜鸟教程 linux下如何添加一个用户并且让用户获得root权限 - !canfly - 博客园 Git: 在 Linux 下搭建 Git 服务器 - 黄棣-dee ...

  7. Ubuntu15.04下搭建LNMP环境 - 无需整理

    为什么80%的码农都做不了架构师?>>>    親測 PHP查詢數據庫正常  LNMP是Linux+Nginx+MySQL+PHP的简称,是一套完整的PHP网站服务器架构环境. 所用 ...

  8. 搭建MarkDown文档整理对外展示网站

    考虑到公司需要对外提供自己研发的文档供他人使用.而各个研发组织属于不同组,相当于开放平台一样.于是开发了一个网站专门用来展示整理MarkDown文件. 项目github地址:doc-website 展 ...

  9. 网站域名、备案、七牛云图床重新搭建与博客整理

    最近碰上了一个问题,七牛云开始回收测试域名,结果导致我的图床有些失灵.一些软件资源都无法下载.其实这个问题在前一段不蒜子统计修改的博客里已经有兆头了.不过当时没注意.最后还是被逼得只能购买了域名,各类 ...

最新文章

  1. 坐标1-based和0-based
  2. 检查Bash数组是否包含值
  3. 运维基础(6)CI / CD
  4. android studio小案例代码,AndroidStudio开发小相册实例
  5. 7月10日任务 添加自定义监控项目、配置邮件告警、测试告警、不发邮件的问题处理...
  6. SAP Spartacus的一个问题 - CheckoutStepsSetGuard无法import
  7. POJ 2421 Constructing Roads MST kruskal
  8. 【java小知识】FileReader读取文件出现乱码的解决办法
  9. linux sha1sum命令,讲解Linux中校验文件的MD5码与SHA1码的命令使用
  10. Git生成patch及打patch到源代码
  11. 【书摘】一种基于Git的版本管理方案
  12. Java搭建网站相关知识整理(新手上路)
  13. 【LaTex】LaTex的下载与安装(超详细、超简洁)
  14. PHP后台数据处理及与web端进行数据交互
  15. 海康威视摄像头+OpenCV+VS2017 图像处理小结(一)
  16. thinkpad sl400 换网卡,debian换驱动
  17. 《UnityAPI.Transform变换》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Transform+eulerAngles+LookAt+立钻哥哥++OK++)
  18. [原创] 原创鼠繪【白发紫衣妖艳男子】
  19. Android 蓝牙知识
  20. 停!别盲目跟风学Python了!网友:我太难了...

热门文章

  1. 计算机网络英文论文,计算机网络与因特网论文(英文版).doc
  2. 字号,行距,磅,像素……(word排版)
  3. 使用library(tseries)命令,报错“Error in library(tseries) : there is no package called ‘tseries’
  4. NLP-文本处理:词性标注【使用成熟的第三方工具包:中文(哈工大LTP)、英文()】【对分词后得到的“词语列表”进行词性标注,词性标注的结果用于依存句法分析、语义角色标注】
  5. BDSN数据存储服务节点激励通证TYB将于6月21日正式上线
  6. Matplotlib之扇形图绘制
  7. xy坐标正负方向_道路施工图纸上x坐标和y坐标分别代表什么方向?哪个代表南北方向?哪个代表东西方向?...
  8. 用python模拟球赛
  9. ZUCC_BB平台-Quiz B-3-7-答案
  10. java image写入文件,从文件读取/写入图像到BufferedImage的最快方法?