WebRTCリークテスト

WebRTCは、ブラウザーが通常は送らないアドレスをWebサイトに渡すことがあります。VPNの背後にある本当のアドレスも例外ではありません。このテストはCloudflareとGoogleが運用する3つのSTUNサーバーに尋ね、返ってきたすべてのアドレスとそれぞれの種類を示して、Webサイトにすでに見えているアドレスと比較します。テストできないことがあれば、緑のチェックマークを出す代わりに、そう伝えます。

CloudflareとGoogleのSTUNを使い、ブラウザー上で実行 · 何も保存しません · 候補の種類はRFC 8445に準拠

VPNをオフにして1回、オンにして1回実行してください。その違いが答えです。

ブラウザーが、CloudflareとGoogleが運用する3つのSTUNサーバーに、どのアドレスが見えるかを尋ねます。WebRTCが見つけたアドレスが当サイトに送られることはありません。

そもそもWebサイトに見えるものIPv4IPv6接続を確認中…
WebRTCが示したすべてのアドレス
  1. WebRTCが示すアドレスは、STUNサーバーが応答するたびに、1つずつ1行でここに表示されます。

WebRTCが見つけたアドレスが当サイトに送られることはありません。ビデオ通話と同じように、ブラウザー自身がSTUNサーバーに尋ねます。Webサイトに何が見えるかを示すため、ページはipify.orgと当サイトのサーバーに、あなたのアドレスとそのネットワークを問い合わせます。DNSリークテストと同じ仕組みです。

WebRTCリーク(WebRTC漏洩)とは何ですか?

WebRTCは、ビデオ通話を支えるブラウザーの機能です。2人を直接つなぐため、お使いのデバイスに到達できるすべてのアドレスを集めてページに提示します。そこには、ブラウザーが通常のリクエストでは決して送らないアドレスも含まれます。

この収集はICE候補の収集と呼ばれ、RFC 8445で規定されています。ブラウザーはまず自分のネットワークインターフェースにあるアドレスを列挙し、次にSTUNサーバーに「私はどのアドレスから来ているように見えますか?」と尋ねて、その答えも加えます。インターネット上のどのページでも、数行のJavaScriptでこれを開始し、届いた候補をすべて読み取れます。許可を求める画面は出ません。通話は許可なしで成立しなければならないため、それが設計なのです。

それがリークになるのは、そのアドレスのどれかが、あなたが隠していたものである場合です。VPNはブラウザーのリクエストが通る経路を変えますが、WebRTCはOSにすべてのインターフェースについて尋ねることができます。そのため、物理的な接続がまだ有効なデバイスでは、VPNのアドレスと並んで本当のアドレスが現れることがあります。何かが壊れたわけではありません。この機能は、設計どおりに動いているだけです。

どのページでも開始できること1回の収集を順に追う

お使いのデバイスインターネットルーター(NAT)ページのスクリプトお使いのブラウザーSTUNサーバーstun.cloudflare.comnew RTCPeerConnection()許可の確認なしすべてのネットワークインターフェースを列挙192.168.1.20 → 8b7f4e2a-….local私はどのアドレスから来ているように見えますか?192.168.1.20:54400203.0.113.7:54400203.0.113.7:54400見えたアドレスすべての候補を、届いた順にonicecandidateお使いのデバイスインターネットページのスクリプトお使いのブラウザーSTUNサーバーnew RTCPeerConnection()許可の確認なしすべてのネットワークインターフェースを列挙192.168.1.20 → 8b7f4e2a-….local私はどのアドレスから来ているように見えますか?192.168.1.20203.0.113.7203.0.113.7:54400見えたアドレスすべての候補を、届いた順にonicecandidateルーター(NAT)

スクリプト全体

const pc = new RTCPeerConnection({
  iceServers: [{ urls: "stun:stun.cloudflare.com:3478" }],
});
pc.createDataChannel("");
pc.onicecandidate = (e) => e.candidate && console.log(e.candidate.candidate);
await pc.setLocalDescription(await pc.createOffer());

出力された内容

candidate:3442447574 1 udp 2122260223 8b7f4e2a-5c1d-4e6f-9a0b-3d2c1e0f4a5b.local 54400 typ host generation 0candidate:1467250027 1 udp 1686052607 203.0.113.7 54400 typ srflx raddr 0.0.0.0 rport 9 generation 0

各行の意味

  • hostこのデバイス上8b7f4e2a-5c1d-4e6f-9a0b-3d2c1e0f4a5b.localブラウザーがマスク
  • srflxSTUNサーバーから見たアドレス203.0.113.7インターネットでルーティング可能
