[DNS] DNSとは

# DNSとは
- DNS=Domain Name System
- システム・サーバー間の通信を行う際、ドメイン名とIPアドレスの紐付け（名前解決）や、宛先ホストを指示するためのシステム

|IPアドレス|ドメイン名|
|---|---|
|123.456.789|aaa.com|

#### ※IPアドレスは数字で構成され人間にとって識別し辛いためドメイン名が考案された。

# DNSを使った問い合わせの流れ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955010/8ad1c183-bdcc-6cf6-0bd1-b9e6dca2f227.png)

1. PC がDNSキャッシュサーバーに、ドメイン名でアクセスする
1. DNSキャッシュサーバーがDNSルートサーバーに、管理情報 (ドメイン名に対応するIPアドレスは何か) を問い合わせる
1. DNSルートサーバーがDNSキャッシュサーバーに、管理情報のあるDNSサーバーを知らせる
1. DNSキャッシュサーバーが管理情報のあるDNSサーバーに、ドメイン名に対応するIPアドレスを問い合わせる
1. 管理情報のあるDNSサーバーはDNSキャッシュサーバーに、IPアドレスを回答する
1. DNSキャッシュサーバーはPCに、IPアドレスを回答する
1. PCはIPアドレスでWebサイトにアクセスし、ブラウザ上にWebサイトが表示される

#### ※DNSサーバは世界中にサーバを分散させたり、キャッシュを行う（DNSキャッシュサーバを利用する）ことで、大量のアクセスに対応する。

# DNSキャッシュサーバ（フルサービスリゾルバ）
- ドメイン名に対応するIPアドレスを**一時的**に保存しているサーバ。
- 過去に問い合わせ済→過去のIPアドレスを回答
- 過去に問い合わせ無、または有効期限（TTL）切れ→DNSルートサーバに問い合わせ

#### ※DNSキャッシュサーバの役割
- DNS問い合わせの処理時間短縮
- ルートDNSサーバの負荷軽減
#### ※キャッシュ=データを一時的に保存する機能
#### ※TTL(Time To Live)=DNSキャッシュサーバがキャッシュする情報の有効期限

# ルートDNSサーバ（ネームサーバの最上部）
- DNSキャッシュサーバが最初に問い合わせをするサーバ
- 世界に13機

# ネームサーバ（権威DNSサーバ、DNSコンテンツサーバ）
- ドメインとIPアドレスを紐づける台帳（ゾーンファイル）を持ったサーバ全体を意味する
- ルートDNSサーバもネームサーバの一種
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955010/b80deda1-3129-a0c9-c868-8dd3d023fdf1.png)

# DNSレコード（ゾーンファイル）
- 権威DNSサーバー内に存在
- ドメイン名に関連付けられたIPアドレスや、ドメインに対するリクエストを処理する方法などのドメインに関する情報
- レコードはテキストファイルから構成（DNSシンタックス）されている
- 例.) TTLレコード=DNSサーバーがレコードを更新する頻度

#### DNSシンタックス=DNSサーバーに何を実行するか指示するためのコマンドとして使用される文字列

|レコード種別|内容|
|:--|:--|
|A|ホストのIPアドレス（IPv4）|
|AAAA|ホストのIPアドレス（IPv6）|
|SOA|ゾーン（ドメイン）情報|
|NS|ドメインのDNSサーバ名|
|CNAME|ホスト名のエイリアス（別名）|
|PTR|IPアドレスに対するホスト名（逆引き）|
|MX|ドメインのメール・サーバ名|
|HINFO|ホストの追加情報。ホストのハードウェア・ソフトウェア（OS）情報。|
|WKS|ホストで実行されているサービス情報（Well Known Services）|
|TXT|ホストへのテキスト情報|

## Aレコード
ホストのIPアドレス（IPv4）を示すレコード。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580406/73b31733-c54f-0910-b880-fb7241ff2a92.png)

|項目|設定値(例)|説明|
|:--|:--|:--|
|Name|`www.aaa.com.`|ドメイン名|
|TTL|300|キャッシュサーバ上でのレコードの有効期限|
|Type|A|レコード名|
|Value|123.456.789.123|IPアドレス（IPv4）。複数設定可能。|

## SOAレコード
DNSサーバの親・子のうち、子のみが保有し、ドメインのゾーンの起点（親）を示すレコード。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580406/e1c9f177-aba9-8721-a1c9-265ae556d3a8.png)

