VoIP/WebRTC技術者のためのSTUN/TURN サーバー解説。その3. 「さくらのVPS」でつくるSTUN/TURN サーバー(セットアップ編)。
今回はSTUN/TURN サーバー解説の3回目です。前回(第2回)のインストール編は「TURNサーバー構築の目的」、「さくらVPSの紹介」、「事前のネットワーク設定」、「TURNサーバのオープンソフトウェアであるCOTURNのインストール」について説明しています。前回をまだ見てない方はそちらから見ることをオススメします。今回はCOTURNをインストールしていることを前提に、TURNサーバーをセットアップしていきます。また、前回同様、「さくらのVPS 」を利用して構築していきます。STUN/TURNについて、ぼんやりと知っているという方にはこの記事に沿って実際に構築してみることを今回も強くオススメします。実際に手を動かしてみると本当の理解が早いです。
目次
今回も以下の図のようなパケットを中継するTURNサーバーを構築すると仮定して話を進めていきます。
COTURNのセットアップ
1. /usr/local/etc/turnserver.conf の作成。
デフォルトのファイルをコピーして、turnserver.confを作成します。
# cp /usr/local/etc/turnserver.conf.default /usr/local/etc/turnserver.conf
2./usr/local/etc/turnserver.confを編集。
turnserver.confファイルについて、最低限度の編集箇所について説明します。内容を理解していただき、自分のTURN環境に合うように設定を変更してください。
編集箇所:
listening-port=3478
TURNのリスナーポートです。UDPおよびTCPの両方に適用されます。特に問題なければデフォルト値3478から基本的には変更する必要はありません。
tls-listening-port=5349
TURNのリスナーポートです。TLSに適用されます。特に問題なければこちらもデフォルト値5349から基本的には変更する必要はありません。
listening-ip=123.123.123.123 listening-ip=1234:5678:901:1234:567:890:123:45
リスナー用IPアドレスです。上記のように複数設定できます。用途としては上記のようにIPv4及びIPv6アドレスを設定して両アドレスをリッスンするといったことができます。
relay-ip=123.123.123.123
パケットをリレーするIPアドレスをセットします。
external-ip=123.123.123.123
外部からアクセスするIPアドレスをセットします。
realm=turn.callcenter-trend.com
自ドメイン、もしくはサブドメインをセットします。
cert=/etc/letsencrypt/live/turn.callcenter-trend.com/fullchain.pem pkey=/etc/letsencrypt/live/turn.callcenter-trend.com/privkey.pem
SSL証明書(Certificate)の置いてあるパスとファイル名を指定します。本設定はセキュア接続(SSL/TLS)する場合は必須となります。
事前に正式に証明書を取得する必要があります。大手認証局の発行しているSSL証明書は有料ですが、現在は無料のLet’s Encryptというサービスがあり、簡単に証明書を取得することができます。
Let’s Encrypt 公式Webサイト(https://letsencrypt.org/)
また、こちらの記事でLet’s Encryptを使用してSSL証明書を取得する手順を詳しく説明しています。
「Let’s Encryptで取得したSSL証明書をTomcatで使用する手順。CentOS」
以上でturnserver.confファイルの設定は終了です。
3. COTURN サービスの起動
以下のコマンドでCOTURNサービスが起動します。
# /usr/local/bin/turnserver -o -c /usr/local/etc/turnserver.conf
4. ログの確認。
CentOSの場合、デフォルトでは/var/log にあります。
5.接続ユーザーの追加
正しくCOTURNサービスが起動したら、このCOTURNサーバーにアクセスできるユーザーを追加します。追加方法はいくつかあるのですが、今回は簡単にコマンドで作成します。以下のコマンドで、ユーザー”testuser01″、接続パスワード”passwdtestuser01″で作成されます。
# turnadmin -a -u testuser01 -p passwdtestuser01 -r turn.callcenter-trend.com
6.ユーザーの確認
COTURNはデフォルトでは内部的にSQLite3が使用されています。作成したユーザはSQLite3のコマンドでSQLを実行することで確認できます。
# sqlite3 /usr/local/var/db/turndb "SELECT * FROM turnusers_lt"
以上でセットアップは完了です。上記で設定した接続情報で早速、TURNサーバーにアクセスしてみましょう!
TURNサーバーにうまく繋がらない時の対処方法
1.Wiresharkをインストールして問題を切り分ける。
困ったときのWiresharkですね。どこでパケットが止まっているか突き止めましょう。CentOSでは以下のコマンドでインストールできます。
# yum install wireshark
2.ファイアウォールで上記設定したポートが許可されているか確認する。
こちらも参考までにコマンド記載しておきます。
#firewall-cmd --add-port=3478/tcp --zone=public --permanent #firewall-cmd --add-port=3478/udp --zone=public --permanent #firewall-cmd --add-port=5349/tcp --zone=public --permanent #firewall-cmd --add-port=5349/udp --zone=public --permanent
追加後、リロードします。
#firewall-cmd --reload
いかがでしたでしょうか。TURNサーバーだけでなくICE技術はネット経由でのコミュニケーションに欠かせないVOIP技術となっています。WebRTCと関連して使用されることもあります。これを機会に深く勉強してみるのも良いかもしれませんね。
COTURN関連記事。
VoIP/WebRTC技術者のためのSTUN/TURN サーバー解説。その2. 「さくらのVPS」でつくるSTUN/TURN サーバー(インストール編)。>>
VoIP/WebRTC技術者のためのSTUN/TURN サーバー解説。その1. STUN/TURN サーバーとは?>>