30歳からのプログラミング

30歳無職から独学でプログラミングを開始した人間の記録。

『DNSをはじめよう ~基礎からトラブルシューティングまで~ 改訂第2版』を読んだ

DNS の入門書。かなり初歩的な内容で説明も丁寧なので、初心者でも問題なく読み進められる。

mochikoastech.booth.pm

必要な前提知識はほとんどなく、ウェブ開発に関する仕事をしたことがある人なら、誰でも読めると思う。
図や事例が豊富で、理解しやすい。

本書では、実際にドメイン名を取得し、それを Route 53 で運用するハンズオン形式になっている。
そのため、「お名前.com」や AWS の具体的な操作手順に、かなり紙幅を割いている。
私も既にドメインを持っており、Route 53 も利用していたので、本書の内容と自分の設定を見比べることで、理解が深まった。

以下、自分用のメモ。

第 1 章 ドメイン名と Whois

ドメインを買う時は、レジストリと契約をしている。
レジストラ、リセラは、単なる仲介業者。

ドメイン名の一番右を、TLD(トップレベルドメイン)と呼ぶ。
例えば、example.co.jpjpや、yahoo.comcom
ひとつの 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 レコードには、「そのドメイン名の証明書を発行できる認証局」を書く。
そうすると、それ以外の認証局に対して発行依頼が行われても、発行しない。