Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
77
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
77
Help us understand the problem. What are the problem?