DNSの仕組み
登場人物
🧑‍💻 クライアント
いわゆるブラウザ、名前を解決してほしいURLを送信する
🌐 リゾルバ(キャッシュDNS)
クライアントに変わって代行してくれる
®️ レジストリ
TLDサーバーを運用している組織。ドメイン登録データベースを管理している。
Ex) .com の場合は、VeriSign社
🏢 レジストラ
一般ユーザーからの申請により、レジストリの登録を代行している企業
Ex) お名前.com・ムームードメイン
DNSサーバーの種類
🏔️ ルートDNSサーバー
.com や .jp などのTLDサーバーの場所を把握しているサーバー
世界のインターネット管理機関(IANA / ICANN)でTLDのレジストリを決めている
🏛️ TLDサーバー(Top Level Domain)
権威DNSサーバーの場所を把握しているサーバー
Ex) .com
🧱 権威DNSサーバー
実際にドメインに紐づくIPアドレスを返すサーバー
Ex) Route53
DNSの階層構造
名前変換で使用されるサーバーは、以下の階層構造によって成り立っている
code:md
🏔️ ルートDNSサーバー(.)
└── 🏛️ TLDサーバー(例:.com, .jp)
└── 🧱 権威DNSサーバー(例:Route53など)
└── ドメイン名(example.com)
処理フロー
ドメイン購入・登録のフロー
今回のフローはお名前.comでドメイン購入し、Route53に登録するまでのフローを記載
code:mermaid
sequenceDiagram
participant User as 👤 設定者
participant Onamae as 🏢 レジストラ<br>(お名前.com)
participant Registry as ®️ レジストリ<br>(VeriSign / .com)
participant TLDDNS as 🏛️ TLDサーバー<br>(.com)
participant Route53 as 🧱 権威DNSサーバー<br>(Route53)
%% ステップ1:ドメイン取得
User->>Onamae: ドメイン(example.com)を購入
%% ステップ2:Route53でホストゾーン作成。名前変換するIPアドレスも指定。
User->>Route53: ホストゾーンを作成
Route53-->>User: NSレコード(4つ)を発行<br>例: ns-123.awsdns-45.org など
%% ステップ3:お名前.comでネームサーバ変更
User->>Onamae: Route53のNSを登録(ネームサーバー設定)
Onamae-->>Registry: NSレコード情報をレジストリ(.com)に登録
%% ステップ4:レジストリとTLDサーバー更新
Registry-->>TLDDNS: 「example.comの権威DNSはRoute53」と登録
TLDDNS-->>Route53: 「example.com管理開始」
補足
本処理は最終的にTLDサーバーを登録するために、レジストラ(.com)・レジストリ(VerSign)が存在している
ルートDNSサーバーは全世界で登録しているサーバなので登録は不要。TLDサーバー側で情報を保持している。
権威DNSサーバーのホストゾーン作成時に、変換するIPアドレスも指定する
TLDの直接登録できないのは、個人や企業が直接触れるようにしないために、仲介する存在を設けている
レジストリを一つのドメインで一つだけを保証するため
レジストラが信頼性を担保するため
運用の効率をあげるための分業化
基本的にレジストラ経由で登録申請を行う。ただ一部例外はある
.jpなどは基本はレジストラ経由だが、直接レジストリ登録することもできる。これはレジストラがレジストリの運用をまとめて行っているときなどに発生する
政府向けの特殊はTLDの場合(.gov .edu )
企業がTLDを保持している場合(.google / .amazon)
リクエスト時のフロー
code:mermaid
sequenceDiagram
participant Client as 🧑‍💻 クライアント<br>(ブラウザ)
participant Resolver as 🌐 リゾルバ
participant RootDNS as 🏔️ ルートDNSサーバー<br>(.)
participant TLDDNS as 🏛️ TLDサーバー<br>(.com)
participant AuthDNS as 🧱 権威DNSサーバー<br>(Route53)
Client->>Resolver: example.com のIPアドレスを教えて!
alt キャッシュあり
Resolver-->>Client: キャッシュ済みIPアドレスを返す
else キャッシュなし
Resolver->>RootDNS: example.com の場所を教えて!
RootDNS-->>Resolver: .com のTLDサーバーを教える
Resolver->>TLDDNS: example.com の権威DNSを教えて!
TLDDNS-->>Resolver: ns-123.awsdns-45.org などを返す
Resolver->>AuthDNS: example.com のAレコードを教えて!
AuthDNS-->>Resolver: 192.0.2.1 を返す
Resolver-->>Client: 最終結果(192.0.2.1)を返す
end