Amazon Route 53のHosted Zoneの機能 ①ドメインの基本

#はじめに
ドメインの基本と<font color="DarkMagenta">Route 53の__Hosted Zone__</font>についてまとめました。
まずはHosted Zoneが何の代替サービスなのか説明するために、ドメインについて解説します。

#DNS用語
##ホスト
ネットワークに繋がれているサーバ、ルーター、パソコン、スマホ等のことです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/e8a03900-79ab-3ac6-6e3e-9023797bcdac.png)


##IPアドレス
インターネットに接続しているホスト同士が通信するために、ホストに割り当てる住所のようなものです。
IPアドレスは192.168.0.10(IPv4)や3002:0bd6:0000:0000:0000:ee00:0033:6778(IPv6)のように表されます。
インターネットに公開されているWebサイトにアクセスするためには、この__IPアドレスがわからないとアクセスできません__。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/cc9333f1-9e50-b5d6-5030-bcb8e0b9c9cb.png)

既に日本ではIPアドレスの発行元であるJPNICのIPアドレスが枯渇したことで、新規のIPv4の払い出しが停止している状態です。

##Naming
例えば__qiita.com__のIPアドレスをご存じの人がどれだけいらっしゃるでしょうか。普通は知りません。
ホストに覚えやすい__名前__を付け、その名前を使って通信するための仕組みのことを__Naming__と言います。
__名前とIPアドレスが対応付けられている__ため、人間が名前を指定してアクセスしたつもりでも、裏側でIPアドレスを用いて通信が行われています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/83bde460-a13a-2c9b-5e4d-4d91500109d1.png)


##ドメイン名
ホストが所属するネットワーク空間のことを__ドメイン__と言います。
上記の例で言うとexample.jpやsample.jp、example.comを指します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/43664444-0b0a-9748-0c6b-bebfe868d418.png)

ネットワーク空間という表現が曖昧ですが、目に見える区切りがあるわけではありません。
ホストが所属する何らかのグループに、識別しやすい名前を付けているということです。

識別する必要があるので、ドメイン名は__インターネット上で重複して登録することはできません__。
例えば「パソコン株式会社」と「コンピュータ株式会社」という会社があった場合、両方にcp.comというドメインを払い出すことはできません。


##ホスト名
__ドメイン内のホストを一意に特定するための名前__です。
例えば以下の例ではexample.jpやsample.jp、example.comの中にserver01という同じ名前のホスト名が存在します。
ドメイン内で一意であれば、他のドメインで__同じホスト名が使われていても問題ありません__。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/dbef404c-ff9b-785a-7cc8-5f5178730b25.png)


##名前解決
ドメイン名とIPアドレスの対応表を管理し、利用者からの要求に応じてドメイン名に対応するIPアドレスを答えることを__名前解決__と言います。

#ドメイン名管理の歴史
##インターネット黎明期のホスト一極集中管理
前述の通り、世界中のホストがホスト名を使って通信するためには、ホスト名が重複なく管理される必要があります。
昔はカリフォルニア州のスタンフォード研究所のSRI-NICが__HOSTSファイル__を管理していました。
HOSTSファイルとは、__ホスト名とIPアドレスのマッピング表__のことを指します。
利用者がSRI-NICに申請をし、SRI-NICがインターネットに公開したHOSTSファイルを利用者がダウンロードするという仕組みでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/16df1b4e-5cc4-c853-4bef-1befca4055b3.png)




##一極集中管理⇒分散管理
インターネットが発展するにつれ、世界中の人がホストの登録申請をするようになり、SRI-NICの登録処理が遅れるようになります。
そこでSRI-NIC以外の複数の組織が名前の管理をする__分散管理__の仕組みが登場します。

#階層化と委任によるドメイン管理
##階層化
複数の組織が管理者になった場合でも、ホストを特定するための名前はインターネット上で一意でなくてはなりません。
インターネット上で重複なくホストに名前を付けるための方法として__階層化__の仕組みが導入されました。

