EC2
初心者
サーバー構築
turn
coTurn

coTurnでEC2上にTURNサーバを作ってみた

More than 1 year has passed since last update.


1 概要

サーバ & AWS 初めましてな初心者がAWS上にSTUN/TURNサーバを構築することになりました。

ここでは、coTurnによるTURNサーバ構築をわかりやすい言葉で紹介します。


2 前提


2.1 TURNサーバって?

TURNサーバ周辺の簡単な説明は【初心者向け】STUN/TURNサーバをざっくり解説してみたをお読みください。


2.2 coTurnって何者?

coTurn: https://github.com/coturn/coturn

簡単にSTUN兼TURNサーバが構築できるOSS。


3 本題

coTurnを使ったTURNサーバ構築方法です。

TURNサーバにフォーカスして記述しますが、同時にSTUNサーバも構築されます。


3.1 EC2インスタンスの作成~設定


  • Amazon EC2 でubuntuのインスタンスを作成します。 


    • (ubuntuだとcoTurnのインストールが簡単です。)



  • 作成したインスタンスにssh接続します。

  • sudoコマンドを使えるようにします。


sh

sudo vi /etc/hosts

# 「127.0.1.1 ip-10-0-0-76」を追加します。(後半はインスタンスのプライベートIPアドレス)


3.2 coTurnのインストール


sh

# 依存ライブラリをインストール

sudo apt-get update && sudo apt-get install libssl-dev libevent-dev sqlite3 make -y

# coTurnのソースをダウンロード
wget -O turn.tar.gz http://turnserver.open-sys.org/downloads/v4.5.0.3/turnserver-4.5.0.3.tar.gz

# 解凍
tar -zxvf turn.tar.gz

# ビルド
cd turnserver-4.5.0.3
./configure
make && sudo make install



3.3 coTurn設定ファイルの編集


sh

# デフォルトのconfigファイルをコピー

sudo cp /usr/local/etc/turnserver.conf.default /usr/local/etc/turnserver.conf

# configファイルの編集
sudo vi /usr/local/etc/turnserver.conf


編集内容

(あくまで例です。詳しい説明はこちらを参考下さい。)


  • コメントアウトを外すもの


    • verbose

    • lt-cred-mech

    • no-tls

    • no-dtls



  • コメントアウトを外し、かつ内容も適宜変更するもの


    • userdb=/var/db/turndb

    • user=user1:pass1

    • realm=mycompany.org




3.4 coTurnを起動


sh

# configファイルを読み込んで起動する

sudo turnserver -o -c /usr/local/etc/turnserver.conf -u user1:pass1 -p 3478 -L 10.0.0.76 -X 0.0.0.0/10.0.0.76

オプション (詳しい説明はこちら)


  • -o: デーモン起動ON

  • -c: configファイルの指定

  • -u: Long-term credentials user account (configファイルに指定したものと同じ組み合わせを指定する)

  • -p: UDPとTCPのリスナーポート

  • -L: relayサーバのリスナーIPアドレス。今回はEC2のprivateIPを指定する。

  • -X: TURNサーバとprivate, publicのIPアドレスマッピング。サーバがNAT内であれば指定が必要。今回はEC2の/を指定する。

(補足)起動時オプションの多くはconfigファイル内でも指定ができる


4 coTurnの動作確認(おまけ)


4.1 インスタンスの外から動作確認する時の注意


  • セキュリティグループのインバウンドの設定を、動作確認の接続元のIPアドレスをTCP(もしくはUDP)で許可するように変更してください。


4.2 coTurnが提供するテストコマンド

同じインスタンス上で以下のテストコマンドを実行。

coTurnをインストールした他の環境からでも、テストコマンドで動作確認が取れるはず。


sh

turnutils_uclient -t -p 3478 -u 'user1' -w 'pass1' 10.0.0.76


オプション(詳しい説明はこちら

-t: TURNサーバへの通信にTCPを指定する(デフォルトはUDP)

-p: TURNサーバのポート番号

-u: STUN/TURNのユーザ名

-w: STUN/TURNのパスワード


4.3 Trickle ICE

ブラウザ上でSTUN, TURNが最低限の動作(接続ルートの候補としてIPアドレスが検出される)をしているか見ることができる


  • 使い方


    • 以下を入力


      • STUN or TURN URI: <インスタンスのグローバルIPアドレス>:3478?transport=tcp

      • TURN username: 設定したSTUN/TURNのユーザ名

      • TURN password: 設定したSTUN/TURNのパスワード



    • Add Serverボタンを押す(ついでにデフォルトのGoogleサーバを消してもOK)

    • Gather Candidatesボタンを押す

    • 指定したIPアドレスでtypeがrelay(TURNサーバ)、server reflexive(STUNサーバ)などが現れればOK




5. 参考文献