最終更新:

【仕組み解説】DNSはどうやってドメイン名をIPアドレスに変換するのか


DNS名前解決の流れ ブラウザ example.com リゾルバ キャッシュ確認 ルート サーバー TLD .comサーバー 権威サーバー IPアドレス保持 1 2 3 4 5 6 7 IP返却 8 IP返却 実線: 問い合わせ 破線: 応答(IPアドレス) 応答 問い合わせ
DNS名前解決の流れ(再帰・反復クエリ)
ひよこ ひよこ

ブラウザURLを打ち込むだけでWebサイトが表示されるけど、あれってどういう仕組みなの?

ペンギン先生 ペンギン先生

いい質問だね。実はブラウザがWebサイトに接続するには「IPアドレス」という数字の住所が必要なんだ。でも人間が覚えやすいように「example.com」みたいなドメイン名を使っているよね。このドメイン名IPアドレスに変換する仕組みが「DNS(Domain Name System)」なんだよ。

ひよこ ひよこ

ドメイン名IPアドレスに変換するってことは、電話帳みたいなものなのかな?

ペンギン先生 ペンギン先生

まさにそのイメージだよ。電話帳で「田中さん」の名前から電話番号を調べるのと同じで、DNSは「example.com」というドメイン名から「93.184.216.34」みたいなIPアドレスを調べてくれるんだ。この変換のことを「名前解決」と呼ぶんだよ。

ひよこ ひよこ

名前解決って具体的にはどういう流れで進むの?

ペンギン先生 ペンギン先生

まずブラウザが「DNSリゾルバ」に問い合わせるんだ。リゾルバはプロバイダが用意していることが多いね。リゾルバが答えを知らない場合は「ルートサーバー」に聞きに行く。ルートサーバーは「.comならこのTLDサーバーに聞いて」と教えてくれる。次にTLDサーバーが「example.comならこの権威サーバーに聞いて」と案内して、最後に権威サーバーが実際のIPアドレスを返してくれるんだよ。

ひよこ ひよこ

毎回そんなにたくさんのサーバーに聞きに行ってたら遅くならないの?

ペンギン先生 ペンギン先生

そこで「キャッシュ」が活躍するんだ。一度調べた結果はリゾルバブラウザが一時的に記憶しておくから、次に同じドメインにアクセスするときはすぐに答えが返ってくるよ。キャッシュの有効期限は「TTL(Time To Live)」で決まっていて、たとえばTTLが3600秒なら1時間はキャッシュが使われるんだよ。

ひよこ ひよこ

リゾルバがルートサーバーに聞きに行くっていうのは「再帰クエリ」っていうやつかな?

ペンギン先生 ペンギン先生

惜しいけどちょっと違うんだ。ブラウザからリゾルバへの問い合わせが「再帰クエリ」で、「最終的な答えをちょうだい」というお願いだよ。一方、リゾルバがルートサーバーやTLDサーバーに聞いて回るのは「反復クエリ」で、「知ってる範囲でヒントをちょうだい」という問い合わせなんだ。リゾルバが代わりにあちこち聞いて回ってくれるから、ブラウザは1回聞くだけで済むんだよ。

ひよこ ひよこ

DNSって住所を調べるだけじゃなくて、いろんな種類の情報があるって聞いたけど本当なの?

ペンギン先生 ペンギン先生

そうだよ。DNSには「レコード」という単位でいろんな情報が登録されているんだ。Aレコードドメインに対応するIPv4アドレス、AAAAレコードIPv6アドレスを返す。CNAMEレコードは別のドメイン名へのエイリアスで、MXレコードはメールサーバーの宛先を指定するものだよ。他にもTXTレコードドメインの所有確認やSPF設定に使われたりするんだ。

ひよこ ひよこ

DNSってセキュリティ的に大丈夫なのかな?なんだか狙われそうな気がする…

ペンギン先生 ペンギン先生

鋭いね。実は「DNSキャッシュポイズニング」という攻撃があるんだ。リゾルバキャッシュに偽のIPアドレスを注入して、ユーザーを偽サイトに誘導する手口だよ。対策として最近は「DoH(DNS over HTTPS)」や「DoT(DNS over TLS)」といった暗号化された通信方式が普及してきているんだ。ChromeやFirefoxでは標準でDoHが使えるようになっているよ。

ひよこ ひよこ

ルートサーバーって世界に13台しかないって聞いたことがあるけど、それで足りるの?

ペンギン先生 ペンギン先生

これはよくある誤解なんだけど、正確には「13のIPアドレス(13のルートサーバー群)」であって、物理的なサーバーは世界中に1,000台以上あるんだ。「Anycast」という技術で同じIPアドレスを複数の場所に配置して、一番近いサーバーが応答する仕組みになっているよ。だから1か所が止まってもすぐ別のサーバーが対応してくれるんだ。

ひよこ ひよこ

DNS信頼性を高める仕組みって他にもあるのかな?

ペンギン先生 ペンギン先生

DNSSECDNS Security Extensions)」という仕組みがあるよ。これはDNSの応答に電子署名を付けて、返ってきた情報が途中で改ざんされていないことを検証できるようにするものなんだ。ルートゾーンから各ドメインまで「信頼の連鎖」でつながっていて、PKIと似た仕組みで安全性を担保しているよ。普段意識しないけど、インターネットの根幹を支える大切な技術だね。