IP アドレス・ネットワーク

DNS リーク

約 4 分で読めます

DNS リークとは

DNS リークとは、VPN を使用しているにもかかわらず、DNS の問い合わせが VPN トンネルの外側 (通常は ISP の DNS サーバー) に送信されてしまう現象です。

VPN の目的は通信を暗号化し、アクセス先を第三者から隠すことですが、DNS リークが発生すると、ISP やネットワーク管理者にどのドメインにアクセスしているかが筒抜けになります。つまり、VPN で IP アドレスを隠していても、閲覧先の情報が漏洩するという深刻な問題です。

DNS リークが発生する原因

DNS リークは複数の原因で発生します。

  • OS のデフォルト DNS 設定: Windows は VPN 接続中でも、物理ネットワークアダプタに設定された DNS サーバーに問い合わせを送ることがあります。特に「スマートマルチホーム名前解決」機能が有効な場合、VPN トンネル外の DNS サーバーにも並行して問い合わせが行われます。
  • VPN クライアントの設定不備: VPN アプリが DNS トラフィックをトンネル内に強制するルーティング設定を正しく行っていない場合に発生。安価な VPN サービスで多い。
  • IPv6 DNS リーク: VPN が IPv4 のみをトンネリングし、IPv6 の DNS クエリがトンネル外に漏れるケース。IPv6 対応が不十分な VPN で頻発する。
  • WebRTC 経由のリーク: ブラウザの WebRTC 機能が VPN を迂回して DNS 問い合わせを行う場合がある。

DNS リークの検出方法

DNS リークの検出は比較的簡単です。以下の手順で確認できます。

  1. VPN に接続した状態で、DNS リークテストサイト (当サイトのトップページでも DNS サーバー情報を確認可能) にアクセスする。
  2. 表示された DNS サーバーの IP アドレスと所属組織を確認する。
  3. DNS サーバーが VPN プロバイダーのものではなく、ISP のものであれば DNS リークが発生している。

例えば、日本の ISP を使用して米国の VPN サーバーに接続しているのに、DNS サーバーが日本の ISP のものと表示された場合、DNS リークが起きています。

コマンドラインでも確認できます。Windows では nslookup example.com を実行し、応答する DNS サーバーのアドレスが VPN プロバイダーのものかを確認します。

DNS リークの対策

DNS リークを防ぐための具体的な対策を優先度順に紹介します。

  • VPN の DNS 設定を確認: 信頼できる VPN サービスは独自の DNS サーバーを運用し、DNS トラフィックをトンネル内に強制します。VPN アプリの設定で「DNS リーク保護」が有効になっているか確認しましょう。
  • DNS over HTTPS (DoH) を有効化: ブラウザの DoH 機能を有効にすると、DNS クエリが HTTPS で暗号化されるため、仮にトンネル外に漏れても内容を傍受されにくくなります。
  • VPN キルスイッチを有効化: VPN 接続が切断された際にすべての通信を遮断する機能。DNS リークだけでなく、IP アドレスの漏洩も防止します。
  • IPv6 を無効化 (暫定策): VPN が IPv6 に対応していない場合、OS の IPv6 を無効にすることで IPv6 経由の DNS リークを防げます。ただし、IPv6 の恩恵を受けられなくなるため、VPN の IPv6 対応を待つのが理想的です。

DNS リークテストの実践方法

DNS リークの有無を正確に判定するには、複数の方法で検証することが重要です。1 つのテストだけでは見落としが生じる場合があります。

Web ベースのテストツール: dnsleaktest.com では「Standard test」と「Extended test」の 2 種類を提供しています。Extended test は複数回の DNS クエリを送信し、断続的に発生するリークも検出できるため、こちらを推奨します。ipleak.net は DNS リークに加えて WebRTC リークや IP アドレスの漏洩も同時にチェックできる総合ツールです。

コマンドラインでの検証: Windows では nslookup example.com を実行し、応答する DNS サーバーのアドレスを確認します。macOS / Linux では dig example.com の出力にある SERVER 行を確認します。表示された DNS サーバーの IP アドレスが VPN プロバイダーのものではなく、ISP のものであればリークが発生しています。より詳細な確認には dig +trace example.com で DNS 解決の全経路を追跡できます。

結果の読み方: テスト結果に表示される DNS サーバーの IP アドレスと所属組織名を確認します。VPN 接続中であれば、DNS サーバーは VPN プロバイダーの所有するサーバー (または VPN プロバイダーが指定するパブリック DNS) であるべきです。ISP 名 (NTT、KDDI、SoftBank 等) が表示された場合は DNS リークが発生しています。複数の DNS サーバーが表示され、その中に ISP のサーバーが混在している場合も部分的なリークです。

リークが検出された場合の対処: まず VPN アプリの DNS リーク保護設定を確認し、有効化します。それでも解消しない場合は、OS のネットワーク設定で DNS サーバーを手動で VPN プロバイダーのものに変更します。Windows の「スマートマルチホーム名前解決」を無効にすることで解消するケースも多いです。DNS over HTTPS を有効にすれば、仮にリークが発生しても DNS クエリの内容が暗号化されるため、二重の防御になります。

よくある誤解

VPN を使っていれば DNS リークは起きない
VPN の品質や設定によっては DNS リークが発生します。特に無料 VPN や設定が不十分な VPN では高い確率で DNS リークが起きています。VPN 接続後に必ずリークテストを実施すべきです。
DNS リークは大した問題ではない
DNS クエリにはアクセス先のドメイン名がすべて含まれます。医療サイト、政治サイト、特定のサービスへのアクセス履歴が ISP に記録されるため、プライバシーへの影響は深刻です。VPN を使う目的がプライバシー保護なら、DNS リークはその目的を根本から損ないます。

関連用語

関連記事