家庭の接続での1回の収集で、アドレスはドキュメント用のものです。プライベートアドレスがそのままの形でブラウザーの外に出ることはありません。STUNサーバーに見えるのはデバイスではなくルーターのパブリック側で、どちらの答えも、尋ねたスクリプトに渡ります。
WebRTCリークテストの結果画面:すべてのICE候補を、その種類、アドレスの性質、判定とともに一覧表示した例WebRTCリークテストの結果画面:すべてのICE候補を、その種類、アドレスの性質、判定とともに一覧表示した例判定リーク、リークなし、または正直に「テストできず」を、その理由とともに示します。すべてのアドレス候補の種類とともに表示します。ホスト候補とサーバーリフレクシブ候補では、意味が違うからです。アドレスの種類プライベート、キャリアグレードNAT、トンネル、ルーティング可能。リークになりうるのは、ルーティング可能なアドレスだけです。サーバーSTUNサーバーごとに1行です。応答しなかったサーバーは、実行されなかったテストです。Webサイトに見えるものブラウザーがそもそも送っているアドレスで、WebRTCのアドレスはこれと比較します。
テストの実行例です。各STUNサーバーの応答、WebRTCが明かしたすべてのアドレス、その種類、そしてそれがWebサイトにすでに見えているものかどうかを示しています。番号を選ぶと、各部分に何が表示されているかを確認できます。

WebRTCリークを確認するには?

上のテストを開始してください。3つのSTUNサーバーから候補を集め、各アドレスの種類を判断し、ルーティング可能なものをWebサイトにすでに見えているアドレスと比較します。

ありうる結果は、2つではなく3つです。リークなしは、WebRTCが示したルーティング可能なアドレスがどれも、サイトがすでに持っているものだという意味です。リークは、少なくとも1つがそうではない、またはデバイス自体のアドレスが直接提示されたという意味です。テストできずは、WebRTCがオフかブロックされているか、どのSTUNサーバーも応答しなかったという意味で、ほとんどのツールがこっそり合格に変えてしまう結果です。

VPNを使っているなら、2回実行してください。1回目はVPNをオフにして通常のアドレスを確認し、2回目はオンにして実行します。重要なのは2回目で、2回の違いが答えです。ページは最初の結果を保存するので、何も書き留めずに比較できます。

結果は2つではなく3つそれぞれの意味

  1. リークなし

    WebRTCが示したルーティング可能なアドレスは、どれもWebサイトがすでに持っているものです。

    WebRTCが示したもの

    • 198.51.100.23STUNサーバーから見たアドレスWebサイトにすでに見えている
    • 8b7f4e2a-….localこのデバイス上ブラウザーがマスク

    Webサイトに見えるもの

    198.51.100.23
  2. リーク

    Webサイトがすでに持っているものではないアドレスが少なくとも1つあるか、デバイス自体のアドレスが直接提示されました。

    WebRTCが示したもの

    • 198.51.100.23STUNサーバーから見たアドレスWebサイトにすでに見えている
    • 2001:db8:4a1f:7c00::1cこのデバイス上Webサイトには見えていない

    Webサイトに見えるもの

    198.51.100.23
  3. テストできず

    WebRTCがオフかブロックされているか、どのSTUNサーバーも応答しませんでした。何も測定されていません。

    stun.cloudflare.com応答なし

    stun.l.google.com応答なし

    ほとんどのツールがここで表示するものリークなし

2回実行する

VPNオフ

WebRTCが示したもの203.0.113.7

Webサイトに見えるもの203.0.113.7

リークなし

VPNオン

WebRTCが示したもの198.51.100.23203.0.113.7

Webサイトに見えるもの198.51.100.23

VPNをオンにしても残ったもの

リーク
それぞれの結果と、それを生む実行の例です。VPNがオフなら、WebRTCのアドレスとWebサイトのアドレスは同じです。オンにすると両方とも変わるはずで、変わらずに残ったものが答えです。

VPNでWebRTCリークは防げますか?

VPNだけでは防げません。VPNは通信の行き先を変えますが、WebRTCはOSにどんなインターフェースがあるかを尋ねることができ、物理的なインターフェースは通常まだ存在しています。

IETF自身の説明は正確です:「クライアントが仮想プライベートネットワーク(VPN)で物理的な位置を隠そうとし、VPNとローカルOSが複数のインターフェースでのルーティングに対応している場合、WebRTCはVPNのパブリックアドレスだけでなく、VPNが動作しているISPのパブリックアドレスも検出できる」。両方のアドレスが提示され、それを探しているページは両方を読み取れます。

