VPNに接続しているのに、DNS問い合わせだけが通常のインターネット回線から送信されることがあります。これがDNSリークです。Webページの表示や出口IPが正常に見えていても、アクセス先のドメイン名をどのDNSサーバーへ問い合わせたかによって、利用先や閲覧傾向が第三者に推測される可能性があります。
DNSリークを確認するときは、クライアントの「接続済み」という表示だけで判断してはいけません。VPNトンネルの確立、名前解決の経路、実際のアプリ通信は別々の要素です。無料のDNS検査ページを使った確認に加えて、ブラウザの安全なDNS設定、OSのDNS設定、分流ルール、キルスイッチまで順番に見直すと、原因を切り分けやすくなります。
DNSリークとは何か
ブラウザでドメイン名を入力すると、まずその名前をIPアドレスへ変換する必要があります。この変換を担当するのがDNSです。VPNを利用すると、通常はDNS問い合わせもトンネル内のDNSへ送る構成が望まれます。しかし、OSが以前のDNS設定を保持していたり、VPNクライアントの分流ルールがDNSを直接接続に分類していたりすると、Web通信はVPN経由でもDNSだけが別経路になります。
DNSリークは、必ずしもVPNプロトコルそのものの失敗を意味しません。Shadowsocks、VMess、Trojan、Hysteria2、WireGuardなどの接続が正常でも、クライアントがローカルプロキシ方式で動作している場合、名前解決はOSやブラウザ側の設定に任されることがあります。システムプロキシを使うアプリと、独自のDNS処理を持つアプリでは結果が一致しないこともあります。
3段階
接続・DNS・アプリの確認
4項目
主な修正ポイント
5種類
代表的な接続方式
確認すべきなのは、DNSサーバーの表示名だけではありません。接続前の状態を記録し、VPN接続後にDNSサーバーの所属、アドレス、地域情報、プロトコルファミリーの結果を比較します。検査ページが一度表示した結果をキャッシュしている可能性もあるため、新しいプライベートウィンドウや別の検査ページで再確認すると判定の信頼性が高まります。
無料の検査ページでDNS経路を確認する手順
検査を始める前に、現在のネットワーク環境をなるべく変えないようにします。Wi-Fiからモバイル回線へ切り替えたり、別のVPNを同時に起動したりすると、比較対象そのものが変わります。VPNを切断した状態でDNS検査ページを開き、表示されたサーバーの所属や地域を記録してください。ページによっては「標準テスト」と「拡張テスト」のように複数の確認方法が用意されています。
- VPNクライアントと他のプロキシを停止する。
- DNS検査ページを開き、通常回線の結果を記録する。
- 同じブラウザでVPNを接続し、同じ検査を実行する。
- 表示されたDNSサーバーの所属、地域、アドレスを接続前と比較する。
- ページを更新し、必要に応じて別のブラウザや端末でも確認する。
接続後も通常回線の通信事業者に割り当てられたDNSが表示される場合は、DNSリークの可能性があります。ただし、公共DNSやクラウド事業者のDNSを利用していると、表示名からVPN経由かどうかを断定できないことがあります。検査ページの判定結果だけでなく、VPN接続前の記録、クライアントのログ、OSのDNS設定を合わせて判断しましょう。
| 検査結果 | 考えられる状態 | 次に確認する項目 |
|---|---|---|
| 接続後にDNSの所属が変わった | DNS問い合わせが別の経路へ移った可能性がある | 再接続後と別ブラウザでも結果を確認する |
| 通常回線のDNSが残っている | OS設定、分流ルール、ブラウザ設定が優先されている | DNSモードとルールの除外項目を確認する |
| DNSが表示されない | 検査方式、ブラウザキャッシュ、ページ側の制限が考えられる | 拡張テストや別の検査方法を試す |
| IPv4とIPv6で結果が異なる | 一方のプロトコルファミリーだけが通常回線を使っている | IPv6対応、ルート、キルスイッチを確認する |
ブラウザとOSのDNS設定を見直す
近年のブラウザには、OSとは別に「安全なDNS」やDNS over HTTPSを利用する機能があります。この機能が有効な場合、ブラウザはVPNクライアントやOSが指定したDNSではなく、ブラウザ側で選択した事業者へ暗号化された問い合わせを送ることがあります。暗号化されていても、VPNの想定経路を通っているとは限りません。
ブラウザの設定画面で安全なDNSを確認し、VPNクライアントが提供するDNSと方針が一致するようにします。検証中だけ機能を無効にして結果を比較する方法もありますが、無効化を恒久的な安全対策と考えるべきではありません。ブラウザのDNSを使う場合は、選択したサービス、接続方式、VPNトンネルとの関係を把握することが重要です。
OS側では、ネットワークアダプターに設定されたDNS、VPN仮想アダプターの優先順位、接続ごとのDNS設定を確認します。Windowsでは複数のネットワークアダプターが同時に有効になっていないか、macOSではVPNサービスの順序と詳細設定、LinuxではNetworkManagerやsystemd-resolvedの設定を確認します。AndroidとiOSでは、VPNプロファイル、プライベートDNS、構成プロファイル、端末に残った別のVPN設定が影響する場合があります。
- ✅ ブラウザ独自の安全なDNS設定とVPN側のDNS方針を一致させる
- ✅ 使っていないVPN、プロキシ、DNS変更アプリを停止する
- ✅ VPN仮想アダプターのDNSが通常のアダプターより優先されているか確認する
- ✅ IPv6を含むすべての有効なネットワーク経路を確認する
- ❌ DNSサーバーの表示名だけで安全性やVPN経由を断定しない
- ❌ 複数のクライアントを同時に起動して結果を比較しない
DNSリークを修正する実践手順
修正は一度にすべての設定を変更せず、原因を追跡できる順序で進めます。まずVPNクライアントを最新版に更新し、DNS保護、リモートDNS、トンネル内DNSなどの項目を確認します。名称はクライアントごとに異なりますが、「DNSを直接接続する」「ローカルDNSを優先する」といった設定があれば、目的に合うか慎重に判断してください。
クライアント設定を確認する
Clash Verge、sing-box、Shadowrocketなどの互換クライアントでは、DNS設定とルール設定が別の場所にあることがあります。プロファイルをインポートしただけでは、すべてのDNS問い合わせが自動的にトンネルへ送られるとは限りません。DNSサーバーの指定、Fake-IPまたはRedir-Hostなどの動作方式、nameserver-policy、直連外しのルールを確認します。
グローバルモードでDNSが改善し、ルールモードで再びリークするなら、プロトコルではなくルールに原因がある可能性が高まります。クライアントのログで、DNS問い合わせがどの入口から受け付けられ、どのサーバーへ転送され、最終的にどの出方向へ割り当てられたかを確認してください。設定を変更した後は、既存のDNSキャッシュを消去してから検査をやり直します。
キャッシュとキルスイッチを確認する
DNS設定を修正しても、OSやブラウザに古い情報が残っていると、変更が反映されていないように見えることがあります。ブラウザを完全に終了し、OSのDNSキャッシュを消去してから再接続します。再接続後に同じ検査ページを開き、接続前に記録した結果と比較します。
キルスイッチは、VPNが切断された際に通信を遮断する機能です。DNSリークの修正そのものではありませんが、再接続中やスリープ復帰時にDNSだけが通常回線へ流れる状態を抑えるために役立ちます。キルスイッチを有効にすると、ローカルネットワーク、プリンター、社内サービスまで遮断される場合があります。必要な除外設定を確認し、実際にVPNを切断して通信が止まるかを安全な環境でテストしてください。
端末とアプリごとの差を確認する
同じVPNアカウントでも、Windows、macOS、Android、iOS、LinuxではDNSの処理が異なります。デスクトップのトンネルモードは広い範囲の通信を引き継げますが、権限やルートの優先順位に左右されます。モバイル端末では、VPNプロファイルが有効でもアプリ別の除外設定や常時接続の設定が影響します。Linuxでは、サービス管理ツールやコンテナがホストのDNS設定を共有しないこともあります。
ブラウザだけでなく、実際に使うアプリでも確認してください。ブラウザが安全なDNSを独自に利用し、別のアプリがOSのDNSを利用している場合、二つの検査結果が一致しないことがあります。仕事用のブラウザ、動画アプリ、コマンドラインツールなど、重要な用途ごとに通信経路が同じかを確認すると、見落としを減らせます。
| 環境 | 起こりやすい要因 | 確認方法 |
|---|---|---|
| Windows | 複数アダプター、システムプロキシ、IPv6の優先 | アダプター、ルート、DNSキャッシュを確認する |
| macOS | サービス順序、ブラウザ独自DNS、スリープ復帰 | ネットワークサービスとVPN詳細設定を確認する |
| Android・iOS | プライベートDNS、常時接続、アプリ別除外 | VPNプロファイルと端末のDNS設定を確認する |
| Linux | NetworkManager、systemd-resolved、コンテナの独立設定 | 名前解決サービスとプロセスごとの設定を確認する |
よくある質問
DNS検査で複数のサーバーが表示されるのは異常ですか
必ずしも異常ではありません。負荷分散や冗長化によって複数のDNSサーバーが表示されることがあります。ただし、その中に通常回線の通信事業者が含まれている場合は、VPNのDNS方針と一致しているか確認してください。
DNSを手動で変更すれば解決しますか
手動変更だけでは不十分な場合があります。VPN接続時に別の設定へ戻る、ブラウザが独自DNSを使う、IPv6側だけ異なる経路になる、といったケースがあるためです。DNS変更後は必ずVPN接続前後の検査を行い、アプリごとの差も確認してください。
DNS over HTTPSはDNSリークを防ぎますか
DNS over HTTPSは問い合わせ内容を暗号化できますが、問い合わせ先がVPNの想定経路内にあることを自動的に保証するものではありません。ブラウザがどの接続を使い、VPNクライアントやOSの設定とどう関係するかを確認する必要があります。
修正後も検査結果が変わらない場合はどうしますか
VPNを切断して再接続し、ブラウザを終了してからDNSキャッシュを消去します。そのうえで、別の検査ページ、別のブラウザ、別のネットワーク入口を使って比較します。それでも通常回線のDNSが残る場合は、クライアントのログ、分流ルール、IPv6、キルスイッチの順に確認し、必要ならプロファイルを再インポートします。