LoginSignup
95
86

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-09-13

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. 参考文献

95
86
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
95
86