DNS Leakとは?VPN利用中でも閲覧履歴が漏れる仕組みを解説
DNS leakは、VPNなどで通信を保護しているつもりでも、DNS queryだけが別経路で外へ出てしまう問題です。アクセス先のドメイン名がISPやネットワーク管理者に見える可能性があります。
目次
DNS Leakとは?
DNS leakとは、Webサイトへ接続する通信はVPN tunnelを通っているのに、ドメイン名をIPアドレスへ変換するDNS queryがVPN外へ送られてしまう状態です。
HTTPSは通信内容を暗号化しますが、DNS queryが漏れると「どのドメインへ接続しようとしたか」は見える場合があります。ページ内容までは分からなくても、閲覧傾向や利用サービスが推測される可能性があります。
DNS Resolutionの仕組み
ブラウザでexample.comを開くと、端末はまずDNS resolverに問い合わせ、対応するIPアドレスを取得します。その後、取得したIPへHTTP/HTTPS接続します。
example.com -> DNS resolver -> 93.184.216.34
browser -> HTTPS connection -> 93.184.216.34VPNはDNSをどう扱うべきか
適切に設定されたVPNは、通常の通信だけでなくDNS queryもVPN tunnel内へ流します。さらに、tunnel外へ出ようとするDNS trafficをblockし、VPN切断時にはkill switchで通信を止めるのが理想です。
DNS Leakで漏れる情報
| 情報 | 分かる可能性があること |
|---|---|
| 問い合わせたドメイン名 | 銀行、streaming、医療、SNSなど、開こうとしたWebサイトやサービス |
| queryの時刻 | 仕事時間、休憩時間、日常の行動パターン |
| queryの頻度 | 毎日使うサイトと一時的に開いたサイトの違い |
| 実際のIPやISP | VPN外へ漏れた場合、実際の回線や地域と結びつく可能性がある |
| バックグラウンドアプリの接続先 | update server、API endpoint、アプリが自動的に呼び出すサービス |
DNS Leakの原因
| 原因 | 環境 | 説明 |
|---|---|---|
| Windows Smart Multi-Homed Name Resolution | Windows | 複数のnetwork adapterへ同時にDNS queryを送り、VPN外の経路を使うことがある |
| IPv6 DNS queries | すべてのplatform | VPNがIPv4だけをtunnelし、IPv6 queryが外へ出ることがある |
| VPN設定不備 | すべてのplatform | VPNがDNS serverを上書きしない、またはtunnel外のDNS trafficをblockしない |
| VPNの一時切断 | すべてのplatform | reconnect中にkill switchがないとISP DNSへ戻ることがある |
| Split tunneling | すべてのplatform | 一部trafficをVPN外へ出す設定で、DNS queryも外へ出る場合がある |
| Browser DoHの個別設定 | Browser | ブラウザがOSやVPNと別のDNS providerを使い、結果が想定とずれることがある |
DNS Leakのテスト方法
- VPNを切った状態でDNS leak testを実行し、通常のDNS providerを確認する。
- VPNへ接続し、同じテストをもう一度実行する。
- 表示されるDNS serverがVPN providerや意図したresolverだけか確認する。
- ISPや実際の地域に近いresolverが出る場合はDNS leakの可能性がある。
DNS Leakの直し方
- VPNアプリのDNS leak protectionとkill switchを有効にする。
- OSのDNS設定をVPN指定のresolverまたは信頼できるresolverに変更する。
- IPv6をVPNが対応していない場合は無効化するか、IPv6対応VPNを使う。
- split tunnelingを使う場合、DNS queryの経路を確認する。
- ブラウザのDoH設定がVPN方針と衝突していないか確認する。
Encrypted DNS: DoH、DoT、DoQ
Encrypted DNSはDNS queryを暗号化し、同じネットワーク上の第三者にquery内容を見られにくくします。ただし、どのresolverを信頼するかという問題は残ります。
| Protocol | Port | 暗号化 | 特徴 |
|---|---|---|---|
| Traditional DNS | 53 | UDP plain text | 暗号化なし。network管理者やISPがqueryを見られる |
| DNS-over-HTTPS (DoH) | 443 | HTTPS encrypted | DNSをHTTPSで送る。Web trafficに近く、個別にblockしにくい |
| DNS-over-TLS (DoT) | 853 | TLS encrypted | DNS専用の暗号化channel。識別しやすくfirewallで制御しやすい |
| DNS-over-QUIC (DoQ) | 853 | QUIC encrypted | 新しい方式。低latencyが期待されるが対応状況を確認する必要がある |
IPv6 LeakとWebRTC Leak
DNS leakと混同されやすいものに、IPv6 leakとWebRTC leakがあります。IPv6 leakはIPv6 trafficがVPN外へ出る問題で、WebRTC leakはブラウザのリアルタイム通信機能がlocal IPやpublic IPを露出する問題です。DNS leak testだけでなく、IPv6/WebRTC leak testもあわせて確認すると安全です。
誰がDNS Queryを見られるのか
| 相手 | 見える条件 | メモ |
|---|---|---|
| Wi-Fi提供者 | plain DNSなら見える | カフェ、ホテル、空港、公共ネットワークなど |
| ISP | ISP DNSや暗号化されていないport 53なら見える | 利用履歴のlogや分析につながる可能性がある |
| DNS resolver | 常にqueryを処理する | Google、Cloudflare、Quad9、VPN providerのDNSなど |
| VPN provider | VPNのDNSを使う場合は見える | no-log policyや運用実態を信頼する必要がある |
| 会社や学校のnetwork管理者 | 管理ネットワーク上では見えることがある | security policyやfilteringのためにDNS logを取る場合がある |
DNS Privacyを守るベストプラクティス
- 信頼できるVPNを使い、DNS leak protectionとkill switchを有効にする。
- VPN接続後にDNS leak test、IPv6 leak test、WebRTC leak testを行う。
- OS、ブラウザ、VPNのDNS設定が矛盾していないか確認する。
- 公共Wi-Fiではplain DNSを避け、VPNまたはEncrypted DNSを使う。
- プライバシー重視のresolverを選び、ログ方針を確認する。