VPNクライアントの中には、OSレベルですべての通信をルーティングしたり、WebRTCを制限するブラウザー拡張機能を提供したりして、この穴をふさぐものもあります。どちらも効果がありますが、どちらも思い込まずに確認すべきもので、このページはそのためにあります。VPN自身のリークテストページが保護されていると表示しても、それは独立した証拠ではありません。

VPNはオン、Wi-Fiも接続中2つのインターフェース、2つの答え

ノートパソコンVPN10.64.0.2Wi-Fi192.168.1.20VPNトンネルVPNサーバー198.51.100.23Webサイト閲覧STUNサーバールーター(NAT)プロバイダー203.0.113.7WebRTCは両方で尋ねるノートパソコンVPN10.64.0.2Wi-Fi192.168.1.20VPNトンネルVPNサーバー198.51.100.23ルーター(NAT)プロバイダー203.0.113.7閲覧WebサイトSTUNサーバーWebRTCは両方で尋ねる

ページが受け取るもの

  • 198.51.100.23srflxSTUNサーバーから見たアドレスVPN経由Webサイトにすでに見えている
  • 203.0.113.7srflxSTUNサーバーから見たアドレスWi-Fi経由、トンネルの外Webサイトには見えていない

RFC 8828

穴をふさぐもの

  • OSレベルでのルーティングトンネルの外に出るものがないため、STUNサーバーにはVPNのアドレスしか見えません。
  • VPNのブラウザー拡張機能ブラウザー内でWebRTCを制限するため、もう一方のインターフェースには尋ねません。
  • 思い込まず、確認するVPNをオンにしてこのテストを実行してください。VPN自身のリークテストページは、独立した証拠ではありません。
IETFがRFC 8828で説明しているケースです。VPNとOSが複数のインターフェースでルーティングするため、WebRTCはVPNのパブリックアドレスと、その下にあるプロバイダーのアドレスを見つけます。

ホスト候補、サーバーリフレクシブ候補、リレー候補の違いは?

ホスト候補は、お使いのデバイス自体のアドレスです。サーバーリフレクシブ候補は、STUNサーバーに見えたアドレス、つまりNATのパブリック側です。リレー候補はTURNサーバーのアドレスで、あなたのものではありません。

この区別は重要ですが、ほとんどのリークテストはこれを捨ててしまいます。パブリックIPv4を持つサーバーリフレクシブ候補は、通常は目新しいものではありません。今使っている接続からWebサイトが得ているのと同じアドレスです。ルーティング可能なアドレスを持つホスト候補は別物です。デバイス自体のアドレスがページに直接提示されたものです。家庭のルーターだけでなく、このデバイスそのものを特定し、ネットワークが変われば変わります。

ページは各アドレスの横に種類を表示し、トランスポート、ポート、そしてリフレクシブ候補が示す関連アドレスも表示します。リレー候補はTURNサーバー自身のアドレスで、あなたについては何も明かしません。このテストはTURNサーバーを使わないため、もしリレー候補が現れたら、ページ上の別の何かがそれを設定したということです。

1つの候補を項目ごとにページが受け取るとおり

  1. candidate:1467250027ファウンデーション
  2. 1コンポーネント
  3. udpトランスポート
  4. 1686052607優先度
  5. 203.0.113.7アドレス
  6. 54400ポート
  7. typ srflx種類
  8. raddr 0.0.0.0 rport 9関連アドレス
  9. generation 0拡張

ローカルアドレスがマスクされる環境では、0.0.0.0、ポート9に置き換えられます

4つの種類

  • typ hostこのデバイス上

    お使いのネットワークインターフェースのいずれかにあるアドレス。

    プライベートなものはマスクされます。ルーティング可能なものはデバイスそのもので、最も深刻な発見です。

    ルーティング可能なら最も深刻

  • typ srflxSTUNサーバーから見たアドレス

    ルーターのパブリック側を、STUNサーバーから見たもの。

    通常は、Webサイトがお使いの接続からすでに得ているアドレスです。

    通常は目新しくない

  • typ prflx通信相手から見たアドレス

    ルーターのパブリック側を、通話の相手側から見たもの。

    相手側への接続中にしか見つからないため、通話のないテストでは現れません。

    通話中のみ

  • typ relayリレーサーバー自身のアドレス

    あなたの通信を中継するTURNサーバーのアドレス。

    あなたのものではなく、サーバーのアドレスです。このテストはTURNサーバーを使わないため、ここに現れたものは別の何かが設定したものです。

    あなたについての情報なし

