コンテンツへスキップ
戻る

ドメイン名はどうやってサーバーに辿り着くのか?

公開日:  at  05:30 午後

はじめに

先週の記事では、Cloudflare でドメインを購入する方法について話しました。今回は、ブラウザにドメインを入力してから、実際にサーバーへ接続するまでに何が起きているのかを解説します。それでは始めましょう。

このブログを例に挙げます:https://blog.clarkliu.com。実際にサーバーへ接続する前に、以下のステップを経ることになります。

ステップ 1 — ブラウザのキャッシュを確認する

以前に同じサイトを訪問したことがあれば、ブラウザや OS がその結果をキャッシュしています。次回アクセス時はそのキャッシュを使うため、DNS の問い合わせを省略してサーバーに直接接続できます。

ステップ 2 — Recursive Resolver に問い合わせる(ISP または 8.8.8.8)

キャッシュがない場合、ブラウザは Recursive Resolver に処理を委ねます。Recursive Resolver の役割は、あなたの代わりに各サーバーへ問い合わせを繰り返し、最終的に必要な IP アドレスを取得して返すことです。デフォルトでは ISP(例:台湾であれば中華電信など)が提供する Recursive Resolver が使われますが、Google の 8.8.8.8 や Cloudflare の 1.1.1.1 などのパブリック DNS に変更することもできます。

ステップ 3 — Recursive Resolver が Root Name Server に問い合わせる

Recursive Resolver はまず最上位の Root Name Server に問い合わせます。世界には 13 セットの Root Name Server が存在し、適切な TLD(Top-Level Domain)Name Server の場所を教える役割を担っています。

TLD Name Server は、.com.org.jp.tw などのトップレベルドメインごとに存在し、そのドメイン配下の情報を管理しています。

ステップ 4 — Recursive Resolver が TLD Name Server に問い合わせる

TLD Name Server に問い合わせると、対象ドメインの Authoritative Name Server の IP アドレスが返ってきます。

Authoritative Name Server は、そのドメインの DNS 管理を担っているサービスが運営しています。AWS Route 53 を使っていれば Route 53 が、Cloudflare を使っていれば Cloudflare の DNS サーバーが Authoritative NS となります。

ステップ 5 — Recursive Resolver が Authoritative Name Server に問い合わせる

Authoritative Name Server にはそのドメインの実際の DNS レコードが保存されています。たとえばドメインを Cloudflare で管理している場合、Cloudflare の Authoritative NS がサーバーの最終的な IP アドレスを返します。

ステップ 6 — 結果がブラウザに返され、キャッシュされる

Recursive Resolver が IP アドレスをブラウザに返し、ブラウザはサーバーへ直接接続します。取得した結果はキャッシュされ、次回以降の問い合わせが高速化されます。

以下の図で全体の流れを確認できます:

DNS Lookup

上記の例は、Cloudflare でドメインを購入し、DNS も Cloudflare で管理している最もシンプルなケースです。

実際にはより複雑になることもあります。たとえば、ドメインは Cloudflare で購入しつつ DNS の管理は AWS Route 53 で行っている場合、Cloudflare の NS を経由した後に Route 53 へと問い合わせが続きます。そのような構成を理解するためにも、DNS レコードの種類を把握しておくことが重要です。

DNS レコードの種類

DNS にはさまざまなレコードタイプがあります。代表的なものを一覧にまとめました:

レコードタイプ役割補足
Aドメイン → IPv4yoursite.com -> 104.21.1.1最も一般的
AAAAドメイン → IPv6yoursite.com -> 2606:4700::...A レコードの IPv6 版
CNAMEエイリアス → 別ドメインwww -> yoursite.comIP に直接は指定不可
MXメールサーバーyoursite.com -> mail.google.comメール受信に使用
TXTテキスト情報SPF / DKIM / ドメイン認証多くの SaaS サービスで利用
NSDNS 管理者の指定ns1.cloudflare.com「このドメインはここに聞いて」
SOADNS ゾーンの管理情報serial、refresh などDNS 同期の基準となる重要な情報
SRVサービスの場所情報_sip._tcp.example.comSIP・Minecraft・K8s などで使用

本記事と特に関連が深いのは A レコードNS レコードです。A レコードは最終的な IP を決定し、NS レコードは Authoritative Server の場所を決定します。

キャッシュと TTL

このフル解決チェーンを毎回リクエストのたびに実行していたら、非常に遅くなってしまいます。そこで登場するのが TTL(Time To Live) です。各 DNS レコードには TTL 値(秒単位)が設定されており、キャッシュの有効期限を表しています。TTL が切れるまでは再問い合わせが発生しません。

DNS では複数のキャッシュ層を活用して、フルの問い合わせ回数を減らしています:

まとめ

DNS は内部的にはかなり複雑ですが、この記事で少しでも仕組みがつかめたなら嬉しいです。今週はここまで、また来週お会いしましょう!


修正を提案する
この記事をシェアする:

前の記事
Leetcode 解法メモ (2)
次の記事
自分のドメインを買うメリットって何?