Route53 「ホストゾーン」とか「NSレコード」と聞いてもビビらなくなることができる記事

# 0. 記事を書いたきっかけ
普段の業務でRoute53周りの設定をするとき、「ホストゾーン」、「NSレコード」などの単語を聞くと若干緊張が走るので、これはいかんと思って基本からしっかり理解するために記事を書くことにしました。

# 01. DNS周りの基本概念を整理
## ドメイン名
よく見るやつです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/58cedaa6-7671-d511-2cf4-0ecec91a2549.png)



## 名前解決
ドメイン名からIPアドレスに変換することをいいます。逆にIPアドレスからドメインに変換もできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/182eec14-5ec8-77d4-e14c-f82d8bf2d869.png)


## DNS
Domain Name System 
上記の名前解決を行う仕組みそのもののことです。
詳細な図の部分は以下の記事より引用させていただきました。

https://jprs.jp/related-info/guide/topics-column/no10.html


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/7b9b261a-362c-8cd7-b056-48f3458e32ff.png)


## DNSサーバー
上記のDNSの仕組みの中で、IPアドレスとドメイン名の変換とかもろもろをしてくれるコンピュータの総称のことをいいます。
<br>

**キャッシュDNSサーバー**
過去のリクエスト結果を保存して再利用し、問い合わせ回数を減らす。
<br>

**再帰リゾルバ**
クライアントから受けたリクエストに対して必要な権威DNSサーバーに問い合わせを繰り返し、最終的な名前解決を行う。
<br>

**権威DNSサーバー**
ネームサーバーとして機能して、特定のドメインに関連する公式のDNS情報（後述)を保持して回答する。

などの種類がありますが、キャッシュDNSサーバーと再帰リゾルバが同じサーバーである場合が多いです。

https://www.cloudflare.com/ja-jp/learning/dns/dns-server-types/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/5c299978-f6e6-781b-3a19-e8f50b716da8.png)


## ゾーン
DNSサーバーは自分のドメイン配下のドメインを管理していて、その範囲のことをゾーンと呼びます。

例として、example.comなら、comドメインのゾーンにexample.comというドメインが存在することになります。

階層構造の図は以下の記事より引用させていただきました。

https://lpi.or.jp/lpic_all/linux/network/network07.shtml

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/d95d34e3-1079-2127-50af-a824010342ee.png)


## ゾーンファイル
DNSサーバーが問い合わせ対応するためにカンニングするファイルのことです。DNSサーバーにテキストファイルとして保存されています。
ドメイン名がインターネットでどのように振る舞うべきかの指示書的な役割を担っています。
先ほどのゾーンの情報はこのゾーンファイルに記されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/391a845e-603e-571e-a907-16d144c960e7.png)


## DNSレコード
ゾーンファイルの1行(record)のことです。ゾーン内の各レコードはAレコードや、NSレコードなどいくつかの種類があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/ab818646-9ef8-ab9d-62ad-5ad6c1dde662.png)


# 02 それを踏まえて、Route53は何をしているのか？
お名前.comでドメインを購入して、Webサーバーにアクセスするまでに何をしていたのかを整理していきます。
手順としてはこちらの記事の手順を参考にさせていただきます。

https://smallit.co.jp/blog/a1151/

## Route53がやってくれることの全体像

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/bba7b871-32ed-db2f-5bdf-90c081d243fe.png)

こんな感じのことをしてくれます。
例としてお名前.comで、ドメインを取得してEIPを紐づけたEC2サーバーの名前解決を実現しています。

1. ホストゾーンを作成
2. Aレコードを作成
3. レジストラ（ドメインを購入したサイトで）ネームサーバーの設定

この3ステップで画像の紫色の名前解決の部分を実装することができます。


## (1)ホストゾーンの作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/b8d3f4fb-1e17-5094-0480-4940cac5ea91.png)

Route53のホストゾーンは、最初に説明したDNSの中での**ゾーンファイルのような役割を果たすコンテナ**です。
最初にドメイン名だけを登録してホストゾーンを作成すると、NSレコード（ネームサーバーを指定するレコード）、SOAレコード(ゾーンファイルの基本情報)が設定されます。この時にRoute53が裏側でネームサーバーも用意してくれます。
つまり、ホストゾーンをぽちぽち設定するだけで
**取得したドメイン名に対応するネームサーバーを立てつつ、ゾーンファイルを用意して、最低限のDNSレコードも記載してくれる**
ということを行なってくれます。Route53、すごい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/90c463ed-7a90-6e0f-7087-88d68ab15814.png)

後からそこに必要なDNSレコードを追加していく形になります。


## (2)レコードの作成
名前解決したいサーバーに固定IPを割り当てたあとに、作成したホストゾーンにAレコード(名前解決したIPアドレスを示すレコード）を追加します。
この時にレコード名を入れなければ、ホストゾーンのドメイン名（画像の場合だとhogehosomatuexample.com=ルートドメイン名)の名前解決先のIPとなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/65d58c87-0cc9-c5bd-3b60-f4f77b3ae12b.png)

これによって、取得したドメインと、用意した固定IPアドレスとの名前解決する準備が整います。

## (3)お名前.comでのネームサーバーを登録
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/fbc717cf-2876-1ace-71fa-ce4aa9ba2dba.png)

ネームサーバーの設定を行うことで、購入したドメインの解決先として登録することができます。
これはRoute53の機能ではないですが、ドメインの購入をRoute53で行うとこの処理も行うことができます。（ドメイン購入はお名前.comよりもちょっと高い）

このようにRoute53は、DNSとAWS内の中継をこなしてくれるサービスだということが理解できました。

# 03.まとめ
DNSの基礎知識と、Route53でシンプルなAレコードを設定する例を見て、Route53に対する全体像への理解が深まりました。
これで、「ホストゾーン」とか「NSレコード」とかが出てきても多少ビビらなくなることができました。
初学者の書いた記事なので、誤解をうむ表現や間違いなどがありましたら、ご指摘していただけると幸いです。