メインコンテンツへスキップ
  1. 記事/

VPNとDNSリーク - その影響と検出方法

Ixonae
著者
Ixonae
目次

注意: この記事はLLMによって英語から翻訳されたものです。正確性については保証いたしかねますので、あらかじめご了承ください。英語の原文はこちら

VPNを使用していると、「ISPは私が何をしているか全く分からないし、誰も私を追跡できない」と思うかもしれません。しかし、VPNでよくある問題であるDNSリークのために、これは完全には正しくない可能性があります。この記事では、DNSリークとは何か、その影響、検出方法、そしてリークの一般的な原因について見ていきます。

DNSリークとその影響とは?
#

以下の図は、VPNが期待通りに動作している場合と、DNSリークがある場合の違いを示しています。最初のケースでは、DNSサーバーへの接続がVPNを経由していることが分かります。そのため、ISPがあなたのDNSリクエスト(暗号化されていない)を見ることはできません。VPNプロバイダーが提供するDNSサーバーを使用していない場合でも、そのDNSサーバーの所有者は、mysite.comを解決しようとしているのがあなたであることを知ることができません。

DNSリークがある場合、あなたのコンピューターはVPNを使用せずにDNSサーバーに接続します。つまり、ISPとDNSサーバーの所有者(デフォルトではISP)の両方が、あなたが解決しようとしているサイトを見ることができます。

Normal VPN operation vs DNS leak
Normal VPN operation vs DNS leak

VPNを使用する理由によって、DNSリークの深刻さは異なります。権威主義的な政権に支配されている国にいて、検閲されたウェブサイトにアクセスしようとしている場合、当局がこれらのウェブサイトへのアクセスを把握し、問題を引き起こす可能性があります。お気に入りのLinuxディストリビューションをトレントでダウンロードするためだけにVPNを使用しているのであれば、比較的害はありません。

DNSリークのテスト方法
#

サードパーティサービスとその仕組み
#

DNSリークのテストは非常に簡単です。dnsleaktest.comipleak.netなどのウェブサイトを使用できます。これらのサイトは、現在のIPアドレスと使用しているDNSサーバーを表示します。おすすめは、VPNプロバイダーのDNSを使用することです。その理由は、プロバイダーはすでにあなたのトラフィックをすべて見ているため、ドメイン名解決のためにもう一つ仲介者を追加する意味がないからです。この推奨に従えば、VPNプロバイダーのDNSのみがリストに表示されるはずです。

ipleak.netなどのウェブサイトが使用しているDNSサーバーを特定する仕組みは非常にシンプルです。ページを読み込むと、固有のユーザーIDが割り当てられます。例えば、abcd123のようなものです。そこから、その固有のユーザーIDを含むサブドメインにあるAPIに対して複数のリクエストを送信します。例えば:

  • https://abcdefg123-1.ipleak.net/dnsdetection
  • https://abcdefg123-2.ipleak.net/dnsdetection
  • https://abcdefg123-3.ipleak.net/dnsdetection

このAPIは、クエリを行ったDNSサーバーのIPアドレスを返します。複数回呼び出しを行う理由は、複数のDNSサーバーを使用している場合にすべてを検出するためです。

しかし、IpleakがどのようにしてあなたのDNSサーバーのアドレスを知るのかという疑問が残ります。その仕組みは次の通りです:あなたがAPIにアクセスしようとしているサブドメイン(例:abcdefg123-1.ipleak.net)は非常にユニークなので、DNSキャッシュに保存されていたり、他の誰かが同時に解決しようとしている可能性はありません。つまり、Ipleak権威DNSサーバーにそのサブドメインの解決を依頼する必要があります。その際、あなたのDNSサーバーがIpleakのDNSサーバーに問い合わせを行い、IpleakのDNSサーバーはリクエスト元のIPを記録し、APIからアクセスできるように保存します。

パケット検査
#

DNSリークのテストにオンラインサービスを使用するのは便利ですが、結果が不明確な場合もあります。例えば、標準ではないDNSサーバーを使用している場合、そのサーバーへの接続がVPN経由であり、直接接続ではないことをどうやって確認できるでしょうか?

その場合、Wiresharkを使用して、実際にコンピューターから送出されるパケットを確認できます。WiFiやEthernetインターフェースを選択し、通過するパケットをキャプチャするだけです。表示フィルターにdnsと入力して、関連するクエリのみを表示させます。次に、ランダムなドメインにリクエストを送信してみてください。キャプチャされたパケットに何も表示されなければ、おめでとうございます。DNSクエリがVPNアダプター経由でルーティングされており、リークしていないことを意味します。そうでなければ、設定を確認する必要があります。

DNS visible when capturing eth0 -> DNS leak
DNS visible when capturing eth0 -> DNS leak

DNSリークの原因
#

信頼できるプロバイダーの標準的なVPN設定を使用すればDNSリークを防げるはずですが、リークを引き起こす可能性のある要因は複数あります。よくある原因のいくつかは次の通りです:

  • 透過プロキシ
  • 分割DNSトンネル
  • 通常とは異なるネットワークルーティング設定
  • WindowsのSmart Multi-Homed Name Resolution

具体的な例として、pfSenseで独自のDNSリゾルバーを使用している場合があります(以前の記事を参照)。この場合、Outgoing Network InterfacesをVPNに設定し忘れると、DNSリークが発生します。

まとめ
#

  • DNSリークにより、ISPと使用しているDNSサーバーの所有者が、解決しようとしたドメイン名を知ることで、あなたのウェブ活動を追跡できるようになる可能性があります
  • 信頼できるVPNプロバイダーとそのDNSサーバーを含むデフォルト設定を使用し、特別なネットワーク設定を行っていなければ、おそらく安全です
  • 設定にDNSリークがないか、簡単に(そして定期的に)確認できます

出典とクレジット
#