daisuzz.log

DNSをはじめよう を読んだ

iikanji.hatenablog.jp

↑の前回の記事に引き続き、技術書典で何冊か購入した本の中から【ダウンロード版】DNSをはじめよう ~基礎からトラブルシューティングまで~ 改訂第2版 - mochikoAsTech - BOOTH を読んだので、読書メモとして書いていきます。

booth.pm

ちなみにこの本はKindleでも購入することができ、実際に自分はKindle本として購入しました。 ただ、書籍の中でも述べられているのですが、Kindle本はPDFを画像として変換していて、文字検索ができないのでPDF本を購入された方がいいかもしれません。

この本はmochikoAsTechさんが発売しているシリーズ本の第一弾です。元々は「AWSをはじめよう」という本を購入して読もうと思っていたのですが、本の説明の中で「DNSをはじめよう」をまずは読んでください、と書かれていたのでDNSの復習として購入しました。

この本では、フルリゾルバがあってネームサーバに再帰問合せして、、、、のようなDNSの基本的な仕組みの話やリソースレコードの説明以外にも、ドメイン名をどこの団体がどういった仕組みで管理しているのか?というドメイン名そのものの話や、digやwhoisコマンドなどトラブルシューティングで利用するコマンドを説明されているので、タイトル通りはじめてDNSを学ぶ人には、幅広く学ぶことができるとても良い本だと思いました。

読むだけではなくて、ドメイン名をお名前.comから登録したり(自分はGoogle Domainsを使いましたが、、、)Route53を使って取得したドメイン名を登録したりするなど、実際に手を動かして学ぶことができるので、技術書典で人気が高い本と言われるのも納得の本でした。

読書メモ

## 目次を読んだ疑問点, 復習したかったこと
- ドメイン名を買うときに何に注意すべきか?どこで買うべきか
  - 信頼できるregisterer/resellerで購入する
  - 同じドメイン名でも価格はバラバラなので注意
- Whois情報に何を登録する?
  - ドメインを所有している組織や担当者の氏名, 連絡先など
  - Whois情報公開代行によって、公開する個人情報を少なくすることができる
- Route53とはどういうものか?
  - AWSが提供するネームサーバ
- DNS周りのコマンド
  - dig
    - ドメイン名/IPアドレスに紐づくリソースレコードを取得できる
  - whois
    - ドメイン名/IPアドレスに紐づくWhois情報を取得できる
- DNSについて復習したい
  - ネームサーバ
    - リソースレコードを管理する
  - フルリゾルバ
    - ネームサーバを再帰的に問合せることでドメイン名に紐づくIPアドレスを解決する
  - Aレコード
    - ドメイン名とIPアドレスの紐付き
  - NSレコード
    - ドメイン名とネームサーバの紐付き
  - MXレコード
    - ドメイン名とメールサーバの紐付き
  - SPFレコード
    - ドメイン名と正しい送信元情報の紐付き
  - PTRレコード
    - IPアドレスとドメイン名の紐付き
  - CNAMEレコード
    - ドメイン名とエイリアスの紐付き
  - CAAレコード
    - ドメインと、証明書をを発行できる認証局の紐づき
  - グルーレコード
    - ネームサーバのドメイン名とIPアドレスの紐付き


## メモ
- ドメイン名を売るサービスは2種類 ← 知らなかった、、、
  - registerer(登録事業者)
    - ドメイン名をregistryから仕入れて一般消費者やresellerに販売
    - registry(登録管理組織)
      - 1つのTLDを1つのregistryが管理している
      - ICANNによってregistryとなる会社が決められる
      - ICANN
        - 全世界のIPアドレスやドメイン名などを管理する非営利法人
  - reseller(再販事業者)
    - 一般消費者に販売

- Whoisとは
  - ドメインを所有している組織や担当者の氏名, 連絡先, 有効期限などが誰でもみられるサービス
  - registryが、自身が管理しているWhois情報を公開している
  - Whois情報公開代行
    - 個人の情報の代わりにregistererの情報をWhoisに登録してくれる
  
- 古いドメイン名を捨てるとき
  - 古いドメイン名をそのまますぐに捨ててしまうとドロップキャッチされてしまう
    - 手放したドメイン名を別の第3者が購入し、悪用する行為
  - しばらくは古いドメイン名を保持しておき、アクセスが来たら新しいドメイン名に301リダイレクトさせる
  - サイト上に古いリンクが残っていないこと、アクセスがほぼないことを確認した上で古いドメイン名を捨てる

