定義:DNSリークとは何か

DNSリークは、端末やアプリが行う「DNS問い合わせ(ドメイン名をIPアドレスに変換する問い合わせ)」の一部が、意図した経路(例:暗号化されたトンネルを通る経路)を通らずに送信されてしまう状態を指します。結果として、外部から見ると通常とは異なるDNSの通信元や問い合わせ経路が観測されることがあります。

仕組み:名前解決の流れのどこでズレるのか

DNSは一般に、次のような流れで動きます。

  1. ユーザーがURL(例:example.com)を入力する
  2. 端末(またはアプリ)が、そのドメイン名のIPアドレスを得るためにDNS問い合わせを行う
  3. 得られたIPアドレスに対して、通信(TCP/UDP/HTTPSなど)を開始する

DNSリークが起きる「ズレ」は、主に②のDNS問い合わせの経路で発生します。本来は、DNS問い合わせも同じ意図した経路で処理・転送されるはずなのに、端末の設定や処理系の違いによって、問い合わせが別経路に出てしまうと「DNSリーク」として認識されやすくなります。

重要なのは、一般の通信(IPパケット)だけでなく、名前解決のための問い合わせが別経路に出る可能性がある点です。そのため「通信は保護されていると思うが、DNSだけが外部に見えている」ような状況が起こり得ます。

起きやすい条件と例外

DNSリークは、状況によって見え方が変わります。よくある要因としては、次のようなケースが挙げられます。

  • 端末側でDNSサーバーの指定や解決方式が別になっている
  • VPNがDNSの扱いを意図どおりに統一できていない(アプリ単位の挙動差など)
  • 端末やOS、ネットワーク環境の都合でDNS問い合わせの送信タイミングや経路が変わる