DNSってすべてのドメインとIPアドレスのペアを知ってるの? なわけないか。
DNSってどう動いてるんだ🤔
最近になってDNSというものに触れる機会が増えました。
- 自分でドメインを購入して、ドメイン名とIPアドレスを紐付ける
- 「8.8.8.8」を指定すると、GoogleのDNSを使える
- 家のルーターが壊れた時に、DNSのIPアドレスを直打ちして応急処置をする(そして、ドヤ顔する😏)
私のDNSの理解は「ドメイン名とIPアドレスを紐付けてくれる君」というものです。
ですが、それだけでは以下の2つを説明しきれないというモヤモヤを抱えていました。
- GoogleのDNSはすべてのドメイン名とIPアドレスの対応表を持っているの?
- 自分で編集したDNSはどうやって公開されてるんだ?(GoogleのDNSを使った人はどうやってたどり着くんだ?)
この記事で実現したいこと
ズバリ、DNSの理解を「ドメイン名とIPアドレスを対応付けしてくれる君」よりもう少し解像度を上げることが目的です。
「じゃあ、誰がドメイン名とIPアドレスの対応をどのくらい知っているの」という疑問に答えることがゴールになります。
DNSにも種類があるらしい
そしていろいろ調べてみると、DNSには種類があるようです。
DNSサーバーには下記の2種類があります。
権威DNSサーバーキャッシュDNSサーバー名前がよく似ていますが内容は別物です。それぞれの役割について解説します。
https://www.gmo.jp/security/brandsecurity/dns/
DNS利用の流れ
まずは大きな流れを見てみましょう。ブラウザでexample.comと入力してからWebページが表示される(IPアドレスを手に入れる)までの「名前解決」と呼ばれる流れは以下のようになります。
- ブラウザからの問い合わせ:ブラウザがOSに「example.comのIPアドレスは?」と尋ねる
- DNSサーバーへの問い合わせ:OSはリゾルバという機能を使いながら、設定されているDNSサーバー(8.8.8.8など)に問い合わせてIPアドレスの取得(名前解決)を始めます
- IPアドレスを知っている人を探し回る:DNSサーバーは様々なサーバーに順に問い合わせて、最終的にexample.comのIPアドレスを見つけ出します
- レスポンスの返却:見つかったIPアドレスがブラウザに返され、ブラウザはそのIPアドレスにHTTPリクエストを送信します
IPアドレスを探し回るときに、国→県→市のようにエリアの大きさによって担当する役所(県庁、市町)が異なるので、範囲の大きい順に調べていきます。
DNSの種類
ルートDNSサーバー
誰が管理している?:世界13組織(VeriSign, ICANN, WIDE Projectなど)
どういう役割?:DNSの階層のトップにいる人。 TLDサーバーの情報を提供する案内役
ルートDNSサーバーは、DNSの階層の頂点に立つ存在です。世界に13種類(A〜M)があり、それぞれが異なる組織によって運営されています。「.com」や「.jp」といったトップレベルドメインを管理しているサーバーの場所を教えてくれる役割を担っています。
TLDサーバー
誰が管理している?:各TLDの指定管理組織(.com/.netはVeriSign、.jpはJPRS、.orgはPIRなど)
どういう役割?:特定のトップレベルドメイン内のドメインを管理する権威DNSサーバーの情報を提供
トップレベルドメイン(TLD)サーバーは、「.com」「.org」「.jp」といった特定の拡張子を持つドメインの管理を担当します。例えば、「example.com」というドメインに関する問い合わせがあった場合、.comのTLDサーバーは「example.comの情報はこのDNSサーバーに聞いてください」と案内する役割を持っています。
権威DNSサーバー
誰が管理している?:ドメイン所有者または委託された企業(例:レンタルサーバー会社、DNSホスティング企業)
どういう役割?:特定ドメインの正式なDNSレコードを保持し、問い合わせに応答する「原本」サーバー
権威DNSサーバーは、特定のドメインに関する問い合わせについて回答する権威を持っているDNSサーバーです。
よって、権威DNSサーバーはそのドメインを保持している人や、その人に委託された企業が運用します。
例:example.comというドメインを購入した場合
そのドメインの権威DNSサーバーにのみ「このドメインは192.0.2.1に紐づく」という情報を登録できます。世界中からの「example.comはどこ?」という問い合わせに最終的に答える権限を持っているのがこのサーバーです。
キャッシュDNSサーバー
誰が管理している?:ISP(プロバイダ)、Google、Cloudflareなどの企業
どういう役割?:ユーザーからの名前解決リクエストを受け、必要に応じて他のDNSサーバーに問い合わせる「仲介役」
キャッシュDNSサーバーは「8.8.8.8」など私たちが普段使うDNSサーバーのことです。このサーバーは全てのドメインの情報を持っているわけではなく、ユーザーからのリクエストに応じて権威サーバーに問い合わせ、その結果を一時的に保存(キャッシュ)します。プロバイダが提供するDNSサーバーや、GoogleのPublic DNS、CloudflareのDNSなどが代表例です。
最初の疑問に立ち返ると
Q:DNSってすべてのドメイン名とIPアドレスの対応関係を知っているの?
A:いいえ。 DNSには担当範囲によって複数の種類があり、その担当部分の情報だけを知っています。
Q:自分で編集したDNSはどうやって公開されてるんだ?(GoogleのDNSを使った人はどうやってたどり着くんだ?)
A:クライアント→ルートサーバ→TLDネームサーバ→権威サーバという順番でたどり着きます。
おわりに
ずっとモヤモヤしていたことと、DNSの階層構造というとっつきにくい部分がつながって、個人的にはスッキリしただけでなく調べていてかなり面白かったです。
他にも「これってこういうことでしょ」と単純化して覚えてしまっていることにしっかりと疑問を持って調べていきたいです。
最後まで読んでいただき、ありがとうございました!
Discussion