DNSについて学んでみた
はじめに
アマゾンリンク
実務ではDNS切り替えなどで、レンタルサーバの管理画面でAコードCNAMEレコードなどを触る機会がありましたが、実際のところなにがどう働いているのか理解できていませんでした。
今回は上記の本を読んで、整理するためにまとめさせてもらいました。
DNSとは
Domain Name System(ドメイン・ネーム・システム)の略で、ドメイン名とIPアドレスを結びつけるシステムです。
利用者(ブラウザ)からの要求に応じてドメイン名に対応するIPアドレスを探し出しすことを名前解決
といいます。
※利用者のことをスタブルリゾルバーともいう
Webページが表示される流れ
(引用:https://domainname.jp/report/dns)
DNSサーバとは
ドメイン名をIPアドレスに変換する役割を担うサーバです。主に以下の4種類に分かれています。
- キャッシュDNSサーバ(フルリゾルバーともいう)
- ルートDNSサーバ
- TLD DNSサーバ
- ドメインのネームサーバ(権威ネームサーバー)
キャッシュDNSサーバ(フルリゾルバー)
-
名前解決の実行
スタブルリゾルバーから名前解決要求(DNSクエリを受ける)を受けたら、自分がそれまでに蓄えている情報(キャッシュ)があるかどうかを確認します。あれば、その情報をスタブルリゾルバーへ返し、なければ適切な権威サーバー群に問い合わせをします。 -
名前解決の際に得られた情報を蓄える
権威サーバー群から受け取った情報を一時的に保存(キャッシュ)します。これらを次回以降の名前解決に利用します。
ドメインについて
(引用:https://domainname.jp/report/dns)
ドメインとホスト名について
(引用:https://www.kagoya.jp/howto/it-glossary/domain/fqdn/)
DNSのゾーンについて
DNSでは、ドメイン名に対応する形で管理範囲を階層化し、委任することで、管理を分散します。委任によって管理を任された範囲をゾーンと言います。
ゾーンの情報は権威サーバで保持され、その設定内容(ゾーンデータ)を、リソースレコード(DNSレコード)という形で表します。
リソースレコードには多くの種類があり、タイプによって区別されます。リソースレコードのタイプは、DNSに何の情報を設定するかによって使い分けます。
(引用:https://milestone-of-se.nesuke.com/l7protocol/dns/zone-transfer/)
DNSレコードの種類
リソースレコードはたくさんありますが、一部抜粋します。
詳しくはこちら
主にWEB制作担当者が気にするところは、NSレコード・Aレコード・AAAAレコード・CNAMEレコードくらいかと思います。
タイプ | 内容 |
---|---|
SOAレコード | ゾーンの管理に関する基本的な情報 |
NSレコード | 委任に関する情報 |
Aレコード | ドメイン名に対するIPv4アドレス |
AAAAレコード | ドメイン名に対するIPv6アドレス |
MXレコード | メール送信に関する情報 |
CNAMEレコード | ドメイン名に対する正式名 |
TXTレコード | 任意の文字列 |
PTRレコード | IPアドレスに対するドメイン名 |
HTTPSレコード | HTTPサービスに関する情報 |
NSレコード
NSは「ネームサーバー」を指し、ネームサーバーレコードは、どのDNSサーバーがそのドメインの権威サーバーであるか(すなわち、どのサーバーに実際のDNSレコードがあるか)を示します。基本的にNSレコードは、どこに行けばドメインのIPアドレスを見つけられるかをインターネットに知らせるものです。
(引用:https://www.cloudflare.com/ja-jp/learning/dns/dns-records/dns-ns-record/)
example.com. IN NS ns1.example-dns.com.
example.com. IN NS ns2.example-dns.com.
Aレコード
A(Address)レコードは、ドメイン名をIPアドレス(IPv4)に置き換えるリソースレコードです。
IPv6の場合はAAAAレコード(quad=4倍)になります。
example.com. IN A 192.168.1.1
AレコードとNSレコードの違い
項目 | Aレコード | NSレコード |
---|---|---|
役割 | ドメイン名をIPv4アドレスに対応させる | ドメインを管理するネームサーバを指定 |
用途 | Webサイトへのアクセス時に使用 | ドメインのDNS情報をどのサーバで管理するか指定 |
レコード内容 | ドメイン名とIPアドレスの対応関係 | ドメイン名とネームサーバの対応関係 |
例 | example.com → 192.168.1.1 | example.com → ns1.example-dns.com |
CNAMEレコード
CNAME(Canonical Name)は、ドメイン名の正式名を指定するためのリソースレコードで、ドメイン名に別名をつける手段として使われます。
//www.example.comをblog.example.comとして表示
blog.example.com. IN CNAME www.example.com.
まとめ
実務ではあまり詳しく知らないまま設定していたところもあったので、今回本を読んでみて少しは理解できた気がします。
実務の中で使う機会があったら、また読んで理解を深めたいと思います。
DNSは奥が深い・・・。
Discussion