30秒でわかるDNS
端末がWebサイトを開くには、まず example.com のような名前をIPアドレスに変換する必要があります。そのためにDNSリゾルバーに問い合わせます。リゾルバーはたいていプロバイダが運営していて、あなたが調べたすべてのサイト名、調べた時刻、そしてあなたのIPアドレスを把握しています。
DNSリークとは?
VPNを使っているとき、この問い合わせは暗号化されたトンネルを通ってVPN自身のリゾルバーに届くべきです。DNSリークとは、問い合わせがトンネルを迂回して、プロバイダや外部のリゾルバーに直接送られてしまうことです。
通信そのものは暗号化されたままですが、リゾルバーにはアクセスしたサイトの一覧が見え、回線を監視している人にも見えてしまいます。DNSでWebサイトをブロックしている国では、リークがあるとVPNをオンにしていてもブロック対象のサイトが開けないこともあります。
DNSリークがあっても、Webサイトから見えるIPアドレスは変わりません。漏れるのは、どのサイトを見ているかという情報で、それがプロバイダに知られます。IPチェックだけでは検出できないのはそのためです。
DNSリークのテスト方法
- VPNに接続します。
- DNSリークテストを開きます。ブラウザに、当サイトのテストサーバーだけが応答できるランダムな名前をいくつか問い合わせさせ、どのリゾルバーが問い合わせてきたかを記録します。
- 表示されたリゾルバーを確認します。
リークなし: すべてのリゾルバーがVPN事業者のものか、VPNの出口と同じ国にあります。
リークあり: 自分のプロバイダのリゾルバーが表示される、またはVPNサーバーは別の国なのに自分の国のリゾルバーが表示されます。
Google(8.8.8.8)やCloudflare(1.1.1.1)のような大手のパブリックリゾルバーは、世界中にサーバーを持っています。その場合、リゾルバーが転送したクライアントサブネットも表示されます。リゾルバー自体は中立に見えても、これから本当のネットワークがわかることがあります。
DNSリークの原因
- VPNが独自のDNSを設定しない。 一部のVPNアプリ、手動で設定したWireGuardやOpenVPN、多くのプロキシツールは、システムのリゾルバーをそのままにします。
- Windowsがすべてのネットワークに同時に問い合わせる。 WindowsはDNSクエリをすべてのネットワークアダプターに送り、最も早い応答を採用するため、問い合わせが通常の回線から出ていくことがあります。
- IPv6。 VPNがIPv4しか扱わない場合、IPv6での問い合わせはプロバイダのIPv6リゾルバーに送られます。
- ブラウザのDNS over HTTPS。 Chrome、Edge、Firefoxは、独自の暗号化リゾルバーに問い合わせることがあります。プロバイダへのリークではありませんが、VPNのリゾルバーを迂回し、本当の居場所を伝えてしまうことがあります。
- プロキシツールの「システムプロキシ」モード。 Clash、V2Ray、Shadowsocksクライアントなどのアプリは、ブラウザの通信だけをプロキシし、名前解決はシステムがローカルで行っていることがよくあります。
- ルーターやプロバイダによるDNSの乗っ取り。 53番ポートの通信をすべて横取りして、自分で応答するプロバイダもあります。
DNSリークの対策
最初の対策から順に試し、1つ終えるごとにテストし直してください。
- VPNのDNSリーク保護をオンにする。 良いVPNアプリの多くには、DNSリーク保護や「VPNのDNSのみ使用」などの設定があります。キルスイッチもオンにしましょう。
- IPv6リーク保護をオンにするか、VPNアプリでIPv6をブロックします。理由はIPv4とIPv6の違いで解説しています。
- VPNの設定ファイルでDNSを指定する。 WireGuardでは
[Interface]セクションにDNS =の行を追加します。OpenVPNでは、Windowsでblock-outside-dnsを使います。 - プロキシツールではTUNモードを有効にする(Clash、sing-boxなどではTUN、拡張モード、VPNモードなどと呼ばれます)。あわせてDNS処理もオンにし、すべての問い合わせがプロキシを通るようにします。
- ブラウザのセキュアDNS設定を確認する。 ChromeやEdgeでは 設定 > プライバシーとセキュリティ > セキュリティ > セキュア DNS を使用する にあります。オフにしてVPNのリゾルバーを使わせるか、信頼できるリゾルバーを指定します。
- 予備策としてシステムのDNSをパブリックリゾルバーに変更する。 そのリゾルバーへのリークは防げませんが、プロバイダに問い合わせ内容を見られることはなくなります。
そのうえで、もう一度DNSリークテストを実行します。WebRTCやIPv6も含めてVPNを総合的にチェックするには、VPNが機能しているか確認する方法を参照してください。
よくある質問
DNSリークは危険?
漏れるのはアクセスしたサイトで、パスワードやページの内容はHTTPSで保護されたままです。とはいえ、プライバシーのためにVPNを使っているなら、リークがあると意味の大半が失われます。
DNSリークで本当のIPがわかる?
間接的にはわかります。プロバイダのリゾルバーには本当のIPが見えていますし、クライアントサブネットを転送するリゾルバーは、Webサイト側のDNSサーバーにあなたのおおよその居場所を伝えます。Webサイト自体がDNS経由であなたのIPを見ることはありません。
1.1.1.1や8.8.8.8を使えばDNSリークを防げる?
防げません。問い合わせを見る相手がプロバイダからCloudflareやGoogleに変わるだけで、問い合わせ自体はVPNの外に出ていく可能性があります。リークを止められるのは、DNSをVPN経由にすることだけです。
テストで別の国のサーバーが表示されるのはなぜ?
大手のリゾルバーは、あなたやVPNサーバーに最も近いデータセンターから問い合わせを送ります。それが隣の国にあることもあります。ネットワーク名を確認し、VPN事業者か、VPNサーバーに近い大手パブリックリゾルバーなら問題ありません。