DNS
Domain Name System
DNSは多数のDNSサーバーで構成される分散型データベース
https://gyazo.com/f5253ff08ae8fc6a14f49b4fd0be7757
words
IDN
FQDN (完全修飾ドメイン名) = ホスト名 + ドメイン名
ICANNによってドメイン名やIPアドレス割当が管理されている
可用性の向上のために2台以上設置する
プライマリ
セカンダリ
ゾーン転送(プライマリDNSからセカンダリDNSに同期する)が行われている
リソースレコード
Aレコード
Address
名前に対するIPアドレスを指定する
例
www.example.com IN A 119.3.2452.4613
IPv6の場合 www.example.com IN A 1008::dfd::ff99:33:739f
ドメインがわかっている場合サブドメインのみに省略可能
MXレコード
Mail eXchanger
ドメインのメールサーバーを指定する
ドメイン名、優先度、メールサーバーのFQDN
例
code:MX
example.com IN MX 10 mx1.example.com.
example.com IN MX 20 mx2.example.com.
NSレコード
Name Server
ドメイン名の委任先を表す
自分のドメイン、下位のドメインに関するDNSサーバーのホスト名
フォーマット example.com IN NS ns1.example.com.
CNAMEレコード
Canonical Name
別名をつけるレコード
フォーマット web.example.com IN CNAME www.example.com
SOAレコード
Start Of Authority
オーソリティ情報
ネガティブキャッシュも持っている
TXTレコード
任意の文字列を特定のドメインに紐付けられる
SPFレコード
メールの送信元
CAAレコード
証明書を発行できる認証局を指定
など、他にも色々ある
名前解決の流れ
スタブリゾルバ
OS(正確には glibc)が提供する
フルリゾルバ
キャッシュサーバー
ルートヒント(ルート権威サーバーのリスト)を持っていて問い合わせる
TTLを最大にキャッシュする
権威サーバー
ルート権威サーバー -> domain の権威サーバーをツリー状に見ていく
子に委任していくことで分散管理されている
ref
https://en.wikipedia.org/wiki/Domain_Name_System
https://en.wikipedia.org/wiki/List_of_DNS_record_types
https://www.cloudflare.com/learning/dns/dns-records/
https://youtu.be/fMURJhG601k