VPNに接続しているにもかかわらず、DNS問い合わせだけが通常の回線から送信されることがあります。この状態は一般に「DNSリーク」と呼ばれ、アクセス先のドメイン名を調べるDNS通信が、VPNトンネルの外側にある通信事業者やローカルネットワークのDNSサーバーへ送られる可能性があります。Webページの本文通信が暗号化されていても、DNSの経路が別になっていれば、接続先の傾向を第三者に推測される余地が残ります。
DNSリークは、VPNアプリを起動しただけでは判断できません。VPN接続前と接続後で同じ検査を行い、表示されたDNSサーバーの地域、事業者、アドレスファミリーを比較する必要があります。また、IPv4だけでなくIPv6、ブラウザーのセキュアDNS、OSの手動DNS設定、分割トンネルも確認しなければなりません。本記事では、検査サイトの見方、Windows・macOS・Android・iOS・Linuxでの確認ポイント、修正後の再チェックまでを順番に説明します。
DNSリークとは何か:VPN接続中でも起きる理由
DNSは、example.comのようなドメイン名を、通信先サーバーのIPアドレスへ変換する仕組みです。ブラウザーでページを開くとき、まずDNS問い合わせが行われ、その結果を使ってHTTPS接続が開始されます。VPNが正常に動作していれば、通常はこの問い合わせもVPNトンネル内へ送られ、VPN側で指定されたDNSリゾルバーによって処理されます。
しかし、VPNクライアントがDNS設定を十分に変更できない場合、OSは接続前から使っていたWi-Fiルーター、通信事業者、企業ネットワークなどのDNSサーバーへ問い合わせを続けることがあります。VPNアプリがシステムプロキシだけを変更し、OS全体の名前解決を制御していない場合にも起きます。ブラウザーだけが独自のDNS機能を使う構成では、OSのDNSとブラウザーのDNSが異なる経路を通ることもあります。
さらに見落としやすいのがIPv6です。IPv4通信はVPNトンネルへ入っていても、IPv6経路が残っていると、IPv6対応のDNSサーバーへ直接問い合わせが送られる可能性があります。ホテル、学校、オフィス、携帯回線など、ネットワーク環境が変わると問題が再現したり消えたりすることもあります。したがって、1回の検査結果だけで「完全に安全」と断定せず、通常使うネットワークごとに確認するのが現実的です。
3段階
基本の確認手順
5種類
対応プラットフォーム
110+
提供地域
210+
提供回線
検査サイトでDNSリークを確認する手順
検査は、VPNを切断した状態、VPNを接続した状態、設定を修正した状態の順に行うと比較しやすくなります。検査サイトを開く前に、ブラウザーのプライベートウィンドウを使うか、ページを再読み込みしてください。古い結果がキャッシュされていると、現在のDNS設定を正しく反映しない場合があります。サイトを利用する際は、検査結果に表示されるDNSサーバーの運営者と地域を確認し、単に「合格」「保護」と表示されたかだけで判断しないことが重要です。
- VPNを切断し、DNSリーク検査を実行して、通常のDNSサーバーを記録します。
- VPNを接続し、同じブラウザー、同じネットワーク、同じ検査サイトで再度実行します。
- VPN側の地域や回線を変更した後、表示されるDNSサーバーがVPN側の経路に変わるかを確認します。
VPN接続後も、切断時と同じ通信事業者のDNSサーバーが表示されるなら、DNSリークの可能性があります。ただし、VPNサービスが自社DNSではなく、別の公開リゾルバーやデータセンターのDNSを採用している場合もあります。そのため、表示された事業者名がVPNブランドと一致しないことだけで即座に異常と決めつけず、VPNの公式説明、アプリのDNS設定、検査結果のIPアドレスを合わせて確認してください。
検査サイトによって表示されるサーバー数は異なります。1台だけ表示される場合もあれば、複数のリゾルバーが一覧になる場合もあります。複数表示されたときは、一部だけがローカル回線の事業者になっていないかを確認します。また、IPv4用の結果とIPv6用の結果が分かれている場合は、両方がVPN接続時の想定と一致しているかを見ます。DNS検査は、入力したドメイン名や閲覧履歴そのものを表示するものではありませんが、検査サイトの運営元やプライバシーポリシーも確認して利用してください。
よくあるDNSリークのパターンと見分け方
| 表示される状況 | 考えられる原因 | 優先して確認する項目 |
|---|---|---|
| VPN接続後も元の通信事業者が表示される | OSのDNS設定がVPNへ切り替わっていない | VPNアプリのDNS保護、システムDNS、再接続 |
| IPv4は変わるがIPv6のDNSが元の回線になる | IPv6経路がVPNトンネルの外に残っている | IPv6保護、キルスイッチ、ルーター設定 |
| ブラウザーだけ別のDNSが表示される | ブラウザーのセキュアDNSが独自に動作している | Secure DNS、DoH、拡張機能、プロファイル |
| アプリごとに結果が異なる | 分割トンネルやアプリ別プロキシが有効になっている | 除外リスト、ルール分岐、常駐アプリ |
| VPN再接続後だけ元のDNSに戻る | 接続確立時のDNS適用や権限処理に問題がある | アプリ更新、権限、接続方式、再起動 |
DNSリークと通信障害は同じではありません。DNSリークが起きていてもWebページが正常に開く場合がありますし、逆にDNSが正しく保護されていても、回線の混雑、認証失敗、経路の切り替えによってページが開かないことがあります。検査サイトの結果と、通常利用時の接続状態を混同しないようにしてください。
また、プロトコルの変更だけで必ず解決できるわけではありません。WireGuard、Shadowsocks、VMess、Trojan、Hysteria2など、クライアントが対応する通信方式はそれぞれ特徴が異なりますが、DNSの扱いはアプリの実装、トンネルモード、OS権限、ルール設定に左右されます。同じプロトコルでも、システムVPNとして動作する場合と、ブラウザーのプロキシだけを変更する場合では結果が異なります。
Windows・macOSでDNSリークを修正する
Windowsで確認するポイント
Windowsでは、まずVPNクライアントの設定にある「DNSリーク保護」「VPN接続時のみDNSを使用」「キルスイッチ」などの項目を確認します。名称はクライアントによって異なりますが、DNS保護を有効にしただけで接続が完全に遮断されるとは限りません。VPN接続が切れたときに通信自体を止めるキルスイッチが別項目になっていることもあります。
次に、Windowsのネットワークアダプターに手動設定されたDNSを確認します。以前に高速化目的で登録したDNS、セキュリティソフトが追加した仮想アダプター、古いVPNの仮想NICが残っていると、優先順位の競合が起こります。VPN接続中にコマンドプロンプトでipconfig /allを実行し、使用中のアダプターとDNSサーバーを確認すると、不要なアダプターを見つけやすくなります。設定変更後はDNSキャッシュを消去し、VPNを切断してから再接続します。
macOSで確認するポイント
macOSでは、「システム設定」のネットワーク画面で、Wi-Fiまたは有線接続のDNS設定を確認します。VPNアプリがシステム拡張機能やVPN構成プロファイルを使っている場合、通常のネットワーク画面だけでは全体像が分かりにくいことがあります。見覚えのないVPNプロファイル、フィルタ、プロキシ、セキュリティソフトのネットワーク拡張がないか確認してください。
ブラウザーのプライベートリレー、セキュアDNS、独自のDoH設定がVPNと競合する場合もあります。特に、VPNアプリがシステム全体の名前解決を管理する設定と、ブラウザーが独自リゾルバーを使う設定を同時に有効にすると、検査結果が分かれます。どちらを利用するかを決め、片方だけを一時的に無効にして、結果の変化を比較すると原因を絞り込めます。
- ✅ VPNクライアントのDNS保護とキルスイッチを個別に確認する
- ✅ 使用していない古いVPNアダプターや構成プロファイルを整理する
- ✅ IPv4だけでなくIPv6のDNS結果も検査する
- ✅ ブラウザーのセキュアDNSとOSのDNS設定を同時に見直す
- ❌ DNSサーバーのアドレスを何度も変更し、原因を分からなくしない
Android・iOS・Linuxでの修正ポイント
Androidでは、VPNアプリがシステムVPNとして動作しているかを確認します。アプリ内の接続方式によっては、プロキシとして一部の通信だけを処理し、他のアプリやDNSを対象外にすることがあります。「常時接続VPN」や「VPN接続なしの通信をブロック」に相当する設定が端末とアプリの両方にある場合は、役割を理解してから有効にしてください。Androidの「プライベートDNS」は、VPNアプリのDNS処理と競合することがあるため、検査時には設定状態を記録し、変更後に再テストします。
iOSでは、VPN構成、DNS関連のプロファイル、コンテンツフィルタ、iCloudプライベートリレーなどが影響します。VPN接続中にDNS検査を実行し、アプリをバックグラウンドへ移した後、Wi-Fiを再接続した後にも結果を確認します。iOSはネットワーク切り替え時に接続を再構築するため、接続直後だけでなく、実際に使う状態での再確認が重要です。App Storeから入手したクライアントでも、DNS保護機能やオンデマンド接続の対応範囲は異なります。
Linuxでは、NetworkManager、systemd-resolved、resolveconf、NetworkManagerのVPNプラグインなど、名前解決を管理する仕組みが環境ごとに異なります。まずresolvectl statusで現在のDNSサーバーとインターフェースを確認し、VPN接続時にDNSがどのリンクへ割り当てられているかを調べます。/etc/resolv.confを直接編集しても、再起動やネットワーク再接続で自動生成される場合があるため、管理元を確認せずに固定する方法はおすすめできません。
Clash Vergeやsing-boxなどの互換クライアントでは、DNSモード、Fake-IP、ルール分岐、TUNモードの設定が結果を左右します。Shadowrocketでも、グローバル接続、ルール接続、DNS設定、IPv6の扱いがそれぞれ関係します。サブスクリプションをURLから取り込んだ場合、サーバー情報だけでなくDNSルールやTUN関連の設定が自動更新されることもあるため、変更後に設定内容を確認してください。
実際に修正して再チェックする手順
ここでは、原因を一度に変更しすぎないための実践手順を示します。最初に現在のVPNプロファイル名、使用中のネットワーク、DNS検査結果、IPv6の有効状態を記録してください。スクリーンショットを残しておくと、設定変更前後の比較が容易になります。
- VPNを切断する:DNS検査を実行し、通常のDNSサーバー、IPv4、IPv6の結果を記録します。
- VPNアプリを確認する:DNSリーク保護、システムVPN、キルスイッチ、IPv6保護の項目を確認します。
- 競合設定を整理する:古いVPN、手動プロキシ、ブラウザーのセキュアDNS、分割トンネルの除外対象を見直します。
- 一つだけ変更する:まずDNS保護を有効にし、VPNを完全に切断してから再接続します。
- 同じ検査を行う:同じネットワーク、同じブラウザー、同じ検査サイトで結果を比較します。
- ネットワークを変えて確認する:Wi-Fi、モバイル回線、別の有線ネットワークなど、実際に使う環境でも検査します。
修正後、VPNのIPが表示されていてもDNSが元の事業者のままなら、DNS保護が動作していない可能性があります。逆に、DNSがVPN経路へ変わったのにWeb閲覧が不安定になった場合は、設定が過剰に制限されていることもあります。DNSサーバーへの到達性、IPv6、ローカルネットワークの名前解決、社内サイトやプリンターなどのローカル機器へのアクセスを分けて確認してください。
設定変更後に問題が解消しない場合は、同じクライアントで別の回線や接続方式を試します。ただし、回線、地域、プロトコル、DNS、ルールを同時に変更すると、何が効いたのか分からなくなります。1項目ずつ変更し、毎回同じ手順で検査してください。公式クライアントを使う場合は、Windows、macOS、Android、iOS、Linux向けの最新版と、現在のアカウントから取得した設定を使うのが基本です。導入方法は新手指引で確認できます。
DNSリークを防ぐための日常チェック
DNSリークは、初回設定が正常でも、アプリ更新、OS更新、スリープ復帰、ネットワーク変更によって再発することがあります。毎回長時間検査する必要はありませんが、VPNクライアントを更新したとき、サブスクリプション設定を取り込んだとき、別の端末へ移行したときには、簡単な再確認を行うと安心です。DNS保護とキルスイッチが有効でも、VPN接続前の通信を止める設定が別になっている場合があるため、設定名の意味を確認してください。
ルール分岐を使う場合は、DNS問い合わせだけをローカルへ逃がす設定になっていないかを確認します。国内サービスや社内ドメインを直接接続する構成では、特定ドメインだけローカルDNSが必要な場合がありますが、対象範囲を広げすぎると意図しない名前解決が発生します。仕事用、個人用、ストリーミング用などのプロファイルを分け、どのアプリとドメインがどの経路を使うかを把握しておくと、トラブル時の切り分けも容易になります。
VPNを利用する目的がプライバシー保護であっても、VPNだけですべての匿名性が保証されるわけではありません。ログイン中のアカウント、ブラウザーのCookie、端末の広告識別子、利用する検査サイト、OSやアプリのテレメトリなど、別の情報経路も存在します。DNSリーク対策はその一部を改善する設定であり、サービスの利用規約や地域の法令を守って利用してください。
- ✅ VPN接続前後でDNS検査の結果を比較する
- ✅ IPv4とIPv6の両方を確認し、片方だけを見て判断しない
- ✅ スリープ復帰やWi-Fi切り替え後にVPNを再接続する
- ✅ 互換クライアントではTUN、DNSモード、ルール分岐を確認する
- ✅ IP確認とDNS確認を別々の検査として扱う
現在の接続元IPや地域表示を確認したい場合は、サイト内のIP検測も利用できます。IP検査でVPN側の結果が表示された後に、DNSリーク検査を行えば、出口アドレスと名前解決の経路を分けて確認できます。
よくある質問
IPアドレスがVPN側ならDNSリークはありませんか?
いいえ。IPアドレスとDNS問い合わせは別の通信です。VPN側のIPが表示されていても、DNSだけが元の通信事業者へ送られる可能性があります。必ずDNSリーク検査を別に実行し、IPv4とIPv6の結果を確認してください。
公開DNSが表示されれば安全ですか?
公開DNSだから自動的に安全とは限りません。重要なのは、VPN接続時のDNS問い合わせが意図したトンネルまたは保護された経路を通っていることです。表示された事業者、地域、アドレスをVPNの設定や公式情報と照合してください。
ブラウザーのセキュアDNSは有効にすべきですか?
環境によります。ブラウザーのセキュアDNSがVPNのDNS保護と競合すると、ブラウザーだけ別のリゾルバーを使う場合があります。VPN側でDNSを管理するのか、ブラウザー側で管理するのかを決め、どちらか一方を一時的に無効にして検査結果を比較してください。
設定を変えてもDNSリークが直りません。どうすればよいですか?
古いVPNプロファイル、手動プロキシ、IPv6、分割トンネル、セキュリティソフトのネットワーク拡張を順番に確認します。変更を同時に行わず、1項目ごとに再接続と再検査を行ってください。それでも解決しない場合は、別の公式クライアントや別の接続方式で比較し、問題が端末設定にあるのか、現在のプロファイルにあるのかを切り分けます。