DNSリークとは何か
DNSリークとは、ブラウザやアプリがアクセス先(ドメイン名)をIPアドレスに変換する際の「DNS問い合わせ」が、意図した経路ではなく別の経路から外部へ送られてしまう状態のことです。結果として、本来は隠したいはずの「どのサイト名にアクセスしようとしたか」といった情報が、DNS問い合わせの宛先や観測ポイントから推測されうる可能性があります。
重要なのは、DNSリークが起きるときに問題になるのは「暗号化された通信そのもの」よりも、「その前段にある名前解決(DNS問い合わせ)」の行き先や挙動です。オンラインセキュリティの全体像では、HTTPSなどの通信経路の保護とは別レイヤーで、DNSの扱いが成否を分けます。
なぜDNS問い合わせが漏れるのか(簡単な仕組み)
DNSは、ドメイン名をIPアドレスに変えるために問い合わせを行います。一般的に、端末は次のような流れをとります。
- ユーザーがURL(例:example.com)を指定する
- 端末が名前解決のためにDNS問い合わせを送る
- 返ってきたIPアドレスに基づいて、通信を開始する
このうち2)のDNS問い合わせが、端末の設定やネットワーク環境の都合で「別のDNSサーバーへ到達」したり、「期待しているトンネルの外側に出る」形になると、DNSリークとして観測されることがあります。原因は一つに限られません。たとえば、DNSの設定がOSとアプリで食い違っている、ルーティングや自動設定の挙動により経路が切り替わる、キャッシュやリゾルバの種類が想定と異なる、などが影響します。
また、DNS暗号化(DNS over HTTPSやDNS over TLSのような概念)を使う場合でも、実際にどの経路・どのサーバーへ問い合わせが届くかは状況依存です。したがって「方式名を知っている」だけでは不十分で、最終的に自分の環境で問い合わせ先が想定どおりかを確認することが必要になります。
DNSリークの限界と例外(ここを誤解しやすい)
DNSリーク対策は万能ではありません。まず、DNS問い合わせにはキャッシュが絡みます。以前に解決したドメインは、問い合わせが発生しないことがあります。その場合、観測テストでは「漏れていないように見える」ことがありますが、実際には別条件では挙動が変わる可能性があります。
次に、例外としてアプリや環境によってDNSの扱いが異なります。たとえば、OSのDNS設定を使わずにアプリが独自の解決方式を持つ場合、想定した経路で問い合わせが行われないことがあります。さらに、同じ端末でもネットワーク(Wi‑Fi/モバイル/社内ネットワークなど)が変わると、DNS問い合わせの到達先が変化することがあります。
そして最大の注意点として、完全性の断定は難しいです。