候補のアドレスはWebサイトに見えるものと比較され、その種類が、違いの深刻さを示します。定義はRFC 8445のセクション4によります。

mDNSの.localアドレスとは?プライバシーは守られますか?

最近のブラウザーは、プライベートアドレスをページに提示する前に、末尾が.localのランダムな名前に置き換えます。これは機能します。ただし、プライベートアドレスに対してです。パブリックアドレスを隠すためのものでは、もともとありません。

Chromeはバージョン76以降これを既定で行い、Firefoxではmedia.peerconnection.ice.obfuscate_host_addressesがtrueに設定されています。そのため、ページには192.168.1.20の代わりに8b7f4e2a-….localのようなものが渡され、ネットワークの外の人には何の意味もありません。Safariはさらに踏み込み、サイトがカメラやマイクの許可を得るまでは、ホスト候補を一切提示しません。上のテストはこうした.local名を認識し、発見事項ではなく、保護が機能しているものとして報告します。

これを定義するIETFのドラフトは、何をしないかを明言しています:「すでにインターネットに公開されているアドレスは、Webサーバーから簡単に観測できるため、mDNSで保護する必要はない」。そのため、サーバーリフレクシブ候補にはパブリックIPv4が引き続き含まれます。そして意外に思われる点ですが、ルーティング可能なIPv6アドレスを持つデバイスは、そのアドレスを依然としてホスト候補として提示できます。もう1つ知っておくべき穴があります。Chromeはカメラやマイクの許可をすでに持つサイトでは保護をオフにするため、以前使ったことのあるビデオ通話サイトには、本当のローカルアドレスが見えます。

.local名が置き換えるものそして、そのまま残すもの

ブラウザーが持っているもの

candidate:3442447574 1 udp 2122260223 192.168.1.20 54400 typ host generation 0

ページが受け取るもの

candidate:3442447574 1 udp 2122260223 8b7f4e2a-5c1d-4e6f-9a0b-3d2c1e0f4a5b.local 54400 typ host generation 0

各ブラウザーの既定の動作

  • Chromeバージョン76、2019年8月
  • Firefoxmedia.peerconnection.ice.obfuscate_host_addresses = true
  • Safariサイトがカメラやマイクの許可を得るまで、ホスト候補なし

この仕組みはIETFのドラフトで、最終改訂は2021年12月、RFCとしては公開されていません。 draft-ietf-mmusic-mdns-ice-candidates-03

WebRTCが提示しうるアドレスマスクされるか
192.168.1.20プライベートIPv4(ホスト候補)マスクされるランダムな名前に置き換えられます。ページにはネットワークについて何もわかりません。
203.0.113.7パブリックIPv4(STUNサーバーの候補)表示されるすでにパブリックなので、そのまま残ります。関連アドレスだけが消されます。
2001:db8:4a1f:7c00::1cルーティング可能なIPv6(ホスト候補)表示されるこれもパブリックなので、マスクはもともと対象にしていません。
2001:db8:4a1f:7c00:8d3:5e2f:a41c:9b07一時IPv6アドレス表示されることもドラフトは、ブラウザーが選択によりマスクしないことを認めています。
192.168.1.20カメラやマイクの許可を持つサイトでの、あらゆるローカルアドレスマスクがオフChromeはそこでマスクをオフにします。サイトには本当のローカルアドレスが見えます。
マスクが隠すのは、あなた自身のネットワークだけが知っているものです。Webサイトにいずれにせよ見えるものは、そのまま残します。これは設計によるもので、誤りではありません。

IPv6が最後に残るリークである理由

グローバルIPv6アドレスは、NATの背後の家庭全体ではなく1台のデバイスのもので、mDNSは意図的にそれに手を付けません。WebRTCが今も渡すものの中で、最も個人を特定しやすいものです。

IPv4では、家庭のルーターのNATがすべてを1つのアドレスの背後にまとめるため、サーバーリフレクシブ候補がページに伝える内容は、通常の接続がすでに伝えている内容とほぼ同じです。IPv6にはNATがありません。各デバイスが独自のルーティング可能なアドレスを持ち、それを含むホスト候補は、回線ではなくデバイスを特定します。VPNがIPv4しか運ばない場合(多くのVPNがそうです)、そのIPv6アドレスはトンネルの完全に外にあります。

プライバシー拡張は役立ちます。一時IPv6アドレスは入れ替わるからです。ただし、アドレスを隠すわけではありません。mDNSのドラフトは、そうしたアドレスをマスクしないままにしてもよいとしています。上のテストは、ルーティング可能なIPv6のホスト候補を、見つかりうる最も深刻なものとして示します。お使いの接続にそもそもIPv6があるかは、IPv6接続確認テストでわかります。

アドレスが特定するもの同じ3台のデバイスで2通り

ルーターIPv4、NATの背後IPv6、NATなし
ノートPC192.168.1.202001:db8:4a1f:7c00::1c
スマホ192.168.1.212001:db8:4a1f:7c00::2b
テレビ192.168.1.222001:db8:4a1f:7c00::3d
ルーター203.0.113.7回線全体で1つのアドレスデバイスごとに1つのアドレス

グローバルIPv6アドレスの2つの部分

2001:db8:4a1f:7c00ネットワークプレフィックス:回線 /64:8d3:5e2f:a41c:9b07インターフェースID:このデバイス

  • 固定2001:db8:4a1f:7c00::1c
  • 一時的:入れ替わる2001:db8:4a1f:7c00:8d3:5e2f:a41c:9b07

IPv4しか運ばないVPN

  • IPv4198.51.100.23トンネルの中
  • IPv62001:db8:4a1f:7c00::1cトンネルの外
IPv4のNATの背後では、家庭で1つのアドレスを共有しますが、IPv6ではデバイスごとに独自のアドレスがあり、ホスト候補がそれを直接提示します。テストは、ルーティング可能なIPv6のホスト候補を最も深刻な発見として扱います。

ブラウザー別にWebRTCリークを防ぐ方法

Firefoxには効果のある設定があります。Edgeにはエンタープライズポリシーがあります。Safariはすでに候補を制限しています。今もよく勧められるブラウザー拡張機能は、もう何もしません。

Firefoxでは、about:config → media.peerconnection.ice.default_address_onlyで、すべてのアドレスではなく1つだけを送るようになり、media.peerconnection.ice.relay_onlyで収集をリレー候補だけに制限できます。後者は直接の通話を壊しますが、それ以外はすべて隠せます。どちらも既定ではオフで、プライベートアドレスのmDNSによるマスク(media.peerconnection.ice.obfuscate_host_addresses)はすでにオンです。Edgeでは、WebRtcLocalIpsAllowedUrlsポリシーで、ローカルアドレスを見てよいサイトを指定します。Microsoft自身のドキュメントは、サイトを追加すると「保護が弱まる」と注記しています。Chromeには、一般のユーザー向けの同等の設定がありません。Safariは、何もしなくても最も厳格です。カメラやマイクの許可がなければ、WebKitはサーバーリフレクシブ候補とリレー候補だけを提示し、ホスト候補は一切提示しません。

今も広く勧められている2つの方法は、もう機能しません。uBlock Originの「ローカルIPアドレスの漏洩をもたらすWebRTCを防止する」オプションはバージョン1.38で削除され、その際「Android版Firefoxを除き、最新のブラウザーではもはや不要」と説明されました。また、GoogleのWebRTC Network Limiter拡張機能は、ストアにまだ掲載されていますが動作しません。2025年7月のChrome 138以降、すべてのChromeユーザーでManifest V2の拡張機能が無効になっているためです。どちらかをインストールするよう勧めるページは、何年も更新されていません。

各ブラウザーが提供するもの各ベンダーのドキュメントで確認

  • Firefox効果のある設定

    about:config

    • media.peerconnection.ice.obfuscate_host_addresses既定値 trueプライベートアドレスをマスク。すでにオン。
    • media.peerconnection.ice.default_address_only既定値 false設定値 trueすべてのアドレスではなく1つだけを送ります。
    • media.peerconnection.ice.relay_only既定値 false設定値 trueリレー候補のみ。最も多くを隠せますが、直接の通話が壊れます。
  • Edgeエンタープライズポリシー

    WebRtcLocalIpsAllowedUrls

    ローカルアドレスを見てよいサイトを列挙します。

    未設定:ローカルアドレスはマスクされたままです。

    Microsoft自身の注記:サイトを追加すると保護が弱まります。

    WindowsとmacOS、バージョン80以降

  • Chrome設定なし

    一般のユーザー向けの設定はありません。

    バージョン76以降、プライベートアドレスを既定でマスク。

    カメラやマイクの許可を持つサイトでは無効。

  • Safari既定で厳格

    カメラやマイクの許可がなければ、STUNサーバーの候補とリレー候補のみ。

    ホスト候補は一切なし。

もう機能しないアドバイス

  • Prevent WebRTC from leaking local IP addresses

    uBlock Origin

    バージョン1.38で削除

    uBlock Originによれば、Android版Firefoxを除き、最新のブラウザーではもはや不要です。

  • WebRTC Network Limiter

    Google · Chrome Web Store

    掲載中だが動作不可

    2025年7月のChrome 138以降、すべてのChromeユーザーでManifest V2の拡張機能が無効になっています。

各ベンダー自身のドキュメントを、このページを確認した日に読んだ内容です。最後の2つのどちらかをインストールするよう今も勧めるページは、何年も更新されていません。

WebRTCリーク、DNSリーク、IPリークの違いは?

VPNを迂回する3つの異なる経路です。WebRTCリークはアドレスを示し、DNSリークは誰があなたの問い合わせに応答しているかを示し、IPリークは通信がそもそもトンネルに入らなかった単純なケースです。

WebRTCリークは、アドレスを自ら差し出すように設計された機能を通じて、ブラウザーが差し出すアドレスの問題です。DNSリークは、どのリゾルバーが問い合わせに応答するかの問題です。通信がVPNを通っていても、問い合わせがプロバイダーのリゾルバーに送られ続けることがあり、そうなるとプロバイダーには、あなたが訪れるすべてのサイトがわかります。当サイトのDNSリークテストは、当サイト独自のネームサーバーでこれを確認するため、どのリゾルバーが問い合わせてきたかを正確に把握できます。

一般的な意味でのIPリークとは、Webサイトにそのまま見えるアドレスのことで、自分のIPアドレス確認や自分のISPを確認で確認できます。VPNの設定を変えたら、3つをまとめて実行してください。それぞれ独立して失敗するため、1つの結果が問題なしでも、ほかについては何もわかりません。

VPNを迂回する3つの経路それぞれ独立して失敗する

あなたVPNトンネルトンネル経由IPリーク · 通信Webサイト203.0.113.7DNSリーク · 問い合わせプロバイダーのリゾルバー203.0.113.53WebRTCリーク · アドレスページのスクリプト203.0.113.7あなたVPNトンネルトンネル経由IPリーク通信Webサイト203.0.113.7DNSリーク問い合わせプロバイダーのリゾルバー203.0.113.53WebRTCリークアドレスページのスクリプト203.0.113.7
  • IPリーク

    漏れるものすべてのリクエストに含まれるアドレス

    それを知る相手訪問するすべてのサイト

    確認するツール自分のIPアドレス確認自分のISPを確認

  • DNSリーク

    漏れるものどのリゾルバーが問い合わせに応答するか

    それを知る相手プロバイダー(調べるすべてのサイトについて)

    確認するツールDNSリークテスト

  • WebRTCリーク

    漏れるものブラウザーがページに提示するアドレス

    それを知る相手尋ねたページすべて(確認なしで)

    確認するツールWebRTCリークテスト

それぞれ独立して失敗します。1つの結果が問題なしでも、ほかの2つについては何もわかりません。VPNを変更したら、3つすべてを実行してください。

このテストが複数のSTUNサーバーに尋ねる理由

「アドレスが返ってこなかった」と「アドレスが存在しない」は同じに見えますが、良い知らせなのは一方だけだからです。

企業のファイアウォール、制限の厳しいVPN、UDPをブロックするネットワークは、STUNサーバーの応答を止めることがあります。1社にだけ尋ねて何も見えなかったテストは、何もわかっていません。それなのに、よくある対応は緑のチェックマークを表示することです。このテストは、Cloudflareが文書化しているSTUNエンドポイントとGoogleのものに尋ね、それぞれを個別に報告し、どれも応答しなかった場合は、テストできなかったと伝えます。

サーバーの選択は意図的です。Cloudflareはstun.cloudflare.com:3478を製品の一部として公開しているため、読むべき規約があります。Googleのstun.l.google.com:19302は、Google自身のWebRTCバリデーターの既定値としてしか文書化されておらず、公開された規約がないため、唯一の情報源ではなく、セカンドオピニオンとして使います。Twilioのものは認証情報が必要で、Mozillaについては、よく名前が挙がるにもかかわらず、文書化された公開STUNサーバーはありません。

公開STUNサーバーこのテストが尋ねるもの

  • Cloudflare尋ねる

    stun.cloudflare.com:3478

    文書化されたエンドポイントで、製品の一部として読むべき規約があります。

  • Google尋ねる(セカンドオピニオン)

    stun.l.google.com:19302

    Google自身のWebRTCバリデーターの既定値としてのみ文書化。公開された規約なし。

  • Twilio尋ねない

    global.stun.twilio.com:3478

    TwilioのAPIからの認証情報が必要。すべてのページに開かれてはいません。

  • Mozilla尋ねない

    公開サーバーなし

    文書化された公開STUNサーバーはありません。FirefoxにはICEサーバーの既定値が一切ありません。

サーバーが応答しないとき

CloudflareGoogle
応答あり応答あり結果は有効
応答あり応答なし結果は有効、応答しないサーバーを明示
応答なし応答あり結果は有効、応答しないサーバーを明示
応答なし応答なしテストできず
2つの運営者に、別々に尋ねます。1つのサーバーが応答しなければそれを名指しし、結果は有効です。どれも応答しなければ何も測定されておらず、テストは合格を表示する代わりにそう伝えます。

IPアドレスは個人データですか?

EUでは、動的IPアドレスは、プロバイダーが持つ情報であなたを特定できるWebサイト運営者にとって、個人データです。欧州連合司法裁判所が2016年にそう判断しました。

この事件はBreyer事件(C-582/14)で、2016年10月19日に判決が出ました。裁判所のプレスリリースは、次のように要約しています:「訪問者の動的インターネットプロトコルアドレスは、Webサイトの運営者が、インターネットアクセスプロバイダーが保有する当該訪問者に関する追加情報によって訪問者を特定できる法的手段を有している場合、その運営者との関係において個人データを構成する」。同じプレスリリースは、サイトが攻撃から身を守るために、その一部を保存する正当な利益を持ちうることにも触れています。

このページがブラウザーの中で処理を行うのは、まさにそのためです。ICE候補はブラウザーが収集し、ブラウザーの中で比較し、あなたに表示します。WebRTCが見つけたアドレスが当サイトに送られることはないため、当サイトには保存したり、引き渡したり、紛失したりしうるものが何もありません。テストの実行中に、ネットワークパネルで確認できます。

Breyer判決欧州連合司法裁判所

C-582/14Breyer v Bundesrepublik Deutschland2016年10月19日

  1. Webサイト運営者ログにあるアドレスと時刻203.0.113.7 · 14:02:37
  2. それを入手する法的手段
  3. インターネットアクセスプロバイダーその時刻にそのアドレスを誰が使っていたか203.0.113.7 · 14:02:37 →
  4. その運営者にとっては個人データ

裁判所のプレスリリース:サイトは攻撃から身を守るため、その一部を保存する正当な利益を持ちうる。

このページでは

お使いのブラウザー

  1. 収集
  2. 分類
  3. 比較
  4. 表示
  • 通話と同じく、パブリックアドレスが見える
  • dnsrobot.net候補は送信されない
事件番号C-582/14、Breyer事件。動的IPアドレスは、プロバイダーの記録であなたを特定する法的手段を持つWebサイト運営者にとって、個人データです。このページは、候補をブラウザー内にとどめます。

WebRTCリークテスト:よくある質問

WebRTCリーク(WebRTC漏洩)とは何ですか?

WebRTCは、ビデオ通話を支えるブラウザーの機能です。2人を直接つなぐため、デバイスに到達できるすべてのアドレスを集め、許可を求めることなくページに提示します。そのアドレスのどれかがあなたの隠していたもの、典型的にはVPN使用中の本当のアドレスである場合、それがリークです。WebRTCは、閲覧に使うインターフェースだけでなく、すべてのネットワークインターフェースについて尋ねることができるからです。

WebRTCリークを確認するには?

このページのテストを開始してください。2社が運営する3つのSTUNサーバーに尋ね、WebRTCが示したすべてのアドレスをそれぞれの種類とともに一覧表示し、ルーティング可能なものをWebサイトにすでに見えているアドレスと比較します。VPNを使っているなら、VPNをオフにして1回、オンにして1回実行してください。2回の違いが答えです。

VPNでWebRTCリークは防げますか?

VPNだけでは防げません。VPNは通信の行き先を変えますが、WebRTCはOSにどんなインターフェースがあるかを尋ねることができ、物理的な接続も通常はその1つとして残っています。IETF自身の文書は、WebRTCが「VPNのパブリックアドレスだけでなく、VPNが動作しているISPのパブリックアドレスも」検出できるとしています。この穴をふさぐVPNクライアントもあり、お使いのものがふさいでいるかは、このテストでわかります。

結果に表示される.localアドレスとは何ですか?

それはmDNSで、良い知らせです。最近のブラウザーは、プライベートアドレスをページに提示する前に、末尾が.localのランダムな名前に置き換えるため、サイトはそこから家庭のネットワークについて何も知ることができません。Chromeはバージョン76以降これを行っており、Firefoxも同様です。Safariはさらに踏み込み、サイトがカメラやマイクの許可を得るまでは、ホスト候補を一切提示しません。テストはこれを、発見事項ではなく、保護が機能しているものとして示します。

mDNSがローカルIPを隠していれば安全ですか?

部分的には。mDNSは、プライベートアドレスを隠し、すでにパブリックなアドレスは明確に隠さないように設計されています。これを定義するIETFのドラフトにそう書かれています。パブリックIPv4はサーバーリフレクシブ候補として引き続き表示され、ルーティング可能なIPv6アドレスを持つデバイスは、そのアドレスを直接提示できます。また、Chromeはカメラやマイクの許可をすでに持つサイトでは保護をオフにします。

テストが「テストできず」と表示するのはなぜですか?

それが事実だからです。WebRTCがオフになっている、拡張機能やポリシーでブロックされている、あるいはどのSTUNサーバーも応答しなかった(ファイアウォール、制限の厳しいVPN、UDPをブロックするネットワーク)場合、何も測定されていません。ほとんどのツールはこの状況で緑のチェックマークを表示しますが、それはリークテストがしうる最も誤解を招く行為です。このテストは何が起きたかを伝え、応答しなかったサーバーを名指しします。

FirefoxでWebRTCを無効にするには?

Firefoxの文書化された設定は、WebRTCをオフにするのではなく、制限するものです。about:configで、media.peerconnection.ice.default_address_onlyはすべてのアドレスではなく1つだけを送るようにし、media.peerconnection.ice.relay_onlyは収集をリレー候補に制限します。後者は最も多くを隠せますが、直接の通話が壊れます。プライベートアドレスのマスク(media.peerconnection.ice.obfuscate_host_addresses)は、既定ですでにオンです。1つ変えるたびにテストを再実行して、実際に何が得られたかを確認してください。

ChromeでWebRTCリークを防ぐには?

Chromeには、一般のユーザー向けの設定がありません。プライベートアドレスのmDNSによるマスクが既定でオンになっており、それが得られる保護です。Chromeと同じエンジンを使うEdgeには、WebRtcLocalIpsAllowedUrlsというエンタープライズポリシーがあります。今も広く勧められている拡張機能は機能しません。uBlock Originはバージョン1.38でWebRTCのオプションを削除し、GoogleのWebRTC Network Limiterは、Chrome 138でManifest V2が無効になって以来、動作できません。

ホスト候補とサーバーリフレクシブ候補の違いは何ですか?

ホスト候補は、お使いのデバイス自体のアドレスです。サーバーリフレクシブ候補はSTUNサーバーに見えたアドレス、つまりNATのパブリック側で、通常はWebサイトがお使いの接続からすでに得ているアドレスです。ルーティング可能なホスト候補のほうが深刻な発見です。デバイス自体のアドレスであり、IPv6では家庭ではなくデバイスを特定するからです。

WebRTCリークとDNSリークは同じですか?

いいえ。WebRTCリークはアドレスを明かし、DNSリークはどのリゾルバーが問い合わせに応答しているかを明かします。後者では、通信自体がVPNを通っていても、プロバイダーにはあなたが訪れるすべてのサイトがわかります。それぞれ独立して失敗するため、一方の結果が問題なしでも、もう一方については何もわかりません。VPNの設定を変えたら、当サイトのDNSリークテストも実行してください。

このテストはIPアドレスをどこかに送りますか?

送るのは、どのWebサイトにも見えるのと同じ範囲だけです。ビデオ通話と同じように、ブラウザーはSTUNサーバーに接続します。それがテストそのものです。Webサイトに何が見えるかを知るため、ページはipify.orgと当サイトのサーバーに、あなたのアドレスとそのネットワークを問い合わせます。DNSリークテストと同じです。WebRTCが見つけたアドレスはブラウザー内にとどまり、1つも当サイトに送られません。テストの実行中に、ネットワークパネルで確認してください。

IPアドレスはEU法上の個人データですか?

EUのWebサイト運営者にとって、動的IPアドレスは、その運営者がインターネットプロバイダーの保有する情報によってあなたを特定できる合法的な手段を持つ場合、個人データです。これは、2016年10月のBreyer事件(C-582/14)における欧州連合司法裁判所の判断です。このページが、テストのうちWebRTCの部分を当サイトのサーバーではなくブラウザー内で行う理由の1つです。

足りないものはありますか?機能や新しいツールを提案する