当前位置:首页 > CN2资讯 > 正文内容

Stun服务器 java stun服务器 公共

3天前CN2资讯

目录:

一、简介

二、安装

三、配置与运行

四、运行检测

五、答疑环节

 

一、简介

本文通过在服务器上安装coturn这个软件,实现搭建STUN服务器和TURN服务器。

coturn 简介:是一个免费的开源的 TURN/STUN 服务器。coturn 服务器完整的实现了 STUN/TURN/ICE 协议,支持 P2P 穿透防火墙。

 

 

STUN 服务器用于检测NAT类型。

TURN 服务器是在点对点失败后用于通信中继。

 

coturn的Github源码:

https://github.com/coturn/coturn

 

coturn的wiki使用说明:

https://github.com/coturn/coturn/wiki

 

 

Q:

stun服务器和turn服务器在部署步骤上,有什么区别?

 

A:

因为TURN是STUN的扩展,所以TURN服务器可以当作STUN服务器来用。

在软件配置上没有区别。

在硬件配置上,stun服务器需要1台服务器上有2个公网IP,turn服务器只需要有1个公网IP。

所以,如果你想:

只配置stun服务器:按照本文步骤来,还需要有1台用2个公网IP的服务器。

只配置turn服务器:按照本文步骤来。

1台服务器同时配置stun和turn服务器:按照本文步骤来,还需要有1台用2个公网IP的服务器。

 

 

二、安装

