DNS の入門書。かなり初歩的な内容で説明も丁寧なので、初心者でも問題なく読み進められる。
必要な前提知識はほとんどなく、ウェブ開発に関する仕事をしたことがある人なら、誰でも読めると思う。
図や事例が豊富で、理解しやすい。
本書では、実際にドメイン名を取得し、それを Route 53 で運用するハンズオン形式になっている。
そのため、「お名前.com」や AWS の具体的な操作手順に、かなり紙幅を割いている。
私も既にドメインを持っており、Route 53 も利用していたので、本書の内容と自分の設定を見比べることで、理解が深まった。
以下、自分用のメモ。
第 1 章 ドメイン名と Whois
ドメインを買う時は、レジストリと契約をしている。
レジストラ、リセラは、単なる仲介業者。
ドメイン名の一番右を、TLD(トップレベルドメイン)と呼ぶ。
例えば、example.co.jp
のjp
や、yahoo.com
のcom
。
ひとつの TLD は、ひとつのレジストリによって管理している。
例えば、jp
を管理しているのは、株式会社日本レジストリサービス。
ひとつの TLD を複数のレジストリによって管理している、ということはない。
ICANNという組織が、レジストリを決めている。そういう非営利組織がある。
TLD を作る決定権があるのも、ICANN。プロトコルのポート番号を決めているのも、ICANN。
Whois 検索は、レジストリが提供している機能。レジストリが、自身が管理している TLD の Whois 情報を管理、公開している。
レジストリ毎に管理しているため、フォーマットが統一されていない。
第 2 章 DNS の仕組み
ドメイン名とサーバを紐付けるのが、DNS。
DNS サーバには、ネームサーバとフルリゾルバの2種類がある。
ネームサーバは、別名「DNS コンテンツサーバ」あるいは「権威 DNS サーバ」。ドメイン名と、それに紐付く IP アドレスが登録されている。
フルリゾルバは、別名「DNS キャッシュサーバ」あるいは「フルサービスリゾルバ」。ネームサーバに問い合わせて、指定されたドメイン名に対応した IP アドレスを調べる。一度調べた結果は、一定期間キャッシュする。
ドメイン名と IP アドレスの紐付けひとつひとつのことを、リソースレコードと呼ぶ。
リソースレコードには、「A レコード」や「NS レコード」など、いくつか種類がある。
フルリゾルバに問い合わせる前にまず、hosts ファイルを使って、指定したドメイン名に対応した IP アドレスを探す。それで見つからなかった場合に、フルリゾルバに問い合わせる。
Mac の場合、/private/etc/hosts
が hosts ファイル。
第 3 章 AWS のネームサーバ(Route53)を使ってみよう
Route 53 は、AWS が提供する DNS サービス。
Route 53 というネームサーバのなかに、自分のドメイン名のゾーンを作る。
TTL とはキャッシュの保存期間のことで、これが切れるまでは、キャッシュがフルリゾルバに残る。
TTL は NS レコードに設定してある。
第 4 章 dig と whois を叩いて学ぶ DNS
dig ドメイン名 +short
で、そのドメイン名に紐付いた IP アドレスを教えてくれる。
whois ドメイン名
で、Whois 情報を得られる。
A レコードは、ドメイン名と IP アドレスを紐付けている。ドメイン名から IP アドレスを探す。
MX レコードは、メールアドレスのドメイン名とメールサーバを紐付けている。
設定したメールサーバが、メールを受信する。
NS レコードは、ドメイン名のネームサーバを指定している。
PTR レコードは、A レコードとは逆で、IP アドレスからドメイン名を探す。
dig -x IP アドレス +short
で調べることができる。
CNAME レコードは、エイリアス。ドメイン名に対して、別のドメイン名を設定する。
フルリゾルバは、A レコードを調べた際に CNAME が返ってきた場合、その CNAME の値のドメイン名の A レコードを、調べる。それを繰り返して、最終的に IP アドレスを返す。
CNAME レコードを設定したら、他のリソースレコードは設定できない。なぜなら、上述の A レコードだけでなく、他のリソースレコードでも、CNAME に設定してあるドメインの当該リソースレコードを、調べるから。
サブドメインを含まないドメイン名を ZONE APEX と呼ぶ。
ZONE APEX には、SOA レコードと NS レコードが必ず存在する。そのため、他のリソースレコードと共存できない CNAME は、ZONE APEX では使えない。
ネームサーバは、自分で用意することも出来る。Linux に Apache や Nginx を入れればウェブサーバになるように、BIND を入れればネームサーバになる。
第 5 章 トラブルシューティング
CAA レコードには、「そのドメイン名の証明書を発行できる認証局」を書く。
そうすると、それ以外の認証局に対して発行依頼が行われても、発行しない。