例えばblog.example.jpの場合はblog/example/jpの3つに区切り、matome.example.comの場合はmatome/example/comの3つに区切り、それぞれを層で表し階層を作ります。
それぞれの階層の名前が被らないようにドメインを作ることで、ドメイン名をインターネット全体で一意に設定することが出来ます。

![p6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/d95ee990-47c2-ef41-139e-44b729c33fb1.png)

※[2022/03/24 追記]図が誤っていたので修正しました



##ドメイン名の構成
ドメイン名はいくつかの__ラベル__に分解されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/96231f8a-f101-b3e8-5185-0d873f7426b0.png)

ルートドメインから全てのドメイン名を記述するドメインの表記を__Fully Qualified Domain Name(FQDN)__と言います。
上の例では<font color="Red">test.example.com.</font>がFQDNです。

##サブドメイン
DNSでは、ある層の下位の層のことを__サブドメイン__と表現します。
ある名前空間1の範囲が別の名前空間2の範囲に含まれている場合、名前空間1は名前空間2のサブドメインとなります。
test.example.com.の場合、comのサブドメインは__example__、example.comのサブドメインは__test__です。
ドメインとサブドメインは親と子の関係があります。

##ツリー構造
各階層に親子関係があり、親が複数の子を持ち、その子がまた自分を親として複数の子を持つことができるようなデータはツリー構造で表現することが出来ます。
ドメイン名をラベルごとに分解し、ツリーで表すと以下のようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/e161b3d1-db84-49d8-1fb6-44d919e64152.png)

##委任
サブドメインはそのドメインの管理者が自由に作ることができます。
作ったサブドメインを他者に__委任__するかどうかも管理者が決められます。
サブドメインを委任した場合、そのサブドメインのゾーン情報を管理するのは__サブドメインの管理者__になります。

#DNS(Domain Name System)
##DNSとは
DNSは階層化と委任の仕組みを用いてドメインを管理するためのシステムです。
ドメイン名とIPアドレスの__対応表__を管理し、利用者からの要求に応じてドメイン名に対応するIPアドレスを答える仕組みです。

委任先毎に対応表を管理するデータベースを持つ__分散データベース__です。

DNSのネームサーバは、ドメイン名・ホスト名とIPアドレスの対応をデータベースとして保存しています。
このデータベースで管理するデータを__リソースレコード__と言います。

##ゾーン
管理を任された範囲を__ゾーン__と言います。
委任元と委任先は__親と子の関係__で表されます。
それぞれのゾーンで__ネームサーバ__を作成し、名前解決の為に必要な対応表をネームサーバで管理します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/e85383fd-a228-42c1-a325-4673e36b04b2.png)

親の対応表には、自分のゾーン情報に加え、子ゾーンのネームサーバのFQDNとIPアドレスが記述されます。
また子の対応表には、1.ネームサーバのFQDN、2.自分のゾーン情報、3.子ゾーンのネームサーバのFQDNとIPアドレスが記述されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/edf02681-5b97-a095-96a2-f5b0d7f54e67.png)


##レジストリ・レジストラモデル
###レジストリとレジストラ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/ef810cbd-9141-9151-055b-eb233116214a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/c825ae8b-5534-5ca3-f37b-cffbeb2097ca.png)


###レジストリの役割
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/dfd2514a-dcb9-002b-466d-8cfe13ed1130.png)

###レジストラの役割
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/5395d8d8-416f-786e-2db1-88a4f1b5866a.png)

##ドメイン名を利用できる状態にする為には？
###ドメインの登録
レジストラにドメインの登録申請をします。
登録申請が完了すると、__ドメインを利用する権利を得ます__。

この時点では、<font color="Red">まだドメインを利用できる状態にはなっていません</font>。
※利用とは、例えばブラウザでsite.example.jp等をたたいてWebサーバが表示される状態にすることを指します。

###ネームサーバの管理

* ネームサーバを自分で運用する⇒__★Route 53のHosted Zoneで代替可能__
* レジストラのネームサーバを利用する


