DNSリーク(DNS漏れ)とは?
ウェブサイトを開くたびに、デバイスはまずDNSサーバーに問い合わせて、ドメイン名(example.com)をIPアドレスに変換します。そのサーバーの運営者は、あなたが調べたドメインをすべて見ることができます。
本来VPNは、これらの問い合わせを暗号化されたトンネル経由で、VPN自身が管理するDNSサーバーに送るはずです。問い合わせがそれ以外の場所、たいていはインターネットプロバイダに直接送られてしまうのがDNSリーク(DNS漏れ)です。通信内容そのものは隠れていても、ISPにはアクセスしたサイトの一覧がすべて伝わり、VPNのプライバシー保護は知らないうちに失われてしまいます。

このDNSリークテストの仕組み
テストでは、3-k2v9x0m4q7r1t8zw.leak.dnsrobot.netのような名前をブラウザに読み込ませます。これまで誰も問い合わせたことのない名前なのでキャッシュからは応答できず、お使いのDNSサーバーは当社のネームサーバーに問い合わせるしかありません。
leak.dnsrobot.netのネームサーバーは当社が運用しています。各問い合わせは、閲覧時の名前解決を実際に行っているDNSサーバーから届くため、そのIPアドレスを記録します。
各サーバーのIPを、そのネットワーク(ASN)、運営者、国と照合し、あなた自身のIPアドレスのネットワークと比較します。
サーバーがVPNのもの、または自分で選んだDNSサービスのものであれば、リークはありません。VPN接続中にご自身のインターネットプロバイダが表示された場合は、DNSが漏れています。
Advertisement
テスト結果の見方
すべてのDNSサーバーが、あなたのIPアドレスと同じネットワークに属しています。VPN接続中なら、問い合わせはトンネルを通っています。VPNを使っていない場合は、想定どおりISPに送られています。
問い合わせは、Cloudflare、Google、Quad9などのパブリックDNSサービスに送られています。自分またはVPNが選んだものなら問題ありません。そうでない場合は、ブラウザの設定やアプリがVPNのDNSを迂回している可能性があります。
少なくとも1台のサーバーが、あなたのIPとは無関係なネットワークにあります。VPN接続中なら、一覧にご自身のISPの名前がないか確認してください。表示されていれば、VPNからDNSが漏れています。
ブラウザがテスト用の名前を問い合わせませんでした。通常は、広告ブロッカー、ファイアウォール、またはフィルタリングDNSが未知のドメインをブロックしていることが原因です。このページを許可して、もう一度テストしてください。
標準テストと拡張テスト、どちらを使う?
標準テストは6回の問い合わせを送り、数秒で終わります。どのプロバイダがDNSを処理しているかを知るにはこれで十分です。
拡張テストは6ラウンドで36回の問い合わせを送ります。大手プロバイダは多数のサーバーからなるプールで応答し、リークの中にはときどきしか現れないものもあります。たとえば、Windowsが同じ問い合わせをすべてのネットワークアダプターに同時に送る場合です。機密性の高い用途でVPNを信頼する前に、拡張テストを実行してください。
Advertisement
DNSリークの原因
VPNがDNSを処理していない:一部のVPNアプリや、手動で設定したOpenVPN・WireGuardの多くは、トンネルを接続しても、システムのDNS設定がルーターやISPを向いたままになっています。
Windowsがすべてのアダプターに問い合わせる:Windows 8以降は、スマートマルチホーム名前解決(smart multi-homed name resolution)により、各問い合わせをすべてのネットワークアダプターのDNSサーバーに同時に送り、最も速い応答を採用します。その応答がISPのものになる場合があります。
トンネル外のIPv6:VPNがIPv4しかトンネルしない場合、IPv6で送られた問い合わせがISPのリゾルバーに直接届くことがあります。VPN接続中に当社のIPv6テストで確認してください。
ブラウザのセキュアDNS:Chrome、Edge、Firefoxは、VPNのDNSサーバーを無視して、DNS over HTTPSでCloudflare、Googleなどのプロバイダに問い合わせを送ることがあります。
ルーターや手動でのDNS設定:ルーターやネットワーク設定で固定したDNSサーバーが、VPNアプリの仕組みによってはVPNの設定より優先されることがあります。
透過型DNSプロキシ:一部のISPは、ポート53へのDNSリクエストをすべて横取りして自ら応答します。別のDNSサーバーを指定していても同じです。
DNSリークを修正する方法
VPNのDNSリーク保護をオンにする:キルスイッチもあわせて有効にしましょう。優れたVPNアプリの多くは両方を備えています。アプリが独自のDNSサーバーを使う設定になっていることを確認してから、もう一度テストしてください。
Windows Pro・Enterprise:
gpedit.mscを開き、コンピューターの構成 → 管理用テンプレート → ネットワーク → DNS クライアントで「Turn off smart multi-homed name resolution」ポリシーを有効にします。Windows Homeでは、HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClientの下にあるDWORD値DisableSmartNameResolutionを1に設定します。Teredoを無効にする:不要であれば、管理者として開いたコマンドプロンプトで
netsh interface teredo set state disabledを実行します。IPv6への対策:IPv6もトンネルするVPNを使うか、接続中はネットワークアダプターのIPv6をオフにします。
ブラウザのセキュアDNSを確認する:Chromeでは 設定 → プライバシーとセキュリティ → セキュリティ → 「セキュア DNS を使用する」、Firefoxでは 設定 → プライバシーとセキュリティ → DNS over HTTPS を開きます。DNSをVPNに任せたい場合は、オフにするか、VPNのリゾルバーを指定してください。
DNSキャッシュをクリアする:設定を変更したら、古い応答が残らないようにキャッシュを消去しましょう。Windows、macOS、Linux、ブラウザでの手順はDNSキャッシュのクリア方法をご覧ください。
Advertisement
コマンドラインでDNSサーバーをテストする
ブラウザを使わずに、コンピューターが使っているDNSサーバーを確認することもできます。当社のネームサーバーは、特別な名前whoami.leak.dnsrobot.netに対して、問い合わせてきたサーバーのIPアドレスを返します。
dig +short TXT whoami.leak.dnsrobot.netnslookup -type=TXT whoami.leak.dnsrobot.net見覚えのないサーバーが表示されるのはなぜ?
当社から見えるのは、当社のネームサーバーに接続してきたサーバー、つまりチェーンの最後にあるサーバーです。ルーターやローカルのリゾルバーが問い合わせを上流に転送している場合、結果にはルーターではなく上流のプロバイダが表示されます。
大手のパブリックリゾルバーはエニーキャストを使っています。Cloudflare、Google、Quad9はあなたに近いデータセンターから応答するため、1回の問い合わせが隣国のマシンで処理されることもあります。予想外の国のサーバーがあるだけではリークとは言えません。重要なのは誰が運営しているかです。
Advertisement
DNSリーク、WebRTCリーク、IPv6リーク
VPNから身元が漏れる経路は主に3つあり、それぞれ別のテストが必要です。
問い合わせがVPNの外にあるDNSサーバー(通常はISPのもの)に届き、アクセスしたドメインがすべてわかってしまいます。
ブラウザがWebRTC経由で本当のIPを公開してしまいます。当社のWebRTCリークテストで確認してください。
IPv4しかトンネルしないVPNを、IPv6の通信が迂回してしまいます。VPN接続中に当社のIPv6テストで確認してください。
その他のプライバシー・DNSツール
接続から何が見えているか、DNSの性能はどうかを確認できる無料ツールです。