【AWS】Route 53のDNSレコードタイプ

# Route 53とは
ドメイン管理機能と権威DNS機能を提供するサービス。
以下の3機能を提供する。
1. ドメイン登録
    「example.com」のようなドメイン名を登録することができる。
2. ルーティング機能
    ドメイン名またはサブドメイン名に紐づくIPアドレス情報をブラウザに受け渡す。
3. ヘルスチェック
    接続先リソースの正常性を監視してくれる。
    リソースが使用不可の場合、Route53からAmazon CloudWatchへ通知することも設定可能。

【詳細】
[Amazon Route 53 とは？](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/Welcome.html)

# 権威DNSサーバ（機能）とは
キャッシュDNSサーバの問い合わせに対して、自分の管理する範囲内のIPアドレスとドメイン名の対応表（レコード）を用いて、IPアドレスまたはドメイン名を返信するサーバ（機能）のこと。

要するに、**DNS機能における案内人**的な立ち位置です。

【詳細】
[権威DNSサーバ](https://wa3.i-3-i.info/word12272.html)

# DNSレコードとは
上記の権威DNSサーバ説明の中に記載がある、対応表（レコード）がDNSレコードにあたります。
このレコードを元に、ドメイン名からIPアドレス（正引き）、IPアドレスからドメイン名（逆引き）の解決やその他諸々の設定をします。

# DNSレコードタイプ（Route 53で利用できる13個+α）

<table>
  <thead>
    <tr>
      <th>レコード名</th>
      <th>説明</th>
    </tr>
  </thead>
  <tr>
    <td> A </td>
    <td>
      ホスト名/ドメイン名に対応するIPアドレス（<b>IPv4</b>）が書かれたレコード
    </td>
  </tr>
  <tr>
    <td> AAAA </td>
    <td>
      ホスト名/ドメイン名に対応するIPアドレス（<b>IPv6</b>）が書かれたレコード
    </td>
  </tr>
  <tr>
    <td> CAA </td>
    <td>
      ドメイン名に対応する証明書の発行を許可する認証局（CA）を指定するレコード<br>
      CAAレコードの作成により、第三者による証明書の発行を防止できる
    </td>
  </tr>
  <tr>
    <td> CNAME </td>
    <td>
      ドメイン名に別名を指定するレコード
    </td>
  </tr>
  <tr>
    <td> DS </td>
    <td>
      子ゾーンのDNSKEYを参照するレコード<br>
      親ゾーンで設定する<br>
      ※ゾーン：各DNSサーバが管理する範囲のこと
    </td>
  </tr>
  <tr>
    <td> MX </td>
    <td>
      ドメイン宛のメールの転送先メールサーバと転送先の優先順位を指定するレコード
    </td>
  </tr>
  <tr>
    <td> NAPTR </td>
    <td>
      1つの値を別の値に変換または置換するためのレコード<br>
      例えば、電話番号をSIP URIに変換するなど
    </td>
  </tr>
  <tr>
    <td> NS </td>
    <td>
      ドメイン解決ができるDNSサーバの名前を指定するレコード<br>
      解決対象のドメイン情報を所有している別DNSサーバへの接続先情報を指定<br>
      ※自DNSサーバを指定することもある（自DNSサーバがドメイン情報を所有している）
    </td>
  </tr>
  <tr>
    <td> PTR </td>
    <td>
      IPアドレス（IPv4/IPv6）に対応するドメイン名を指定するレコード（A、AAAAレコードの逆）
    </td>
  </tr>
  <tr>
    <td> SOA </td>
    <td>
      ゾーンの管理情報が書かれているレコード
    </td>
  </tr>
  <tr>
    <td> SPF </td>
    <td>
      メール送信を許可するサーバのIPアドレスやドメイン名を指定するレコード<br>
      メール受信サーバがこのレコードを参照し、レコードに記載があるメールサーバから送信されたメールかチェックする<br>
      <b>※Route 53はこのレコードの作成を非推奨としているようです（代わりにTXTレコードの作成を推奨している）</b>
    </td>
  </tr>
  <tr>
    <td> SRV </td>
    <td>
      ドメイン名に関するアドレス以外の情報（優先順、負荷分散の重み、ポート番号）を指定するレコード
    </td>
  </tr>
  <tr>
    <td> TXT </td>
    <td>
      ドメイン名に関連するコメント（テキスト情報）を指定するレコード<br>
      代表使用例としてはSPFレコードの代わりとして使用する
    </td>
  </tr>
  <tr>
    <td> ALIAS </td> <td>Route 53独自拡張であるレコード（後述）</td>
  </tr>
</table>

# ALIASレコードに関して
**ALIASレコードを設定することで、AWSサービスドメイン名のIPアドレスを直接取得してくれます。**

CNAMEレコードは以下のようにクエリが2回発生します。

```
例：ELBにルーティングする

example.com にアクセス
→ example.comをCNAMEレコードで解決
→ ***.ap-northeast-1.elb.amazonaws.comをAレコードで解決
→ IPアドレス取得
```

ALIASレコードの場合は以下のように1回のクエリで完了します。

```
例：ELBにルーティングする

example.com にアクセス
→ example.comをAレコードで解決
→ IPアドレス取得
```

Aレコードに直接指定すればいいんじゃない？と考えましたが、IPアドレスは動的に変化する可能性があるため、ALIASレコードを使う必要があるようです。

**また、ALIASレコードはZone Apex（ゾーンの最上位ドメイン）に登録ができます。**

**CNAMEレコードはZone Apexに登録ができません。（DNSの仕様）**

#### 結論
エイリアスレコードのメリット・使い所

* ドメイン名を持つAWSサービスに直接ドメインを設定できる
* 最上位ドメインにエイリアスを設定したいとき
* **レスポンス速度を上げたいとき（直接IPアドレスを返してくれるため、CNAMEより速い）**

【詳細】
[Amazon Route 53のALIASレコード利用のススメ](https://dev.classmethod.jp/articles/amazon-route-53-alias-records/)
[【Route53】Zone Apex と CNAME とエイリアスレコードについて整理する](https://blog.serverworks.co.jp/route53-zone-apex-cname-alias-record#Zone-Apex)

# 余談
DNSの通信に割り当てられるポート番号が「53」であることが、Route 53の由来らしいです。

# 参考
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/Welcome.html

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/ResourceRecordTypes.html#AFormat

https://uniuni-diary.com/route53-dns-record/#toc1

https://wa3.i-3-i.info/word12284.html

https://blog.serverworks.co.jp/route53-zone-apex-cname-alias-record#Zone-Apex

https://dev.classmethod.jp/articles/amazon-route-53-alias-records/