転送量に気をつける。
映像や音声はすぐに最大値を利用してきて、2000kbpsとかもザラに使ってくるのであっとう言う間に1GBを超えることがある。
TURNサーバー自体が落ちないように気をつける。
繋がらないと同等になる。
認証について
TURNサーバーは認証が必須になる。Username/Credential はワンタイムで利用できるようにする。coturnはRDBやRedisなどのデータベースと連携ができるのでうまく組み合わせること。
転送モード
TURNは転送モードが三つあります。ファイアウォールのポリシーに応じてブラウザは最も制限の少ないトランスポートモードを選択します。
- TURN/UDP
- TURN/TCP
- TURN/TLS
TURN/UDP
UDP通信を許可していない企業が中にはある。なので、TCP443ポートを使った通信を使用した対策がある。繋がらない問題の大部分はこれで443を指定すれば大丈夫。対応させてしまえば、そのポートが潰されない限りは大丈夫。
MITM
たまにこれをやっているファイアウォールの場合があり繋がらない。これの場合は諦めるしかない。
Safari
Let's Encryptを利用したTURN-TLSを弾く問題がある。今後修正される予定だが。
TURN/TCP
coturnであれば、「listening-port」という設定項目にポート番号を設定することで待ち受けることが可能になります。
TURN/TLS(TURNS)
coturnであれば、「tls-listening-port」という設定項目にポート番号を設定することで待ち受けることが可能になります。
443ポートを使った通信です。
通信を暗号化することが目的というよりは、WebRTCトラフィックをHTTPSトラフィックに偽装して送信することでファイアウォールを通過することを目指します。(というか、DTLSで通信は暗号化はされています。)
「TURNサーバー」のOSS
基本的には、実績が十分な「coturn」を使うようにすると良いでしょう。
coturn
枯れているサーバーなので運用も難しくはない。ICEもできます。
TURN-TCP / TURN-TLS
ほとんどのWebRTCが繋がらない問題はこれを443に設定していないことが問題。SafariのTURN-TLSはLet's Encryptの証明書を弾くので注意。
pion/turn
ICEする場合は、Pion ICEを使います。
aioice
ICEもできます。
Node-turn
ICEもできます。
構築方法(cotrun)
coturnの起動コマンドのオプション
オプション | 説明 |
---|---|
-o | デーモン起動ON |
-c {設定ファイル} | 設定ファイルを読み込む |
-u | Long-term credentials user account |
-p | UDPとTCPのリスナーポート |
-L | relayサーバのリスナーIPアドレス。 |
-X | TURNサーバとprivate, publicのIPアドレスマッピング。サーバがNAT内であれば指定が必要。 |
構築後の単体テスト
自前でcoturnやなどでTURNサーバーを構築した人向けの方法です。「turnutils_uclient」を使います。
コマンド
オプション
オプション | 説明 |
---|---|
-t | clientとTURNサーバ間をTCPに(デフォルトはUDP) |
-p <ポート番号> | ポート番号指定 |
-u <ユーザー名> | STUN / TURNユーザー名 |
-w <password> | STUN / TURNユーザーパスワード |
この記事へのコメントはありません。