WebRTC
約 4 分で読めます
最終更新: 2026-02-14
WebRTC とは
WebRTC (Web Real-Time Communication) とは、ブラウザ間でプラグインなしにリアルタイムの音声・映像・データ通信を実現する Web 標準技術です。Google Meet、Discord、Facebook Messenger などのビデオ通話機能は WebRTC を基盤としています。
WebRTC は通信の効率化のため、ブラウザ同士が直接接続する P2P (Peer-to-Peer) 方式を採用しています。この直接接続を確立するために、STUN/TURN サーバーを使って自分のIP アドレスを相手に通知する仕組みがあり、これがプライバシー上の問題を引き起こします。
STUN/TURN サーバーの役割
WebRTC の P2P 接続を確立するには、まず自分のネットワーク上の位置を把握する必要があります。ここで STUN と TURN という 2 種類のサーバーが使われます。
stun.l.google.com:19302 を無料で公開しており、多くの WebRTC アプリケーションがこれを利用している。プライバシーの観点で問題なのは、STUN サーバーへの問い合わせが VPN トンネルを経由せずに行われる場合があることです。この場合、VPN で隠しているはずの実際の IP アドレスが STUN サーバーに送信され、JavaScript 経由で取得可能になります。
ICE Candidate と IP 漏洩の仕組み
WebRTC は接続経路を確立するために ICE (Interactive Connectivity Establishment) というフレームワークを使用します。ICE は複数の接続候補 (ICE Candidate) を収集し、最適な経路を選択します。
ICE Candidate の収集プロセスでは、以下の 3 種類の候補が生成されます。
- Host Candidate: デバイスのネットワークインターフェースから直接取得したローカル IP アドレス (
192.168.x.xや10.x.x.x)。VPN 接続中でも、物理 NIC の IP アドレスが含まれる場合がある - Server Reflexive Candidate (srflx): STUN サーバーから返されたパブリック IP アドレス。VPN を経由しない経路で STUN に問い合わせた場合、VPN の外側の実 IP が露出する
- Relay Candidate: TURN サーバーのアドレス。プライバシーリスクは低い
悪意のある Web サイトは、RTCPeerConnection オブジェクトを生成して ICE Candidate の収集を開始するだけで、実際に通話を行わなくてもこれらの IP アドレスを JavaScript で取得できます。わずか数行のコードで実行可能なため、DNS リークと並ぶ VPN 利用時の代表的な情報漏洩経路となっています。
ブラウザごとの対策方法
- Firefox: アドレスバーに
about:configと入力し、media.peerconnection.enabledをfalseに設定すると WebRTC を完全に無効化できます。より細かい制御として、media.peerconnection.ice.default_address_onlyをtrueにすると、デフォルトのネットワークインターフェースの IP のみを公開し、他のインターフェース (VPN アダプタ等) の IP 漏洩を防げます。 - Chrome: 設定画面からは無効化できません。「WebRTC Leak Prevent」などの拡張機能を使い、ICE Candidate の収集ポリシーを
disable_non_proxied_udpに制限します。これにより、プロキシを経由しない UDP 通信が遮断され、実 IP の漏洩を防止できます。 - Safari: 「設定」→「詳細」→「WebRTC」で、ICE Candidate の制限オプションを有効にできます。Safari はデフォルトで WebRTC の IP 漏洩に対して比較的保守的な設定になっています。
- Brave: デフォルトで WebRTC の IP 漏洩を防止する設定が有効になっています。「設定」→「プライバシーとセキュリティ」→「WebRTC IP ハンドリングポリシー」で確認できます。
VPN キルスイッチを有効にしていても、WebRTC 漏洩は防げない場合があります。ブラウザ側での対策が必須です。
WebRTC の正当な用途
WebRTC はプライバシーリスクが注目されがちですが、プラグインなしでリアルタイム通信を実現する強力な技術です。主な用途を理解しておくと、無効化した場合の影響を判断しやすくなります。
- ビデオ会議: Google Meet、Zoom (Web 版)、Microsoft Teams (Web 版) はすべて WebRTC を使用。無効化するとブラウザからの参加ができなくなる
- 音声通話: Discord の Web 版、Facebook Messenger の通話機能など
- P2P ファイル共有: WebTorrent やブラウザ間の直接ファイル転送サービス
- リアルタイムゲーム: ブラウザベースのマルチプレイヤーゲームで低遅延通信に使用
- ライブストリーミング: 超低遅延 (サブ秒) のライブ配信に WebRTC が採用されるケースが増えている
ビデオ会議を頻繁に使う場合は、WebRTC を完全に無効化するのではなく、VPN プロバイダーが提供する WebRTC 漏洩防止機能や、ブラウザの ICE Candidate 制限設定を活用するのが現実的です。
WebRTC 漏洩の確認方法
自分のブラウザで WebRTC 漏洩が発生しているかは、専用のテストサイトで簡単に確認できます。VPN に接続した状態でテストを実行し、VPN サーバーの IP アドレス以外の IP が表示されていれば漏洩しています。
確認手順は以下のとおりです。
- VPN に接続する
- WebRTC リークテストサイトにアクセスする
- 表示された IP アドレスを確認する
- VPN サーバーの IP 以外のアドレスが表示されていれば漏洩あり
ブラウザフィンガープリントのテストと合わせて定期的に確認することで、プライバシー設定の有効性を検証できます。
よくある誤解
- VPN を使っていれば WebRTC の IP 漏洩は起きない
- WebRTC は VPN トンネルを迂回してネットワークインターフェースに直接アクセスするため、VPN だけでは防げません。ブラウザ側で WebRTC を無効化するか、漏洩防止の拡張機能が必要です。
- WebRTC を無効にするとインターネットが使えなくなる
- WebRTC を無効にしても、通常の Web 閲覧、動画視聴、ダウンロードなどには影響しません。影響があるのはブラウザ内のビデオ通話や P2P ファイル共有など、リアルタイム通信を使う機能だけです。