記事の概要
DNSの流れについて何となく理解したものの、細かいところの理解が浅いので
情報収集しながら自分なりに整理してみました。
DNSの流れ
1.クライアントからキャッシュDNSサーバへの問い合わせ
①クライアントから、とあるドメイン(Webサイトなど)に接続を試行
②対象ドメインの名前解決(=IPアドレスの取得)のため
キャッシュDNSサーバに問い合わせ。
⇒キャッシュDNSサーバで名前解決できる場合
・・・IPアドレスをクライアントに返して終了
⇒キャッシュDNSサーバで名前解決できない場合
・・・権威DNSサーバに問い合わせ(2.へ)
キャッシュDNSサーバの補足
-
ドメインとIPアドレスの紐づけ情報を持たないが、
過去に権威DNSサーバーへ問い合わせた内容をキャッシュとして保存
※保存期間は「TTL(Time To Live)」と呼ばれるパラメータで定義 -
Windowsの場合はコントロールパネルのネットワーク設定より
キャッシュDNSサーバの設定が可能
・優先DNSサーバ:最初に問い合わせるサーバ
・代替DNSサーバ:優先DNSサーバが応答しない時に問い合わせるサーバ -
通常はISPのキャッシュDNSや企業内のキャッシュDNSを利用するが
「パブリックDNSリゾルバ(インターネット経由で自由に利用できる
DNSサーバ)」に変更可能
⇒セキュリティやパフォーマンスの向上が期待できる<代表的なパブリックDNSリゾルバ>
・Cloudflare(優先DNSサーバ:1.1.1.1/代替DNSサーバ:1.0.0.1)
・google public DNS(優先DNSサーバ:8.8.8.8/代替DNSサーバ:8.8.4.4)
2.キャッシュDNSサーバから権威DNSサーバへの問い合わせ
①まずDNSルートサーバに問い合わせ
⇒関連情報※を持つ権威DNSサーバを教えてもらう
※NSレコードで「このドメインはこのDNSサーバに問い合わせる」という
情報(親子関係)を定義している
②教えてもらった権威DNSサーバに問い合わせ
⇒名前解決できた場合
・・・IPアドレスをクライアントに返して終了
⇒名前解決できなかった場合
・・・関連情報を持つ権威DNSサーバを教えてもらう
(以後、名前解決するまで②を繰り返し)
DNSルートサーバの補足
- 世界で十数か所にしか存在しない
- 「.com」「.jp」などのトップドメインを管理
※DNSルートサーバを起点に下のレベルのドメインに問い合わせていく
権威DNSサーバの補足
- ドメインとIPアドレスの紐づけ情報を持つ
- 以下2つのサーバで構成される
・プライマリDNSサーバ(マスターDNSサーバ)
⇒メインで稼働するサーバ
・セカンダリDNSサーバ(スレーブDNSサーバ)
⇒プライマリDNSサーバが応答しない時に問い合わせるサーバ
まとめ
文字ばかりで見づらいですがとりあえず言語化してみました。
認識齟齬などあれば教えてください。