プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • WebRTC
  • 【WebRTC】「TURNサーバー」構築のポイント、転送モード、テスト方法
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【WebRTC】「TURNサーバー」構築のポイント、転送モード、テスト方法

12.26

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

転送量に気をつける。

映像や音声はすぐに最大値を利用してきて、2000kbpsとかもザラに使ってくるのであっとう言う間に1GBを超えることがある。

TURNサーバー自体が落ちないように気をつける。

繋がらないと同等になる。

認証について

TURNサーバーは認証が必須になる。Username/Credential はワンタイムで利用できるようにする。coturnはRDBやRedisなどのデータベースと連携ができるのでうまく組み合わせること。

転送モード

TURNは転送モードが三つあります。ファイアウォールのポリシーに応じてブラウザは最も制限の少ないトランスポートモードを選択します。

  • TURN/UDP
  • TURN/TCP
  • TURN/TLS

TURN/UDP

1
turn:<host>:<port>?transport=udp

UDP通信を許可していない企業が中にはある。なので、TCP443ポートを使った通信を使用した対策がある。繋がらない問題の大部分はこれで443を指定すれば大丈夫。対応させてしまえば、そのポートが潰されない限りは大丈夫。

MITM

たまにこれをやっているファイアウォールの場合があり繋がらない。これの場合は諦めるしかない。

Safari

Let's Encryptを利用したTURN-TLSを弾く問題がある。今後修正される予定だが。

TURN/TCP

coturnであれば、「listening-port」という設定項目にポート番号を設定することで待ち受けることが可能になります。

1
turn:<host>:<port>?transport=tcp

TURN/TLS(TURNS)

coturnであれば、「tls-listening-port」という設定項目にポート番号を設定することで待ち受けることが可能になります。

1
turns:<host>:<port>?transport=tcp

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)

【WebRTC】「coTurn」の構築手順1

【WebRTC】「coTurn」の構築手順2

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」を使います。

コマンド

1
turnutils_uclient <オプション> turnサーバーのIPアドレス

オプション

オプション 説明
-t clientとTURNサーバ間をTCPに(デフォルトはUDP)
-p <ポート番号> ポート番号指定
-u <ユーザー名> STUN / TURNユーザー名
-w <password> STUN / TURNユーザーパスワード

 

スポンサーリンク
  • 2021 12.26
  • miyabisan2
  • コメントを書く
  • WebRTC
  • Tweets Twitter
  • LINEで送る

関連記事

  1. 2021 12.18

    【WebRTC】概要、歴史、API、プロトコル、利用シーン、繋がらない問題、プラットフォーム

  2. 2021 12.31

    【WebRTC】「coturn」の設定内容

  3. 2021 12.28

    【WebRTC】「coTurn」の構築手順1

  4. 2021 12.28

    【WebRTC】「coTurn」の構築手順2

  5. 2021 12.22

    【WebRTC】「RTCPeerConnection」、デバッグ方法について

  6. 2021 12.19

    【WebRTC】「シグナリングサーバ」、「SDP」について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【WebRTC】「SFU」の仕組み、Simulcast…

【TypeScript】「ESlint」の初期設定コマ…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • API
  • AWS
  • C++
  • CSS
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Git
  • GitLab
  • GraphQL
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • WebRTC
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー