誰もが一度はやるべき 2 つの漏洩検査:WebRTC と DNS
VPN はアドレスを隠しても、2 つの扉を開けたままにできます。どちらもブラウザで測定でき、既定の設定はたいてい間違っています。
「IP 漏洩」は 1 つのバグのように語られますが、少なくとも 2 つあり、層が違い、対処も違います。片方を完全に塞いでも、もう片方から露出し続けることがあります。テストページに VPN のアドレスが出ること自体は、どちらの証明にもなりません。
1. まず、どの観測者が気になるかを決める
漏洩の問いは、結局「誰が何を知るか」です。訪問先のサイトは接続してきたアドレスを知ります。ローカルネットワークは解決した名前を知ります。ブラウザのネットワークスタックはローカルアドレスを知っており、対端に喜んで教えます。VPN が変えると約束するのは 1 つ目だけで、2 つ目と 3 つ目については、そう設定しない限り何も言っていません。
2. WebRTC:ブラウザが自分からアドレスを渡す
WebRTC は 2 つのブラウザを直結させ、音声・映像・データをやり取りする仕組みです。そのために ICE 候補を集めます。ローカルアドレスと、STUN サーバー経由で判明した公開アドレスを含み、それらを対端へ送ります。VPN クライアントがこの通信をトンネルに入れていないと、STUN 要求は物理回線から直接出て、候補一覧に本当の公開アドレスが載ります。サイトは JavaScript からその一覧を読めます。許可は不要です。
見るべき特徴は単純です。サイトが HTTP リクエストに対して報告したアドレスと異なるアドレスがある。あるいは公開アドレスの隣に 192.168.x.x のようなプライベート範囲がある。前者は Web 通信がトンネルを通り WebRTC が通っていない証拠、後者はそれ自体では何も漏らしませんが、候補収集が制限されていないことを示します。
3. DNS:リゾルバは開いたすべてのサイトを知る
接続の前に、名前をアドレスへ変える必要があります。その問い合わせは通常、平文で端末を出て、OS が選んだリゾルバへ向かいます。その選び方は混沌で、DHCP オプション、インターフェース設定、systemd-resolved、VPN クライアントのスクリプト、ブラウザ内蔵 DoH が絡みます。実際に勝つものは、利用者が意図したものとほとんど一致しません。
確実な検査は「サイトに尋ねる」より一段賢い必要があります。一意なホスト名を要求し、権威サーバーに「誰があなたの代理で問い合わせたか」を記録させます。そのリゾルバのアドレスと運営ネットワークが、唯一信頼できる答えです。出口 IP と同じ国で同じ事業者のリゾルバなら、直接接続では正常です。出口 IP と別の国なら、通信の出口と問い合わせの出口が違う——これが DNS 漏洩の定義です。
4. 2 つの結果を合わせて読む
- 出口 IP とリゾルバが同じ国で、どちらも ISP のもの:VPN なし、漏洩なし、想定どおり。
- 出口 IP は海外、リゾルバは国内:VPN は通信を経路制御しているが DNS は引き受けていない。最も多い誤設定です。
- 出口もリゾルバも海外だが事業者が違う:漏洩ではないが、2 つの経路が別ルートを通り、リゾルバは全部見えています。VPN には見えません。
- リゾルバが Cloudflare、Google、Quad9:暗号化 DNS が有効。ISP は見えませんが、その事業者にはすべて見えます。
5. 壊さずに直す
WebRTC の確実な対処は、全トンネル経路制御と、TCP だけでなく UDP も対象にするキルスイッチを備えた VPN クライアントです。WebRTC を完全に無効化しても構いません(Firefox は about:config の media.peerconnection.enabled)。ただし正常なビデオ通話も壊れるため、多くの人には機能を切るより STUN をトンネル経由にするクライアントのほうが適しています。
DNS はトンネル層で強制し、検証してください。ブラウザや OS の設定が意図を静かに上書きできるからです。VPN クライアントに「DNS 漏洩防止」スイッチがあるなら、本来設定が担うべき仕事をそのスイッチがしている状態です。クライアント更新のたびに再テストを。ルートは書き換えられます。自分が管理するネットワークなら、自前のリゾルバを DHCP で配り、上流へは DoT で接続します。
6. どちらの検査でも分からないこと
どちらも「あなたが特定可能か」を測りません。TLS フィンガープリント、インストールされたフォント、タイムゾーン、画面サイズ、打鍵の癖は依然としてあなたのもので、プロキシはどれも変えません。漏洩検査がきれいなのは、目立つ扉が閉まっているという意味であって、部屋が空だという意味ではありません。
ipbox.one はホームで両方を実行します。ブラウザが公開する WebRTC 候補と、実際に応答したリゾルバを、Cloudflare が見たアドレスの隣に並べるので、推測ではなく比較で確認できます。