TURN サーバの設定
Unity Render Streaming でストリーミングが正しく動作しない場合、まずは トラブルに関する質問 を参照してください。 もしファイアウォールの問題であった場合は、ファイアウォールの設定を変更するか、 TURN サーバ を利用する必要があります。
TURN(Traversal Using Relay around NAT) とは、NAT やファイアウォールを超えて通信を行うための通信プロトコルです。TURN を利用するには、NAT の外側に TURN サーバ を設置する必要があります。
このドキュメントでは、Unity Render Streaming を TURN サーバと連携する方法について説明します。
インスタンスの設定
coturn は TURN サーバの OSS 実装の一つです。以下では GCP インスタンス上に coturn を起動する方法について記載しています。
apt
コマンドで coturn をインストールするため、インスタンスイメージには ubuntu-minimal-1604-xenial-v20190628 を利用しています。coturn がサポートしているディストリビューションであれば問題ありません。 coturn の詳細については、 coturn の ドキュメント を確認してください。
Firewall rules の設定
TURN サーバが利用するポートを公開する必要があるので、ファイアウォールの設定を追加します。
Protocol | PORT |
---|---|
TCP | 32355-65535, 3478-3479 |
UDP | 32355-65535, 3478-3479 |
coturn のインストール
ssh
で GCP インスタンスにログインします。
coturn
を以下のコマンドでインストールします。
sudo apt install coturn
ブート時にデーモンで coturn を起動するため、設定を変更します。
sudo vim /etc/default/coturn
以下の行を追加します。
TURNSERVER_ENABLED=1
次に、coturn の設定ファイルを編集します。
sudo vim /etc/turnserver.conf
以下の行のコメントを外して、各自の内容に応じて記述します。
# The TURN server IP address to be sent to external peers
external-ip=10.140.0.4
# Validate credentials
lt-cred-mech
# Designate username and password
user=username:password
# Realm settings
realm=yourcompany.com
# Log file settings
log-file=/var/tmp/turn.log
設定完了後、coturn サービスを再起動します。
sudo systemctl restart coturn
導通確認
coturn の設定を完了したら、TURN サーバの動作を確認するためログを監視します。
tail -f /var/tmp/turn_xxxx-xx-xx.log
webrtc の Trickle ICE サンプル を利用して TURN サーバへの接続を行います。以下のように設定して Add Server
ボタンを押します。
パラメーター | 例 |
---|---|
STUN or TURN URI | turn:xx.xx.xx.xx:3478?transport=tcp |
TURN username | username |
TURN password | password |
Gather candidates
ボタンを押すと、リストに通信経路候補が表示されます。TURN サーバ側にもログが出力されていることを確認してください。
ブラウザ側の変更
Web サーバを起動し、Web サイトにアクセスして ICE サーバに TURN サーバの設定を追加します。
Unity 側の変更
プロジェクト設定ウィンドウを開き、以下のように Render Streaming 設定に TURN サーバの URL を追加します。