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 庫文件。git

安裝完成後在 bin 目錄下生成六個可執行文件:github

  • 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 下的用戶才能登陸。web

注意必定要使用 root 權限配置,不然會配置失敗,可是尚未錯誤提示。sql

啓動server

配置完用戶後就能夠啓動 turnserver 了,第一次啓動前須要一個配置文件,這是使用模板生成,而後就能夠啓動 turnserver 了。shell

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

相關文章
相關標籤/搜索