AレコードとCNAMEレコードを整理する

#はじめに
[夏ぼっちカレンダー（仮）](https://qiita.com/pirorirori_n712/items/4dc66870ccd3cc540f68)の二日目の記事です。

AレコードとCNAMEレコードを整理します。

記事の中に間違いなどあれば指摘していただけると幸いです。

#リソースレコードとは
ネームサーバが目的のIPを探しに行くにあたって、
必要な情報が入っている対応表の中にある一つ一つのレコードのこと

リソースレコード一つは以下の情報からできています。

| ラベル | TTL | クラス | タイプ | リソースデータ |
|---|---|---|---|---|
| ドメインの名前など（タイプによって何を入れるか異なる） | キャッシュする時間（単位は秒） | いくつか種類はあるが基本的にINしか使われない | リソースレコードの種類 | 値（タイプによって何を入れるか異なる） |

例えば、タイプをAとすると以下のようになります。

| ラベル | TTL | クラス | タイプ | リソースデータ |
|---|---|---|---|---|
| example.co.jp | 60 | IN | A | 192.168.0.1 |

#リソースレコードの種類
リソースレコードには種類があり、
それぞれどのような対応をしているかが違います。

以下、リソースレコードの例です。[^1]

| 種類 | 意味 |
|---|---|
| Aレコード | ドメインに紐づくIPアドレス |
| NSレコード | ドメインのゾーンを管理するネームサーバ |
| MXレコード | ドメインに紐づくメール受信サーバ |
| TXT(SPF) | このドメインのメール送信元サーバ |
| SOA | ドメインのゾーンの管理情報 |
| CNAME | このドメインの別名でリソースの参照先 |

この中からAレコードとCNAMEレコードについて抜き出します。

#Aレコード（Adress）
・ドメインとIPアドレスの対応表

ドメインとIPアドレスの対応は
場所の名前と住所によく例えられます。

| 名前 | 住所 |
|---|---|
| 東京駅 | 東京都千代田区丸の内１丁目 |
| 東京国際展示場 | 東京都江東区有明３丁目 |


これがドメインとIPアドレスだと以下のようになります。

| ドメイン | IPアドレス |
|---|---|
| example.co.jp | 192.168.0.1 |
| example.jp | 192.168.1.1 |

このように、
Aレコードは
ドメインとIPアドレスが対応するレコードの種類です。

Aレコードは一つのIPアドレスに対して、
いくつも作成することができます。

##Aレコードをなぜ設定するのか
・IPアドレスだと分かりにくく、ホスト名を付けたほうが人間が扱いやすいから

先ほどの例で言えば、
「東京都千代田区丸の内１丁目」と言っても何を指しているのかよく分かりませんが、
「東京駅」と言えばすぐに分かります。

IPアドレスの数字の羅列より
ドメインの方が覚えやすく、分かり易いです。

#CNAMEレコード（Canonical Name）
・ドメイン名の別ドメイン名を決める
CNAMEレコードはドメイン名の別ドメイン名を決めることができます。

先ほどの例に、

| 名前 | 住所 |
|---|---|
| 東京国際展示場 | 東京都江東区有明３丁目 |

がありましたが
これをCNAMEレコードにすると以下のようになります。

| 愛称（別名） | 名前 |
|---|---|
| 東京ビックサイト | 東京国際展示場 |

これがドメイン名と別ドメイン名だと以下のようになります。

| ドメイン | 参照先ドメイン |
|---|---|
| www.example.co.jp | example.co.jp |

このように、
CNAMEレコードは
ドメインの別名をつけることができます。

ドメインに対する別名をつけるので、
ドメインのIPを設定したAレコードが必ず必要になります。

中の流れとして以下のようなことが行われます。
１「東京ビッグサイトの住所を教えて」と言う
２「東京ビッグサイトは東京国際展示場」というCANMEレコードが返ってくる
３「東京国際展示場の住所を教えて」と言う
４「東京国際展示場は東京都江東区有明３丁目」というAレコードが返ってくる

このように応答を繰り返して辿っていき
最終的に目的のものにたどり着きます。

また、CNAMEレコードは一つのドメインに対して、
いくつも作成することができます。

##CNAMEレコードをなぜ設定するのか
CNAMEレコードを設定する理由はいくつかあります。
以下はその中の１例です。

・IPアドレスを変更したときの手間を省きたい
例えば、CNAMEレコードではなく
Aレコードで以下のように設定することもできます。

| ドメイン | IPアドレス |
|---|---|
| example.co.jp | 192.168.0.1|
| www.example.co.jp | 192.168.0.1 |

しかし、これだと
IPアドレスの変更があった際に
二つのレコードのIPアドレスを書き換えなければいけないです。

これを、片方をCNAMEで設定しておけば
書き換えるIPアドレスは一つで済みます。

| ドメイン | IPアドレス |
|---|---|
| example.co.jp | 192.168.0.1 |

| ドメイン | 参照先ドメイン |
|---|---|
| www.example.co.jp | example.co.jp |

#参考
mochikoAsTech『【ダウンロード版】DNSをはじめよう　～基礎からトラブルシューティングまで～』2018年

[TCP/IP - DNS 2](https://www.infraexpert.com/study/tcpip23.html)
[DNSレコードタイプの一覧](https://ja.wikipedia.org/wiki/DNS%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%82%BF%E3%82%A4%E3%83%97%E3%81%AE%E4%B8%80%E8%A6%A7)
[【ドメイン】DNSレコード設定の各レコードの意味を教えてください。](https://help.onamae.com/answer/7883)

[【勉強会】IPアドレス、ホスト名、ドメインを正しく説明できますか？](https://www.en-pc.jp/blog/archives/480)
[【図解】ドメインとは？をわかりやすく解説します](https://www.kagoya.jp/howto/webhomepage/01/)
[IPアドレスとは？をわかりやすく解説します](https://www.kagoya.jp/howto/network/ipaddress/)

[DNSの勉強ノート【その2】A/CNAME/NS/MXレコード](https://qiita.com/RyomaTaniyama/items/6d8748e8096ea4f18b5b)
[Aレコードってなんだっけ？ よく使うDNSレコードの種類と書き方](https://hp-shizuoka.jp/column/2016/10/7515/)
[AレコードとCNAMEレコードの違い](https://qiita.com/PharaohKJ/items/b6a933b7f79afe8a32e1)
[DNSとは? 全体像とDNSレコードの種類](https://qiita.com/naoki_mochizuki/items/d90c1fdd5b25c0136a69)
[めも：DNS設定・AレコードとCNAMEレコードの違い](http://tech-son.hatenablog.jp/entry/2017/10/20/203000)
[第64回DNS(3) リソースレコードタイプ](http://www5e.biglobe.ne.jp/aji/3min/64.html)
[CNAMEレコードとはなんですか？](https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14114226029)
[DNSレコードの種類について【A,CNAME,MX,TXT】](https://server-99.com/dns-record/)
[DNSとかネームサーバとかRoute53とかAレコードとかCNAMEとかがわからない人のためのまとめ](http://fujiike.hateblo.jp/entry/2015/09/14/191934)

[^1]: mochikoAsTech『【ダウンロード版】DNSをはじめよう　～基礎からトラブルシューティングまで～』2018年、67ページ