- DNSの仕組み
  - ネームサーバ(DNSコンテンツサーバ, 権威DNSサーバ)
    - ドメイン名と、ドメイン名に紐づくIPアドレスを管理
  - フルリゾルバ(DNSキャッシュサーバ)
    - 複数のネームサーバに再帰的に問い合わせることで、ドメイン名に紐づくIPアドレスを取得して、紐付けをキャッシュする
      - Google Public DNSやCloudflareのように誰でも使えるオープンリゾルバもある
    - Linuxサーバの場合`/etc/resolv.conf`の`nameserver`という項目に指定されている ← 知らなかったLinux初心者
  - ゾーン
    - ネームサーバが管理しているドメイン名とIPアドレスの紐付きの範囲
    - ゾーンを分割して、他のネームサーバに任せることを委任という
  - リソースレコード
    - ドメイン名に紐づけられた情報
  - hostsファイル
    - ドメイン名とIPアドレスの紐付きが書かれたファイル
    - hostsファイルを参照→hostsファイルになければフルリゾルバに問合せ
- Route53
  - AWSが提供するDNSサービス
  - Route53にリソースレコードを登録する
  - レジストラ側でネームサーバの設定をRoute53に変更する
    - AレコードのTTLに指定した時間が過ぎるまではフルリゾルバにキャッシュが残る
- dig, whoisコマンド
  - dig
    - ドメイン名に紐づくIPアドレスや、IPアドレスに紐づくドメイン名を調べることができる
    - +shortオプション
      - ドメイン名に紐づくIPアドレスのみを表示する
    - 同じドメイン名の複数のAレコードがある場合、digが返す順番が変わる
      - DNSラウンドロビン
  - whois
    - ドメイン名やIPアドレスをキーにWhois情報を調べることができる
  - MXレコード
    - ドメイン名とメールサーバの紐付き
    - `dig ドメイン名 mx` で確認できる
    - MXレコードがない場合はAレコードで紐づいているIPアドレスにメールを送ろうとする
      - メールの送受信を行わない場合はNull MXを設定しておくとよい
        - プリファレンス値を0, メールサーバ名を.に設定したMXレコード
  - テストで利用しても問題のないドメイン名
    - example.com, example.net, example.orgとか
    - RFC2606に定められている
    - 他にもJPRSによってテストや例示で利用できるドメイン名がまとめられている
  - NSレコード
    - ドメイン名とネームサーバの紐付き
    - `dig ドメイン名 ns`
  - SPFレコード
    - 送信元ドメイン名と正しい送信元情報(IPアドレス)の紐付き
    - `dig ドメイン名 txt`
    - SPFレコードによってなりすまされることを防ぐ
  - PTRレコード
    - IPアドレスからドメイン名を逆引きするためのレコード
    - `dig -x IPアドレス +short`
  - CNAMEレコード
    - ドメイン名とエイリアスの紐付き
    - `dig ドメイン名 cname +short`
    - CNAMEレコードと他のリソースレコードは共存できない
    - ZONE APEX
      - サブドメインを含まないドメイン名
      - CNAMEではZONE APEXは使えない
  - CAAレコード
    - Certification Authority Authorization
    - ドメインと、証明書をを発行できる認証局の紐づき
    - そのドメイン名に対する意図しない証明書発行を防ぐ
  - グルーレコード
    - ネームサーバのドメイン名とIPアドレスの紐付き
    - 上位のネームサーバに登録する
- トラブルシューティング
  - サイトのリニューアルなどでIPアドレスを変更する場合、変更前のTTLが長いとフルリゾルバがキャッシュを持つ時間が長くなるので、リニューアル前にTTLを短く設定しておく
  - 存在しないドメインを解決しようとした場合、紐づくIPアドレスが存在しないという情報がフルリゾルバにキャッシュされてしまう
  - EC2インスタンスを立てると自動的にAmazonDNSというフルリゾルバが立ち上がる
    - Amazon DNSに対する一定時間内の名前解決のパケット数は制限されていて、制限を超えるとNXDOMAIN(存在しないことをあらわすレスポンス)を返す
    - AmazonDNS、60秒以上のTTLを自動的に60秒にして返してしまう