DNSリークとは何か
DNSリークとは、本来暗号化された経路(たとえばVPNのトンネル)を通るはずのDNS問い合わせが、別の経路で行われてしまう状態を指します。結果として、問い合わせ先(ドメイン名)に関する情報が、意図していないネットワーク経路から観測される可能性があります。
ポイントは「通信そのもの」ではなく、「名前解決(DNS)」がどこで行われているかにあります。一般にURLを開くと、まずドメイン名がIPアドレスに変換され、その後にHTTP/HTTPSなどの通信が始まります。この最初の変換処理が、どのDNSサーバに問い合わせているかで挙動が変わります。
仕組み:なぜDNSは漏れやすいのか
DNS問い合わせは、OSの設定、ネットワーク機器の設定、アプリの設定、そしてトンネルの作り方など、複数の要因で決まります。DNSリークが起きる代表的な経路は次のパターンです。
- DNSサーバの割り当てが期待どおりになっていない:VPN接続中に、端末が参照するDNSサーバが切り替わっていない場合があります。
- VPNの外で名前解決が走る:OSや一部アプリが、VPN外の経路を使ってDNS解決を行うことがあります。
- IPv6が別経路で解決される:IPv6通信の扱いが想定と違うと、IPv4と同じルールで制御できず、DNS解決が別経路に寄る場合があります。
- ローカルキャッシュの影響:一度解決した名前がキャッシュされていると、しばらく「漏れていないように見える」一方で、別のタイミングで再び問い合わせが発生し、結果が変わることがあります。
ここで重要なのは、「VPNに接続している=必ずDNSも同じ経路になる」とは限らない点です。実際には、端末側のDNS参照先や、アプリがどのように名前解決を行っているかで結果が分かれます。
何を制限すべきか:対策の範囲と限界
DNSリーク対策を考えるときは、次の“到達点”に分けて考えると整理しやすくなります。
- 端末が参照するDNSサーバが、意図した経路のものになっている
- DNS問い合わせが、意図したトンネル内で処理されている
- DNS解決に関わる別チャネル(IPv6やアプリの上書き)が、同じ方針に従っている
ただし限界もあります。特にDNSリークの完全排除は環境依存で、OSの挙動やアプリの実装、ネットワーク構成(有線/無線、ルータの機能など)で結果が変わります。そのため「理論上の設定」だけで判断せず、後述のように確認手順で検証するのが現実的です。
また、確実に言える範囲としては、DNSが漏れないようにするには「DNS問い合わせ先と経路」を特定し、期待通りに統制できていることを確認する必要がある、という点です。不確実性が残る要素(キャッシュ、IPv6、アプリ上書きなど)がある以上、検証は一度きりではなく、条件を変えて見直すのが安全です。
