Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

TURN とは

最終更新 Markdown で表示Agent セットアップ

TURN とは

TURN(Traversal Using Relays around NAT)は、Network Address Translator(NAT)やファイアウォールを通過し、ピアツーピア通信を助けるプロトコルです。STUN(Session Traversal Utilities for NAT)プロトコルの拡張で、RFC 8656 で定義されています。

TURN の使い方

HTTP プロトコルを使うときに Web ブラウザーや cURL を使うのと同様に、アプリケーションで TURN プロトコルを使うには、ツールまたはライブラリが必要です。

TURN の利用者の多くは、ブラウザー内のライブラリや、Pionwebrtc-rslibwebrtc など、WebRTC ライブラリの一部として使います。

アプリケーションから TURN を直接使うこともできます。Pion は Golang の TURN クライアントライブラリを提供しており、webrtc-rs は Rust で同様のライブラリを提供しています。

TURN を理解するうえで押さえる概念

  1. NAT(Network Address Translation): ルーターが複数のプライベート IP アドレスを 1 つのパブリック IP アドレスに対応付ける方式です。家庭用インターネットルーターがよく使い、同じネットワーク内の複数のコンピューターが 1 つのパブリック IP アドレスを共有できます。

  2. TURN サーバー: NAT の背後にいるクライアント間のトラフィックを中継するリレーサーバーです。Cloudflare Realtime TURN サービスは、TURN サーバーの一例です。

  3. TURN クライアント: TURN プロトコルを使い、TURN サーバー経由で通信するアプリケーションまたはデバイスです。これが皆さんのアプリケーションです。WebRTC API を使う Web アプリケーションでも、モバイルやデスクトップ上のネイティブアプリケーションでも構いません。

  4. Allocation(割り当て): TURN サーバーが allocation を作成すると、そのクライアント専用の IP とポートを予約します。

  5. Relayed Transport Address(中継用トランスポートアドレス): TURN サーバー上で予約された IP アドレスとポートです。インターネット上の他者は、このアドレスを使って TURN クライアントへデータを送れます。

TURN の仕組み

  1. TURN クライアントは、TURN サーバーへ Allocate リクエストを送信します。
  2. TURN サーバーは allocation を作成し、中継用トランスポートアドレスをクライアントに返します。
  3. クライアントは、この中継アドレスをピアに渡せます。
  4. ピアが中継アドレスへデータを送ると、TURN サーバーはそれをクライアントへ転送します。
  5. クライアントがピアへデータを送りたいときは、TURN サーバー経由で送り、サーバーがピアへ転送します。

TURN と VPN の違い

TURN の動きは VPN(Virtual Private Network)に似ています。ただし、TURN サーバーと VPN は目的も動作も異なります。

VPN は、デバイスからのすべてのインターネットトラフィックを暗号化し、VPN サーバー経由でルーティングして、プライバシー、セキュリティ、匿名性を高める汎用ツールです。ネットワーク層で動作し、すべてのインターネット利用に影響します。地理的な制限を回避したり、公衆 Wi-Fi 上の接続を保護したりする用途でもよく使われます。

TURN サーバーは、特定のアプリケーション、とくにリアルタイム通信向けの専用ツールです。アプリケーション層で動作し、利用するアプリケーションのトラフィックだけに影響します。ピア間の直接接続ができないときに、NAT やファイアウォールを通過するための中継として働きます。VPN はインターネット全体の速度に影響し、匿名性を提供します。TURN サーバーは、それを使う特定のアプリケーションの性能にだけ影響します。

TURN が役立つ理由

TURN は、NAT やファイアウォールの制限でピアツーピア通信が直接できない場面で、よく役立ちます。主な利点は次のとおりです。

  1. NAT トラバーサル: どちらも NAT の背後にいるピア同士の接続を確立できます。通常は難しいか、不可能なケースです。

  2. ファイアウォールの回避: ファイアウォールポリシーが厳しい環境でも、通常はブロックされる通信を可能にします。

  3. 安定した接続: 直接接続や NAT 支援の接続が失敗したときの、信頼できるフォールバックです。

  4. プライバシー: TURN サーバー経由でトラフィックを中継すると、通信当事者の実際の IP アドレスを互いに隠せます。

  5. VoIP とビデオ会議: Voice over IP(VoIP)やビデオ会議では、ネットワーク構成にかかわらず安定した接続を確保するために TURN が重要です。

  6. オンラインゲーム: 種類の異なる NAT の背後にいるプレイヤー同士のピアツーピア接続を、TURN が助けることがあります。

  7. IoT デバイス間の通信: Internet of Things(IoT)デバイスは、NAT やファイアウォールの背後にいるときに、TURN で通信できます。

役に立ちましたか?