安装过程分为2部分

  • 镜像不带有coturn的源,此处以ubuntu14.04 LTS 64位为例
  • 镜像自带有coturn的源(推荐使用,这个比较方便),此处以ubuntu16.04 LTS 64位为例
  •  

    1. 镜像不带有coturn的源,此处以ubuntu14.04 LTS 64位为例

    1.安装相关环境

      

    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 sudo apt-get install git sudo apt-get install make

     

     

    2.下载并安装相关代码

    git clone https://github.com/coturn/coturn

    cd coturn/

    ./configure

    make

    sudo make install

    看到下图,就说明已经安装好了,这个是一些说明事项,如果想要将其设置成守护进程,可以看看

     

     

     

     

     

     

    2. 镜像带有coturn的源,此处以ubuntu16.04 LTS 64位为例

    输入apt-get install coturn

     

     

    三、配置与运行

    stun服务器和turn服务器的默认端口都是3478。

    stun服务器需要一台服务器,并且服务器上绑定有2个公网IP(如果只有1个公网IP,会出现NAT类型检测不准确的情况!)。

    turn服务器需要一台服务器,并且服务器上绑定有1个公网IP。

    stun服务器搭建:

    stun服务器需要一台服务器,并且服务器上绑定有2个公网IP。

    性能要求应该不高,毕竟一个用户创建一个通话请求,只需要与stun服务器沟通一次,此后不再沟通,而沟通一次只需要发几个数据包验证能否通信。

     

    现在有2种解决方案:

    1.用别人现成的stun服务器(推荐使用)

    2.自己搭一个stun服务器(2个公网IP的资金花销太大,而换来的只是一个NAT类型检测的功能,性价比不高,不推荐使用)

     

    1.用别人现成的stun服务器

    以下三个亲测可用:

    stun.ekiga.net

    stun.schlund.de

    stun.voxgratia.org

     

    怎么测试是否可用呢?

    搜索NAT类型检测工具,然后下载

     

     

    再找几个可用的服务器

     

     

     

     

    框框里填入服务器地址

    这个是可用的

     

     

     

     

     

     

    这个是用不了的

     

     

     

     

     

     

    2.自己搭一个stun服务器

    硬件方面,腾讯云和阿里云有个叫弹性网卡的技术可以让一台服务器绑定2个ip,如果服务器只有1个IP,会出现NAT类型检测不准确的情况!

     

    软件方面,服务器安装了coturn后,既是stun服务器,也是turn服务器,所以stun服务器的配置步骤与turn服务器的配置步骤是一样的。

     

     

    turn服务器搭建:

    coturn 支持三种配置:命令行、conf文件和数据库(据网上说是有数据库这种方式,但所有的例子都是前两种,所以我也不知道怎么用数据库去配置)。

     

    数据库支持sqlite,mysql,postgresql,MongoDB,redis。这里的数据库指的应该是存用户信息的数据库,而不是配置coturn用的数据库。

     

    STUN 定义了两种验证方式:Long-Term Credential 和 Short-Term Credential 。但是对于 WebRTC 而言,仅支持 Long-Term Credential。

     

     

     

     

    本文以命令行举例:

     

    如果你是只用来做turn服务器:

    turnserver -o -v -f -a -m 2 --max-bps=100000 --min-port=32355 --max-port=65535 --user=phz:1 -r phzled.cn -L your.ip

     

     

    如果你既当作stun服务器,又当作turn服务器(因为stun需要双公网ip,所以要把-L参数变成-X参数):

     turnserver -o -f -v -a -m 2 --max-bps=100000 --min-port=32355 --max-port=65535 --user=phz:1 -r phzled.cn -X <public ip/ private ip> -X <public ip/ private ip>

     

     

     

     

     

    部分参数说明:

    -o 以守护进程模式运行(后台运行)

    -v 日志会以“适度详细”的程度来记录

    -f  增加指纹机制。

    -a 长期验证机制

    -m 以x个进程来处理中继请求

    --max-bps 带宽

    --min-port   起始用的最小端口

    --max-port   最大端口号

    --user=帐号:密码    (随便写啥都行,记得住就行,turn服务的用户验证机制要用)

    -r  领域(随便写啥都行)。如果turn服务器没有使用任何数据库/命令行/conf文件进行配置,就需要加这个选项,并且要配合long-term  credentials(-a选项)使用

    -L 监听IP(turn服务器的ip)这个ip是你ifconfig查到的ip,不是你的公网ip

    -X   后面加 public ip/ private ip       多IP情况下使用,有几个ip就用几次

     

     

     

    注意:turn服务器是需要有用户验证机制的,由账户,密码,领域三部分构成一个完整的账户。

    看上图,如果想要在代码中使用turn服务器,需要输入正确的账户和密码,才可以正常使用turn服务器,而领域是给turn服务器使用的,不需要输入。

    所以,如果想以命令行的方式配置turn服务器,--user  -r  -a 这三个选项必不可少。

     

    如果想更详细的了解,请自行查阅wiki使用说明:

    https://github.com/coturn/coturn/wiki

     

    或是使用man手册查看:

    man turnserver

     

    命令行运行后会有以下信息,信息很多,大部分用不到,记住日志文件的位置信息就好,一般会放在/var/log下,以turn+进程号+日期命名。

     

     

     

     

    四、运行检测

    检测网址

    https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

     

     

    如果想检测stun服务器,只用填写你的公网IP

     

     

     

    如果想检测turn服务器,就填写你的公网IP,还有当时配置时填写的用户名和密码,因为turn是需要认证的,(--user选项填的那个信息)

     

     

     

     

    填好相关信息后,点击按钮,进行验证

     

     

     

     

    如果想要设置成开机自启动

    写一个脚本,将你的脚本复制到 /etc/init.d目录下

    脚本开头要加这几行字

     

     

    ### BEGIN INIT INFO

    # Provides:          scriptname

    # Required-Start:    $remote_fs $syslog

    # Required-Stop:     $remote_fs $syslog

    # Default-Start:     2 3 4 5

    # Default-Stop:      0 1 6

    # Short-Description: Start daemon at boot time

    # Description:       Enable service provided by daemon.

    ### END INIT INFO

     

     

    就像这样

     

     

     

     

    然后设置脚本文件的权限(这里假设脚本名字为test)

    sudo chmod 755 /etc/init.d/test

     

    将脚本设置为启动脚本

    sudo update-rc.d test defaults 95

    注:其中数字95是脚本启动的顺序号,按照自己的需要相应修改即可。在你有多个启动脚本,而它们之间又有先后启动的依赖关系时你就知道这个数字的具体作用了。

     

    卸载启动脚本的方法:

    sudo update-rc.d -f test remove

    五、答疑环节

     

    Q1:

    我的服务器成功运行后,在检测用的网址上检测不到。

     

    A1:

    可以看看是不是因为这2个原因:

    1.-L选项的ip地址需要填的是ifconfig查到的ip地址

     

     

     

     

     

     

    2.检查服务器的安全策略,如果是腾讯云或者阿里云,查看一下安全组的端口是否开放

    stun服务器和turn服务器的默认端口都是3478。

     

    以腾讯云为例,把端口打开

     

    Q2:

    怎么实现在ubuntu上配置双网卡双ip?

     

    A2:

    https://cloud.tencent.com/developer/article/1472051

     

    有问题可以留言,我会尽力回答。

    如果写的不好,欢迎任何批评指正,我都会虚心接受的!

    如果写的还行,麻烦赞一下,让我知道我写的东西帮到了别人^_^

      你可能想看:

      扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/20979.html

      分享给朋友:

      “Stun服务器 java stun服务器 公共” 的相关文章

      cn1与cn2:创新的双子星,引领未来科技发展

      在当今快速发展的科技行业中,创新始终是推动进步的核心动力。而对于那些致力于技术突破的企业和开发者来说,cn1与cn2无疑是最引人注目的两大解决方案。作为各自领域的佼佼者,cn1与cn2以其独特的优势和技术实力,正在重新定义行业的未来发展方向。cn1:创新理念的先驱者我们来了解一下cn1。作为一款基于...

      SSD测速全指南:高效评估固态硬盘性能的必备工具与技巧

      SSD测速的整体概述 在日常使用中,SSD(固态硬盘)作为一种新兴存储设备,其重要性逐渐提升。与传统的机械硬盘相比,SSD提供更快的读写速度和更好的性能体验。然而,SSD的表现并不是一成不变的,针对其性能的评估便成为了一个不可或缺的环节。今后我将带大家深入了解SSD测速的基本情况,帮助大家更好地理解...

      PVE环境下是否需要设置路由器?轻松拷贝文件的最佳实践

      PVE概述 Proxmox Virtual Environment(PVE)是一个开源的虚拟化管理平台,集成了KVM和LXC技术。简单来说,它允许用户在一台物理服务器上创建和管理多个虚拟机和容器。使用PVE让你轻松地部署、监控和管理自己的虚拟化环境,不论是用于开发、测试,还是生产环境。PVE提供了一...

      BuyVM色情网站托管服务解析 - 提升成人内容运营安全与效率

      什么是BuyVM色情服务 当我提到BuyVM的时候,可能很多人对这个名字还不太熟悉。简单来说,BuyVM是一家提供虚拟专用服务器(VPS)和网站托管服务的公司,专注于各种类型的内容,包括成人色情内容。它的历史可以追溯到多个年份前,BuyVM在业内逐渐赢得了声誉,成为不少成人网站的首选托管平台。以其可...

      REST教程:掌握RESTful接口设计与开发最佳实践

      REST(Representational State Transfer)是一种架构风格,广泛应用于网络服务的设计。它强调通过标准的HTTP协议来实现资源的操作,设计简约而高效。在我学习RESTful接口的过程中,发现其核心特性尤其重要,包括无状态性、资源导向和统一接口等。这些特性不仅让开发变得更加...

      RackNerd在纽约的数据中心服务与优势

      RackNerd在纽约的数据中心的服务确实引人关注。从基础服务到多样化的产品,RackNerd为各类客户提供了丰富的选择。我对于他们的虚拟主机和独立服务器十分赞赏。这些服务不仅安全可靠,而且具有灵活的配置选项,满足了各种不同需求的用户。对于初创企业或者需要特别高可用性的业务,选择RackNerd无疑...