DNSとは何か
DNSがドメイン名をIPアドレスへ対応づける仕組みと、DNSリークが匿名性に関係する理由を学びます。
Webサイトを見るとき、あなたは検索結果、SNSのリンク、ブックマーク、アプリ内のリンクなどからページを開きます。
そのとき、画面上やアドレスバーに表示されるURLには、example.com のようなドメイン名が含まれています。
たとえば、次のURLでは、
https[:]//example.com/article/page
example.com の部分がドメイン名です。
人間はWebサイトを、ではなく、このようなドメイン名を含むURLとして目にすることが多いです。
しかし、コンピューター同士が実際に通信するときは、ドメイン名だけでは相手にデータを届けられません。通信先を特定するためには、IPアドレスが必要です。
DNSは、ドメイン名とIPアドレスを対応づける仕組みです。
なぜドメイン名だけでは通信できないのか
人間は、WebサイトをURLやドメイン名で認識します。
たとえば、次のようなURLを見たとします。
https[:]//example.com/news
この中の example.com がドメイン名です。
人間にとっては、数字の並びであるIPアドレスよりも、example.com のような名前のほうが分かりやすく、扱いやすいです。
しかし、ネットワーク上で通信するとき、コンピューターはドメイン名だけを見て直接通信しているわけではありません。
実際の通信では、通信先のIPアドレスが必要になります。
つまり、Webサイトを見るときには、裏側で次のような対応づけが必要になります。
example.com → IPアドレス
この対応づけを行う仕組みがDNSです。
DNSとは何か
DNSとは、Domain Name System の略です。
DNSは、ドメイン名とIPアドレスを対応づけるための仕組みです。
たとえば、あなたがブラウザで次のURLを開こうとしたとします。
https[:]//example.com
このとき、ブラウザやOSは、必要に応じてDNSを使い、example.com に対応するIPアドレスを調べます。
IPアドレスが分かると、そのIPアドレスに向けて通信を開始できます。
つまり、DNSは、人間が扱いやすいドメイン名と、コンピューターが通信で使うIPアドレスをつなぐ役割を持っています。
DNSにはさまざまな情報を扱う仕組みがありますが、この記事では、Webアクセスの基本として「ドメイン名をIPアドレスに対応づける役割」に絞って説明します。
ドメイン名とIPアドレスの対応
ドメイン名は、人間がWebサイトを識別しやすくするための名前です。
一方で、IPアドレスは、コンピューターが通信先を識別するための情報です。
あなたがWebサイトにアクセスするとき、流れは大きく見ると次のようになります。
まず、検索結果やリンクからWebページを開きます。
次に、ブラウザはURLの中から、接続先となるドメイン名を見ます。
その後、必要に応じてDNSを使い、そのドメイン名に対応するIPアドレスを調べます。
IPアドレスが分かると、そのIPアドレスに向けて通信を開始します。
そして、サーバーからWebページのデータを受け取ります。
ここで重要なのは、DNSはWebページそのものを取得する仕組みではないという点です。
DNSは、あくまで 通信先を見つけるための仕組み です。
Webページのデータを取得するのは、その後に行われるHTTPやHTTPSなどの通信です。
DNS問い合わせとは何か
DNS問い合わせとは、簡単に言えば、次のような確認です。
example.com のIPアドレスを教えてください
この問い合わせの結果として、対応するIPアドレスが返されます。
example.com に対応するIPアドレスはこれです
DNSを使ってドメイン名からIPアドレスを調べることを、名前解決 と呼びます。
ただし、毎回必ず外部のDNSサーバーへ問い合わせるとは限りません。
端末、ブラウザ、OS、ルーターなどが一時的に結果を保存している場合、すでに知っている情報を使って通信することもあります。
それでも基本としては、Webサイトへ接続する前に、DNSによってドメイン名からIPアドレスを調べる場面があると理解しておけば十分です。
DNSを誰に聞いているのか
DNS問い合わせは、設定されたDNSサーバーに送られます。
では、そのDNSサーバーは誰のものなのでしょうか。
これは、あなたの環境や設定によって変わります。
自宅のネット回線をそのまま使っている場合、ISPのDNSが使われることがあります。
ISPとは、インターネット接続を提供している事業者のことです。
また、ルーターにDNS設定がある場合は、ルーターで指定されたDNSが使われることがあります。
端末側でDNSを変更している場合は、端末に設定したDNSが使われることもあります。
さらに、ブラウザ側で特定のDNS機能を使っている場合、OSやルーターとは別に、ブラウザ側で指定されたDNSが使われることもあります。
つまり、DNS問い合わせは必ずしも「自分が意識して選んだ相手」に送られているとは限りません。
端末、OS、ブラウザ、ルーター、ネットワーク環境などの設定によって、問い合わせ先が変わります。
DNSと匿名性の関係
DNSは、匿名性を考えるうえで重要です。
なぜなら、DNS問い合わせには、あなたが見ようとしたドメイン名が含まれるからです。
たとえば、あなたが次のURLを開こうとしたとします。
https[:]//example.com/article
このときDNSで問い合わせる対象は、基本的には次の部分です。
example.com
つまり、DNS問い合わせを見ることができる相手には、少なくとも「どのドメインを見ようとしたか」が分かる可能性があります。
ただし、DNSだけでURL全体が見えるとは限りません。
たとえば、次のようなURLがあった場合、
https[:]//example.com/private/page
DNS問い合わせで扱われる主な対象は example.com です。
/private/page のようなパス部分までは、DNSの役割ではありません。
それでも、ドメイン名だけでも多くの情報が分かる場合があります。
たとえば、特定のニュースサイト、SNS、政治団体、調査報道サイト、内部告発支援サイト、医療系サイトなどにアクセスしようとしたことが、DNS問い合わせから推測される可能性があります。
そのため、DNSは単なる通信の補助機能ではなく、匿名性やプライバシーを考えるうえでも重要です。
DNS問い合わせの見え方を理解しておくと、や、匿名性を高める通信手段を学ぶときにも理解しやすくなります。
DNS事業者やISPに見える可能性がある情報
通常のDNS問い合わせでは、問い合わせ先のDNSサーバーが、問い合わせたドメイン名を知る可能性があります。
たとえば、example.com にアクセスしようとすれば、DNS問い合わせ先には example.com を調べようとしたことが見える可能性があります。
また、問い合わせ元のIPアドレスや、問い合わせが行われた時刻も、DNSサーバー側で把握できる場合があります。
そのため、DNSを誰に送っているかは、プライバシーや匿名性に関係します。
通信内容そのものがHTTPSで暗号化されていても、DNS問い合わせが別の相手に見えていれば、「どのドメインを見ようとしたか」は分かる場合があります。
ただし、DNS問い合わせだけで、Webページの本文、入力したパスワード、フォームの内容、URLの詳細なパスまで分かるわけではありません。
DNSで主に見えるのは、接続しようとしたドメイン名です。
それでも、ドメイン名だけで、どのサービス、組織、メディア、情報源に接続しようとしたかを推測できる場合があります。
まとめ
DNSは、ドメイン名をIPアドレスに対応づける仕組みです。
人間はWebサイトを、IPアドレスではなく、URLやドメイン名として目にすることが多いです。
しかし、コンピューターが通信するときには、IPアドレスが必要です。
そのため、Webサイトを開く前に、DNSを使ってドメイン名に対応するIPアドレスを調べることがあります。
DNSを使ってドメイン名からIPアドレスを調べることを、名前解決と呼びます。
DNS問い合わせでは、「どのドメインを見ようとしたか」という情報が扱われます。
そのため、DNS問い合わせを誰に送っているのかは、匿名性やプライバシーに関係します。
DNSは単なる通信の補助機能ではなく、匿名性を理解するうえでも重要な仕組みです。
関連ツール
WhatIsMyIP
WhatIsMyIPは、Webサイト側から見える現在のパブリックIPアドレスを確認できる検証サイトです。
紹介する理由: VPNやTorなどを使ったあと、接続先から見えるIPアドレスが意図した経路のものに変わっているかを確認する入口になるためです。
DNSLeakTest
DNSLeakTestは、DNS問い合わせがどのDNSサーバーへ送られているかを確認できる検証サイトです。
紹介する理由: VPN使用中でもDNSだけが普段のISPや意図しないリゾルバへ出ていると、接続先ドメインの手がかりが残るためです。