##DNSの構成要素
###スタブリゾルバー
スマホやパソコンなどの、インターネットに繋がっている機器です。
スタブリゾルバーは自分で名前解決は出来ないので、名前解決をできる人に問い合わせをします。

例えばユーザがblog.example.jpにアクセスしたい場合、上位の階層のネームサーバから順に「blog.example.jpについて教えて」と聞きます。
「blog.example.jpについて教えて」と聞くことを__名前解決要求__と言います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/a256196b-db25-51ca-5a37-c10e0ac61e26.png)



ネームサーバは、委任先の情報が聞かれた場合は委任先のネームサーバの情報をユーザに返します。
これを繰り返すことで、blog.example.jpのIPアドレスにたどり着くことが出来ます。

###フルリゾルバー
たくさんのスタブリゾルバが同じ問い合わせをネームサーバに行うと、ネームサーバに負荷がかかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/f8eccf27-7766-b5ac-f63d-c29ef449e9db.png)


__フルリゾルバー__は、スタブリゾルバーに代わって、ネームサーバに__名前解決要求__をします。
ドメイン名とIPアドレスのマッピング情報を__キャッシュ__し、同じ問い合わせがあった場合はネームサーバへの名前解決要求を省略してスタブリゾルバーにIPアドレスを教えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/1f3d7033-08d7-3f92-46fd-dff827a81cee.png)


###権威(Authority)サーバ
今までネームサーバと言っていたものは、DNSでは__権威サーバ__と言います。
権威サーバは問い合わせを受け、自分が所有するゾーンの情報か、委任先のネームサーバを応答します。


#続きの記事
次はRoute 53の機能について解説します。

#参考
##Webサイト

※著者名.“Webページのタイトル”. Webサイトの名称. 更新日付
恩塚伸一郎.[AWS再入門ブログリレー Amazon Route 53編](https://dev.classmethod.jp/articles/re-introduction-2020-route-53-hosted-zone/ "AWS再入門ブログリレー Amazon Route 53編"). DevelopersIO produced by Classmethod.jp. 2020.08.18
石橋勇二.[【初心者向け】無料ドメインを使ってAmazon Route 53で実装しながら理解するDNS](https://dev.classmethod.jp/articles/comprehend_how_to_work_name_resolve_with_route53/ "【初心者向け】無料ドメインを使ってAmazon Route 53で実装しながら理解するDNS"). DevelopersIO produced by Classmethod.jp. 2020.05.15
大塚昭彦.[IPv6アドレスにおける「ネットワーク」と「ホスト」の表し方](https://ascii.jp/elem/000/004/014/4014851/2/ "IPv6アドレスにおける「ネットワーク」と「ホスト」の表し方"). TECH.ASCII.jp. 2020.06.02 08時00分更新

[ドメイン名・ホスト名・FQDNって？](https://livra.geolocation.co.jp/iplearning/250/ "ドメイン名・ホスト名・FQDNって？").IT情報メディアLIVRA. 2020.05.15

其⽥ 学.[押さえておきたい！基盤技術(2)DNSの基本と最新動向](https://www.nic.ad.jp/sc-hiroshima/program/sonoda.pdf "押さえておきたい！基盤技術(2)DNSの基本と最新動向").⽇本DNSオペレーターズグループ/株式会社インターネットイニシアティブ

##本
こちらの1章から4章を参考にしました。
株式会社日本レジストリサービス(JPRS) 渡邉結衣、佐藤新太、藤原和典.(2018).[DNSがよくわかる教科書](https://www.amazon.co.jp/dp/479739448X/ "DNSがよくわかる教科書")
佐野 裕.(2013).[インフラエンジニアの教科書](https://www.amazon.co.jp/%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-%E4%BD%90%E9%87%8E%E8%A3%95-ebook/dp/B01L8CANUK/ref=cm_cr_arp_d_product_top?ie=UTF8 "インフラエンジニアの教科書")