DNSリークとは?
サイトにアクセスするたびに、example.comのような名前をIPアドレスに変換するDNSの問い合わせが行われます。ふだんはプロバイダのDNSサーバーが答えます。VPN使用時は、この問い合わせも暗号化されたトンネルを通ってVPNのDNSサーバーに届くべきです。
DNSリークとは、問い合わせがトンネルの外でプロバイダのDNSサーバーに送られてしまう状態です。サイトからはVPNのIPが見えますが、プロバイダには訪れたドメインがすべて分かり、プロバイダのDNSフィルタリングやブロッキングもそのまま適用されます。
DNSリークテストの仕組み
ブラウザは使っているDNSサーバーを報告できません。そこでリークテストでは、テスト側がDNSサーバーを運用しているドメインの一意でランダムなホスト名をいくつかブラウザに名前解決させます。そのサーバーが、問い合わせてきたリゾルバのIPアドレスを記録します。VPN接続中なのにそのリゾルバがプロバイダのものなら、DNSがリークしています。
上のテストはまさにそれを行い、各リゾルバの事業者、ネットワーク、国を一覧にして、サイトから見えるIPと比較します。テスト用の名前とリゾルバのIPは10分後に削除します。
DNSサーバーを手動で確認する
ターミナル(macOS、Linux)またはコマンドプロンプト(Windows、nslookupのみ)で次のいずれかを実行します。どれも公開サービスに、問い合わせてきたDNSリゾルバのIPアドレスを教えてもらうものです。
nslookup -type=txt o-o.myaddr.l.google.com
dig +short TXT o-o.myaddr.l.google.com
dig +short whoami.akamai.net結果の見方
- 返ってきたアドレスの持ち主を、WHOISやIP検索サービスで調べます。
- VPN接続中なのにプロバイダのものなら、DNSがリークしています。
- VPN事業者のもの、または自分で選んだリゾルバ(Cloudflareの1.1.1.1、Googleの8.8.8.8など)のものなら、プロバイダへのリークはありません。
- これらのコマンドはOSのDNSをテストします。ブラウザで「セキュアDNS」(DNS over HTTPS)を有効にしている場合、ブラウザの問い合わせはその事業者に送られます。
DNSリークの直し方
- VPNアプリのDNSリーク防止(「VPNのDNSを使う」などの名前の場合もあります)とキルスイッチを有効にします。
- VPNがIPv6にも対応しているか確認するか、ネットワークアダプタでIPv6を無効にします。IPv6の問い合わせはIPv4専用のVPNをすり抜けることがあります。
- 暗号化DNSを有効にします。Chrome、Edge、Braveでは「セキュアDNS」、Firefoxでは「DNS over HTTPS」で、VPNのリゾルバか信頼できる事業者を選びます。
- ルーターや手動設定のDNSがVPNの設定を上書きしていないか確認し、もう一度テストします。