📑
「DNSをはじめよう ~基礎からトラブルシューティングまで~」を読んで深掘りしたメモ
技術書典 5 で紙の本 740 冊が
2 時間半で完売してしまった大人気の DNS 本 📘
「DNS をはじめよう ~基礎からトラブルシューティングまで~ 改訂第 2 版 はじめようシリーズ](https://www.amazon.co.jp/DNSをはじめよう-~基礎からトラブルシューティングまで~-はじめようシリーズ-mochikoAsTech-ebook/dp/B07K1MHDB6)」
を読んで、「書いてあることを自分で深掘りした内容」をメモに残しました ✍️
本を読まれてから振り返る際に利用していただくのがいいと思います。
説明がとても分かりやすくて、DNS のレコード名やそもそものドメインの知識が深まったので、普段ゴリゴリに触ってないけど興味ある方にオススメです!
170 ページほどで、AI と会話しながら 2 日かけて読みました。
(ドメインの購入などはしておらず、文だけ読みました)
ドメイン名について
- .com, .jp などの TLD (Top Level Domain) ごとに決まった「レジストリ」という役割の会社が管理している
- 我々はレジストリからドメインを買うことはできない
- レジストリになるにはかなりお金がいる
- レジストラ、リセラがいて、リセラだと仲介業者が増えることからレジストラから買うのが安さや安定性の面からおすすめ
- お名前.com はレジストラ
- TLD は過去の障害の有無なども調べて選んだ方がいいかもしれない。.io の TLD のレジストリ(管理元)で DNS のトラブルがあって名前解決が一時的にできなくなり、Mackerel が全世界で障害と誤認識した事件があった
- .co.jp は会社だけ、.xxx は大人向けのサイトのものなど、意味があるものもあるので注意する
- example.com のようなドメインを買えば、サブドメインはつけ放題
- ドメインは買うというより、借りている。ドメイン移管の時はドロップキャッチされて悪用される場合もあるので手放す時期に注意
- ドメイン保有者は名前、連絡先などの情報公開が必要だが、Whois 情報公開代行をすれば基本はお名前.com などの情報が載る。購入時に指定すれば一定期間無料で使える
DNS について
- 「ネームサーバ」「フルリゾルバ」に分かれていて、どちらのサーバーも同じ DNS サーバーという名前で呼ばれるため注意が必要
- 「ネームサーバ」はドメイン名と IP アドレスを紐づけている
- 「フルリゾルバ」は「ネームサーバ」に聞き回って IP アドレスを調べてきてくれる。「DNS キャッシュサーバ」「フルサービスリゾルバ」とも呼ばれる
- お名前.com はネームサーバー。私が思い浮かべる DNS サーバーは「ネームサーバ」の Route 53
- 「ネームサーバ」で、hosted zone は「example.com の電話帳」などドメインごとの IP アドレスの集合(レコード)が管理されている
AWS のネームサーバ(Route 53)について
- dig コマンドでドメインと IP アドレスの紐付けを見ることができる
- Route 53 の「Register domains」機能は、レジストラのお名前.com より値段がお高い(と書いてあるが .com に関しては 2 年目以降も考慮すると Route 53 の方が安そう。ただ設定難度は比較的高めらしい。TLD ごとに要確認)
dig と whoisについて
- whois コマンドはドメインの所有者情報を知ることができるコマンド
- dig で gmail.com などの MX レコードの情報も得ることができる。nanka-kaisya-name.co.jp で google が出るとき Google Workspace を使っているらしい
- test.co.jp, test.com, xxx.com, aaa.com などは持ち主がいるので仕様書やテストで使わない方が良い
- example.co.jp, example.jp, example.com, example.net などはテストで使って良いドメインとして確保されているのでこれを使う
- mail 系のレコードまとめ
- 送る時確認するのが、SPF, DKIM, DMARC レコード
- 受け取る時、配送先を確認されるのが、MX レコード
| タイミング | SPF | DKIM | DMARC | MX |
|---|---|---|---|---|
| ✉️ 送るとき(送信処理) | ✅(受信側が確認) | ✅(署名付きで送信) | ✅(ポリシーを参照) | ❌(使わない) |
| 📥 受け取るとき(配送先確認) | ❌ | ❌ | ❌ | ✅(受信サーバーを決める) |
- CNAME レコードが設定されたドメインは、
dig nanka.example.com CNAME +shortで見ることができる。dig nanka.example.com A +shortでも AWS ELB のエイリアス情報が見れる場合もある(が、基本は IP アドレスが返る) - example.com に example.co.jp の CNAME を設定すると、example.com を通じて example.co.jp の IP アドレスにアクセスできるようになる。example.com から HTTPS アクセスしたい場合は証明書は example.com, example.co.jp の 2 つ必要
- CNAME レコードを設定した場合、その名前と同じ他の種類のレコードは追加できない決まりがある(example.com の CNAME レコードが example.co.jp とすると、その設定を見るのが優先されてしまうため)
- example.com など zone apex は NS レコード, SOA レコードが存在するので、CNAME レコードを追加できなかったが、Route 53 のエイリアスレコードはこれを回避できる
- 下記はどっちも OK
www.example.com. IN CNAME abc123.elb.amazonaws.com.-
example.com. IN A (ALIAS) abc123.elb.amazonaws.com.(zone apex)
- Linux に BIND をインストールすれば、自前でネームサーバを作れる
- Route 53 で hosted zone を作った後はネームサーバも作られるので、お名前.com でネームサーバを作られたものに変更する
- 自前でネームサーバを作った場合、ネームサーバ変更に加えて、ネームサーバが自分のドメイン配下にある場合(例:ns1.example.com)、お名前.com に「ネームサーバ名としてホスト(FQDN)と IP アドレスを登録」する必要がある。この「FQDN と IP のセット」はグルーレコードと呼ばれ、お名前.com からネームサーバへの案内がされるようになる(糊付け)。example.com の NS が ns1.example.com の場合、まず ns1.example.com がないと、example.com が調べられないため
その他
- 将来 CDN を使いたい時に www をつけておいた方がいい。AWS では CloudFront も alias レコードに対応しているので zone apex を紐づけても大丈夫らしいが、DNS プロバイダによっては難しいことも多いらしい
- 存在しないレコード(NXDOMAIN)のキャッシュを「ネガティブキャッシュ」といい、SOA レコードの TTL か MINIMUM のいずれか小さい方が入る
- CAA レコードは SSL 証明書を発行していい認証局を指定するレコード。正しく指定しないと証明書を発行できなくなる。そのドメインで設定していなくても、親ドメインで設定していることで証明書を発行できないこともある
- AWS では、レートリミットを超えると NXDOMAIN を返すようになる(と書いてあるが、通常はレートリミットを超えると SERVFAIL が返るらしいので誤りっぽい)
- また、Route 53 など一部の CDN や DNS プロバイダが、TTL の最大・最小値を内部で制限・調整することがある
- 第三者がなりすましの移管をすることがある(ラブライブのオフィシャルサイト乗っ取りなど)ので、ドメインを移管できないよう物理的にロックしたり、ドメイン移管確認メールを見逃さない対策が必要となる
Discussion