欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

搭建turn服务器

发布时间:2024/8/1 编程问答 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 搭建turn服务器 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

编译环境搭建

Vagrant

Windows用户要想在Windows下编译rfc5766-turn-server的话,需安装虚拟机,我推荐程序员专用的虚拟机——Vagrant,Linux用户请忽略。其配置文件如下:

Vagrantfile

1 2 3 4 5 6 7 8 9 10 11 12 13 14 # -*- mode: ruby -*- # vi: set ft=ruby :    VAGRANTFILE_API_VERSION = "2"    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|   config.vm.box = "hashicorp/precise64"   config.vm.box_url = "virtualbox.box"        config.vm.provider "virtualbox" do |vb|     vb.memory = 2048     vb.cpus = 2   end end

使用命令行启动它:

1 2 vagrant up vagrant ssh

安装编译工具链

1 sudo apt-get install build-essential

确认安装成功:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 vagrant@precise64:~$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubu ntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages =c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-incl uded-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-li bstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-pl ugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic - -enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --targ et=x86_64-linux-gnu Thread model: posix gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) vagrant@precise64:~$ make -v GNU Make 3.81 Copyright (C) 2006  Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.    This program built for x86_64-pc-linux-gnu vagrant@precise64:~$

安装依赖项

1 2 3 4 5 6 sudo apt-get install libssl-dev sudo apt-get install libevent-dev sudo apt-get install libpq-dev sudo apt-get install mysql-client sudo apt-get install libmysqlclient-dev sudo apt-get install libhiredis-dev

其中SQL相关的依赖项可能会失败,不过这也没什么大不了的,SQL库是为了支持更多用户而准备的,如果你不是生产环境的话,忽略也行。

检出代码

Vagrantfile的同一目录检出https://code.google.com/p/rfc5766-turn-server/source/checkout 到任意目录,我检出到了stun,下文脚本请注意自行对号入座。

cd进去

1 2 3 4 5 6 7 8 9 10 11 vagrant@precise64:~$ cd /vagrant vagrant@precise64:/vagrant$ ls down.cmd  stun  up.cmd  Vagrantfile vagrant@precise64:/vagrant$ cd stun vagrant@precise64:/vagrant/stun$ ls AUTHORS    examples  LICENSE.OpenSSL  NOTE               rpm bin        include   Makefile         postinstall.txt    src build      INSTALL   Makefile.in      README.turnadmin   STATUS ChangeLog  lib       make-man.sh      README.turnserver  TODO configure  LICENSE   man              README.turnutils   turndb vagrant@precise64:/vagrant/stun$

开始编译

生成makefile文件,编译,安装

1 2 3 ./configure make sudo make install

测试

试试看是否编译成功,先看看turnserver支持哪些功能

1 turnserver -h > help.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0: log file opened: /var/tmp/turn_1313_2014-11-04.log 0:  RFC 3489/5389/5766/5780/6062/6156 STUN/TURN Server Version Citrix-3.2.4.6 'Marshal West' 0:  Max number of open files/sockets allowed for this process: 4096 0:  Due to the open files/sockets limitation, max supported number of TURN Sessions possible is: 2000 (approximately) 0:     ==== Show him the instruments, Practical Frost: ====    0: TLS supported 0: DTLS supported 0: Redis supported 0: PostgreSQL is not supported 0: MySQL is not supported 0: OpenSSL compile-time version 0x1000100f: fresh enough 0: Default Net Engine version: 2 (UDP thread per network endpoint)    =====================================================       Usage: turnserver [options] Options:  -d, --listening-device   <device-name>     Listener interface device (NOT RECOMMENDED. Optional, Linux only).  -p, --listening-port     <port>        TURN listener port (Default: 3478).                         Note: actually, TLS & DTLS sessions can connect to the "plain" TCP & UDP port(s), too,                         if allowed by configuration.                         省略……

支持协议

测试各基础协议是否支持

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21  $ cd examples  vagrant@precise64:/vagrant/stun/examples$ ./scripts/rfc5769.sh RFC 5769 message fingerprint test(0) result: success RFC 5769 simple request short-term credentials and integrity test result: succes s RFC 5769 NEGATIVE fingerprint test(0) result: success RFC 5769 message structure, long-term credentials and integrity test result: suc cess RFC 5769 message encoding test result: success RFC 5769 NEGATIVE long-term credentials test result: success RFC 5769 message fingerprint test(1) result: success RFC 5769 IPv4 response short-term credentials and integrity test result: success    RFC 5769 NEGATIVE fingerprint test(1) result: success RFC 5769 IPv4 encoding result: success RFC 5769 message fingerprint test(2) result: success RFC 5769 IPv6 response short-term credentials and integrity test result: success    RFC 5769 NEGATIVE fingerprint test(2) result: success RFC 5769 IPv6 encoding result: success vagrant@precise64:/vagrant/stun/examples$

TURN测试

先安装screen

1 sudo apt-get install screen

这样我们就能在一个终端里运行多个窗口了,使用快捷键Ctrl+a+c新建一个窗口,通过执行命令

1 ./scripts/basic/relay.sh

把TURN服务器运行起来:

然后执行命令:

1 ./scripts/basic/udp_c2c_client.sh

把客户端跑起来,可以看到它在通过中转服务器自己给自己发数据:

通过Ctrl+a+n来切回服务器的窗口,观察到它的确在收发数据:

至此,说明一切完全正常。

Reference

http://www.cnblogs.com/Haijunzhu/p/3833350.html

http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html

https://code.google.com/p/rfc5766-turn-server/


总结

以上是生活随笔为你收集整理的搭建turn服务器的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。