zoukankan      html  css  js  c++  java
  • STUN/TURN服务器搭建

    STUN/TURN服务器搭建

    编译安装

    1. 编译安装 OpenSSL;
    sudo apt-get install libssl-dev
    
    1. 编译安装 libevent 最新版;
    wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
    tar xvfz libevent-2.0.21-stable.tar.gz
    cd libevent-2.0.21-stable
    ./configure
    make
    sudo make install
    
    1. coturn 可以选择使用多种数据库,这里使用的是 SQLite ,使用命令sudo apt-get install sqlite (or sqlite3) 和 sudo apt-get install libsqlite3-dev (or sqlite3-dev) 安装;
    2. 编译coturn;
      下载coturn
    tar xvfz turnserver-<...>.tar.gz
    ./configure
    make
    sudo make install
    

    执行 ./configure 命令时没有使用 --prefix=/opt 参数,因为 OpenSSL 是通过 apt-get 安装在默认位置,如果安装到其他位置 libevent 会找不到 OpenSSL 库文件。

    安装完成后在 bin 目录下生成六个可执行文件:

    • turnserver - STUN/TURN 服务器
    • turnadmin - 用于配置、管理账户
    • turnutils_stunclient - 用于测试 STUN 服务
    • turnutils_uclient 用于测试 TURN 服务,模拟多个UDP、TCP、TLS 或 DTLS 类型的客户端
    • turnutils_peer
    • turnutils_rfc5769check

    配置使用

    添加用户

    $ sudo turnadmin -a -u you_name -p you_password -r you_realm
    

    这里默认使用了 SQLite 数据库,其中 -a 表示添加一个 long-term 用户,-u <user> 为用户名,-p <password> 为密码,-r <realm> 为该用户所属的 Realm。在启动 turnserver 时需要指定 Realm ,只有该 Realm 下的用户才能登录。

    注意一定要使用 root 权限配置,否则会配置失败,但是还没有错误提示。

    启动server

    配置完用户后就可以启动 turnserver 了,第一次启动前需要一个配置文件,这是使用模板生成,然后就可以启动 turnserver 了。

    sudo cp /usr/local/etc/turnserver.conf.default /usr/local/etc/turnserver.conf
    sudo turnserver -a -f -v -r lynky
    

    其中 -a 表示使用 long-term 机制, -r 为指定的 Realm ,只有该 Realm 下的用户可以使用服务器。

    测试

    可以使用 Trickle ICE 测试

    STUN

    使用下面的命令即可测试 STUN 服务使用可用,唯一此参数是 STUN 服务器的 IP地址或域名。

    turnutils_stunclient 132.232.100.103
    

    TURN

    使用下面的命令即可测试 TURN 服务使用可用,值得注意的是必须使用 turnserver 启动时指定 Realm 下的用户。

    turnutils_uclient -u lynky -w lynky123 132.232.100.103
    

    开机启动

    修改/etc/turnserver.conf

    listening-ip=127.0.0.1
    listening-ip=172.16.0.99    # 内网ip
    external-ip=221.208.117.45  # 公网ip,如果服务器在NAT后需要指定该参数
    fingerprint
    lt-cred-mech
    realm=<you_realm_name>
    

    添加/etc/systemd/system/turnserver.service

    [Unit]
    Description=coturn
    Documentation=man:coturn(1) man:turnadmin(1) man:turnserver(1)
    After=syslog.target network.target
    
    [Service]
    Type=forking
    PIDFile=/var/run/turnserver.pid
    ExecStart=/usr/local/bin/turnserver --daemon --pidfile /var/run/turnserver.pid -c /etc/turnserver.conf
    ExecStopPost=/usr/bin/rm -f /var/run/turnserver.pid
    Restart=on-abort
    
    LimitCORE=infinity
    LimitNOFILE=999999
    LimitNPROC=60000
    LimitRTPRIO=infinity
    LimitRTTIME=7000000
    CPUSchedulingPolicy=other
    

    然后执行以下命令

    # 使服务自动启动
    sudo systemctl enable turnserver.service
    # 启动服务
    sudo systemctl start turnserver
    # 停止服务
    sudo systemctl stop turnserver
    

    参考

    [1] WebRTC下的网络连接: STUN, TURN, ICE, TCP
    [2] 自己动手搭建 WebRTC TURN&STUN 服务器
    [3] CoturnConfig

  • 相关阅读:
    败家MM
    Lucene.Net
    罗氏制药事件
    关于request编码的问题
    昨天做了个站内全文搜索
    有时间研究 ror框架,ProMesh.NET: 开源的.net MVC框架
    DotLucene搜索引擎Demo之:创建索引
    超低密度SiO2气凝胶的制备及成型研究
    使用System.out.print/prilntln() 输出时存在的问题
    对C++对象实例化的测试
  • 原文地址:https://www.cnblogs.com/itshun/p/11605449.html
Copyright © 2011-2022 走看看