TURN(Traversal Using Relays around NAT)サーバーを利用すると、制限の厳しいネットワークでも信頼性の高いWebRTC接続が可能になります。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
TURN(Traversal Using Relays around NAT)サーバーとは、WebRTC接続を支援するウェブサーバーの一種であり、ファイアウォールやプライベートIPアドレスの使用によってリアルタイム通信(ビデオ通話や音声通話)が遮断されるのを防ぎます。名前が示す通り、TURNはNAT(ネットワークアドレス変換)を回避し、クライアント間の通信セッションが途中で途切れないようにする役割を果たします。
簡単に言えば、TURNサーバーは、ネットワーク設定が適切でない環境でも、ビデオ通話や音声通話が正常に動作するようにする仕組みです。
WebRTC接続を行う際、片方のデバイスがプライベートIPアドレスを使用している場合、TURNサーバーが必要になります。プライベートIPアドレスを持つデバイスは、NATを使用して他のデバイスに接続します。NATはパケットを再パッケージ化してプライベートIPアドレスに送信しますが、NATはWebRTCをはじめ多くのプロトコルと相性が良くありません。
たとえば、アリスがボブの家に車で向かいたいとします。しかし、二人の間の高速道路には通行止めの障害物があるため、アリスはそのまま進めません。そこで、アリスは脇道を使い、別のルートでボブの家へ到達します。この「脇道」の役割を果たすのがTURNサーバーです。TURNサーバーは、NATが避けて通れない障害である場合に、WebRTC接続のための代替ルートを提供します。
STUN(Session Traversal Utilities for NAT)サーバーは、WebRTC接続をサポートする別のタイプのサーバーです。これにより、2つのデバイスが互いのパブリックIPアドレスを検出し、直接接続を開始できます。しかし、STUNサーバーは厳格なセキュリティ対策をバイパスできないことがよくあります。このような場合は、代わりにTURNサーバーを使用することができます。
WebRTC(Web Real-Time Communications)は、APIを介して直接的なピアツーピア(P2P)のリアルタイム通信を確立することができるオープンソース技術です。WebRTCを利用すると、クライアントデバイスは、中央サーバーに依存するのではなく、互いにファイルをストリーミングすることができます(クライアントサーバーモデルを前提とするHLSやHDSのようなプロトコルとは対照的です)。また、WebRTCは、インターネットベースの電話やビデオ通話をサポートするVoice over Internet Protocol(VoIP)などの多くの通信プロトコルにも使用されるようになりました。
NAT(ネットワークアドレス変換)は、プライベートIPアドレスをパブリックIPアドレスにマッピングする技術です。最も一般的なのは、複数のプライベートIPアドレスを1つのパブリックIPアドレスにマッピングする手法です(IPアドレスは、デバイス間の接続を確立するために不可欠です)。
NATは、郵便システムで転送先住所を使う仕組みと似ています。郵便を出す人は、受領者の本当の住所を知らなくても、転送先住所に郵便を送ることができます。転送サービスが適切な住所に郵便を配送するからです。同様に、NATはパブリックIPアドレスをプライベートIPアドレスと照合し、パケットを正しい場所に転送します。
NATの最も一般的な用途の1つは、家庭のWi-Fiネットワークなどのローカルエリアネットワーク(LAN)内でのIPアドレスの割り当てです。利用者全員に十分なIPv4アドレスがないため、ルーターはネットワークに接続されたデバイスに動的なプライベートIPアドレスを割り当てます。これらのIPアドレスは、インターネット上の他のデバイスでも使用される可能性が高いため、混乱を避けるために、ルーターはNATを使用して、他の場所では複製されていない1つのパブリックIPアドレスに変更します(インターネットサービスプロバイダーが、これらのパブリックIPアドレスも動的に割り当てる場合があります)。
NATは、IPアドレスを非公開にするためのセキュリティ対策としても使用されます。デバイスは、ネットワークの外に(あるいはネットワーク内で)、真のIPアドレスを明らかにすることなく、NATを使用してパブリックIPアドレスをブロードキャストして他のデバイスに接続することができます。
問題は、転送先住所ではすべての種類の郵便(大型小包など)を適切に転送できるとは限らないのと同様に、一部のアプリケーション層プロトコルとNATとの相性が悪いことです。
TURNサーバーは、NATとファイアウォールを使用してIPアドレスを隠す、高度に制限されたネットワーク環境でも、接続性を確保するのに役立ちます。通常の接続が不可能で、STUNサーバーがそれらをサポートできない場合でも、リアルタイム通信が機能するようにします。TURNサーバーは、インターネットベースの電話サービスやチャットサービスの信頼性を向上させます。
Cloudflare Callsは、開発者がリアルタイムの音声、動画、データアプリケーションを構築できるサービスです。Cloudflare CallsにはグローバルTURNサーバーが含まれているため、高速で信頼性の高いリアルタイムアプリケーションを容易に構築することができます。CloudflareのTURNサービスの詳細については、開発者ドキュメントをご覧ください。