|項目|設定値(例)|説明|
|:--|:--|:--|
|Name|@|「@」の場合ゾーン名自身を示す。|
|TTL|300|キャッシュサーバ上でのレコードの有効期限|
|Type|SOA|レコード名|
|Value|aaa.com. <br>email.aaa.com. <br>1 <br>7200 <br>900 <br>1209600 <br>86400|＜MNAME＋RNAME＋SERIAL＋REFRESH＋RETRY＋EXPIRE＋MINIMUM＞<br>MNAME：基となるデータを持つネームサーバの名前<br>RNAME：このドメインの管理者のメールアドレス（@は.に置換）<br>SERIAL：ゾーンファイルのバージョン<br>REFRESH：ゾーンの情報をリフレッシュするまでの時間<br>RETRY：REFRESHでリフレッシュNGのときのリトライの時間<br>EXPIRE：リフレッシュNG時の、セカンダリネームサーバ上のデータ有効時間<br>MINIMUM：ネガティブキャッシュ（存在しないドメイン情報）の保有時間|

* [＠IT：DNS Tips：SOAレコードには何が記述されている？](https://atmarkit.itmedia.co.jp/fnetwork/dnstips/014.html)

## NSレコード
ドメインのDNSサーバ名を示すレコードで、
DNSサーバの親・子双方で保有し、権限移譲の状態を表している。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580406/c7cb9483-c58c-5b8d-e597-1708d5be2016.png)

**【例】子DNSサーバ：`aaa.com`（Aレコード(IPアドレス)保有しているサーバ）**

|項目|設定値(例)|説明|
|:--|:--|:--|
|Name|@|「@」の場合ゾーン名自身を示す。|
|TTL|300|キャッシュサーバ上でのレコードの有効期限|
|Type|NS|レコード名|
|Value|`www.aaa.com.`|権限移譲先のネームサーバ（子DNSサーバ自身）|

**【例】親DNSサーバ：`com`（Aレコードを持っておらず、子サーバに権限移譲している）**

|項目|設定値(例)|説明|
|:--|:--|:--|
|Name|aaa|子DNSサーバ名（最後の「.」なしで、後ろの「.com.」を省略）|
|TTL|300|キャッシュサーバ上でのレコードの有効期限|
|Type|NS|レコード名|
|Value|`www.aaa.com.`|権限移譲先のネームサーバ（子DNSサーバ）|


## CNAMEレコード
ホスト名のエイリアス（別名）を示すレコード。（Canonical NAME）
特定のホスト名を、別のドメインに転送できる。

以下の例だと、
`http://www.aaa.com`のアクセスを、`http://www.bbb.com`に転送する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580406/a938155f-43e6-7bac-e81c-f3284edd81ab.png)

**【例】DNSサーバ：aaa.com**

|項目|設定値(例)|説明|
|:--|:--|:--|
|Name|www|ホスト名（最後の「.」なしで、後ろの「.aaa.com.」を省略）|
|TTL|300|キャッシュサーバ上でのレコードの有効期限|
|Type|CNAME|レコード名|
|Value|`www.bbb.com`|転送先のドメイン|

# 参考リンク
- [【図解】DNSサーバーとは？設定・変更と確認方法 | カゴヤのサーバー研究室](https://www.kagoya.jp/howto/rentalserver/dns-server/)
- [30分で学ぶDNSの基礎の基礎](https://2014.seccon.jp/dns/dns_basics_in_30minutes.pdf)
- [レコードの種類9つ紹介！DNSの概要や特徴についても解説 | テックマガジン from FEnetインフラ](https://www.fenet.jp/infla/column/server/%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E7%A8%AE%E9%A1%9E9%E3%81%A4%E7%B4%B9%E4%BB%8B%EF%BC%81dns%E3%81%AE%E6%A6%82%E8%A6%81%E3%82%84%E7%89%B9%E5%BE%B4%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/)
- [IIJ DNSプラットフォームサービス オンラインマニュアル - DNSレコードの登録ルール](https://manual.iij.jp/dpf/help/19629152.html#DNS%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E7%99%BB%E9%8C%B2%E3%83%AB%E3%83%BC%E3%83%AB-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%82%BF%E3%82%A4%E3%83%97%E3%81%94%E3%81%A8%E3%81%AE%E7%99%BB%E9%8C%B2%E3%83%AB%E3%83%BC%E3%83%AB)
- [＠IT：DNS Tips：ゾーンファイルの書き方について教えてください](https://atmarkit.itmedia.co.jp/fnetwork/dnstips/031.html)