【初心者向け】DNSってなに?

記事タイトルとURLをコピーする

こんにちは!

クラウドインテグレーション部(CI部)技術2課の反町です。

「DNSってIPを名前解決するものなんでしょ。」と単純に考えていました。

しかし、AWSとオンプレミス間での名前解決やレコードが関連してくるとややこしいなと感じたので「DNSとは?」という基本をAWSのDNSサービスであるRoute53を実際に触りながら調べてみました。

DNSについて知る

DNSとは??

DNSは、Domain Name Systemの略で、 インターネット上で ドメイン名 を管理・運用するために開発されたシステムです。

郵便で手紙を送る時に住所が必要であるのと同様に、 インターネットでは、 電子メールを送ったりウェブサイトを見たりするために、 相手がインターネット上のどこにいるのかを特定する必要があります。 人が覚えやすい「インターネット上の住所」にあたるものとして利用されています。

引用元:DNSとは - JPNIC

なるほど。手紙を送るときに相手先の場所を知るのに住所が必要なのと同じで、インターネット上で相手先を知りたいときに必要となるのがドメイン名なんですね! f:id:swx-miyu-sorimachi:20211207171936p:plain

IPアドレスとDNS名

インターネット上のコンピュータ同士が通信する際には、IPアドレスを使用しています。しかし、IPアドレスのような数字の羅列は人間には覚えにくいため、人間が覚えやすいようにドメイン名に変換しています。 このドメイン名とIPアドレスを対応させるのがDomain Name System (DNS)になります。 f:id:swx-miyu-sorimachi:20211207173309p:plain

DNSでの問い合わせ

DNSサーバーの種類

再帰的DNS

再帰的DNSはローカルDNSまたはキャッシュDNSとも呼ばれ、権限のあるサーバーからの応答を反復し、最終的なIPアドレスをクライアントに返します。

権威DNSサーバー

権威DNSサーバーは、特定のドメイン名を維持するためにドメイン名レジストラが使用するDNSサーバーです。権威DNSサーバーは、ドメイン名の管理に使用されます。

再帰的DNSとは異なり、権威DNSサーバーは、自分自身で管理されているドメイン名のみを解決します。

DNS問い合わせの流れ

わかりやすさを重視して簡単な説明にしています

f:id:swx-miyu-sorimachi:20211209153105p:plain

1. ユーザーがウェブブラウザで「example.com」を入力してEnterを押します

2. 「example.com」リクエストは 再帰的DNSに聞きに行きます

3. 再帰的DNSはリクエストを権威サーバー1に転送します 権威サーバー1でわからなかった場合、再帰的DNSサーバーは権威サーバー2にリクエストを送信します

4. 5. 「example.com」リクエストを解決できる権威サーバーにたどり着くまで繰り返されます

6. 解決できたサーバーから「example.com」のIPアドレス「192.0.2.33]を教えてもらいます

7. 再帰的DNSはそのIPアドレスをウェブブラウザに返します

8. ウェブブラウザは再帰的DNSから取得したIPアドレスに「example.com」リクエストを送信します

9. IPアドレス「192.0.2.33]にあるWebサーバーからウェブブラウザに「example.com」のウェブページが返され、表示されます

ここまでで、DNSとは何かどのように名前解決が行われているのかざっくりとした流れは理解できました。

DNSサーバーの設定

DNSレコードとは?

DNS関連の話をしていてDNSレコードの話が出てくるといきなりややこしく感じてしまうレコードアレルギーなので、克服のためにレコードについて整理してみたいと思います。

ドメイン名とIPアドレスの対応表を「ゾーンファイル」といい、 その1行1行のことを「DNSレコード」と呼んでいます。

Aレコード

ドット形式 10 進表記の IPv4 アドレスを使用して、ウェブサーバーなどのリソースにトラフィックをルーティングします。

引用元:サポートされる DNS レコードタイプ - Amazon Route 53

ドメイン名「blog.example.com」はIPアドレス「10.0.0.3」ですよ。と直接情報を入力するのがAレコードなんですね。 Route53だとこんな感じでした。 f:id:swx-miyu-sorimachi:20211209163918p:plain

MXレコード

メールサーバーの名前を指定します。複数のメールサーバーがある場合は、優先順位を指定します。MX レコードの各値には、優先順位とドメイン名という 2 つの値が含まれます。 E メールサーバーのドメイン名. A レコードまたは AAAA レコードの名前 (mail.example.com など) を指定します。

引用元:サポートされる DNS レコードタイプ - Amazon Route 53

メールサーバのホスト名を定義するレコードなので、まずはAレコードでメールサーバに対してドメイン名を定義してあげる必要があります。

Aレコードでドメイン名「mailserver.example.com」はIPアドレス「10.0.0.5」のサーバーですよ。と定義してから、MXレコードで○○@example.comというメールアドレスは「mailserver.example.com」が受信しますと登録してあげます。

数字は優先値を表していて、10が最優先の値ですが任意の値で大丈夫です。

※MXレコード登録の際には○○@example.comというメールアドレスはすべてメールサーバが受信するのでホスト名は空欄です。

Route53だとこんな感じでした。 f:id:swx-miyu-sorimachi:20211209183524p:plain

NSレコード

ホストゾーンのネームサーバーを識別します。

引用元:サポートされる DNS レコードタイプ - Amazon Route 53

「ドメイン名『example.com』に関しては、DNSサーバ『ns1.example.com』に問い合わせてください」といった情報のレコードのことをNSレコードといいます。

つまり、NSレコードには管理の委託先が書かれていて、「それに関しては○○DNSサーバさんに聞いて!」と委託先を紹介するときに使う情報です。

先ほどの図で権威サーバー1がRoute53だとすると赤枠の部分の情報を登録してあげるといったイメージですね! f:id:swx-miyu-sorimachi:20211210110119p:plain

Route53ではあらかじめ登録されており、ネームサーバーを追加、変更、または削除しないことを推奨していました。

参考:Amazon Route 53 がパブリックホストゾーンに作成する NS レコードと SOA レコード - Amazon Route 53

f:id:swx-miyu-sorimachi:20211210111101p:plain

SOAレコード

ドメインおよび対応する Amazon Route 53 のホストゾーンに関する情報を提供します。

引用元:サポートされる DNS レコードタイプ - Amazon Route 53

NSレコードには、「ドメイン名『example.com』に関しては、DNSサーバ『ns1.example.com』に問い合わせてください」といった情報が登録されていました。SOAレコードには問い合わせ先のDNSサーバ『ns1.example.com』の詳しい情報を記載しています。

例えば、レコードの内容がたくさん詰まっているゾーンファイルが更新されているかチェックする時間を決めていたり、過去にほかのDNSサーバーに「これ知ってる?」と聞いて「知らないよ!」と言われたメモの有効期限などの情報が書かれています。

SOAレコードもRoute53ではあらかじめ登録されており、新たに追加はできませんが編集は可能です。

参考:Amazon Route 53 がパブリックホストゾーンに作成する NS レコードと SOA レコード - Amazon Route 53 f:id:swx-miyu-sorimachi:20211210113410p:plain

TXTレコード

二重引用符 (") で囲まれた 1 つ以上の文字列が含まれます。

引用元:サポートされる DNS レコードタイプ - Amazon Route 53

どう利用するのかわからなかったので少し調べてみると、ホスト名に関連付けるテキスト情報(文字列)を定義するレコードで、送信ドメイン認証の認証情報(SPFレコード)などを記述することが多いようです。

送信先のドメインに対して自由にコメントが書けるレコードで、コメントに対してルールを作ることで意味を持たせることができるレコードです。上にあるSPFレコードは「こういうIPアドレスからメールが届いたら安全で、それ以外は危ない」といった内容の認証情報であり、TXTレコードに記載することができます。

Route53だとこんな感じでした。 f:id:swx-miyu-sorimachi:20211210115254p:plain

CNAMEレコード

acme.example.com などの現在のレコードの名前に対する DNS クエリを、別のドメイン (example.com、example.net など) またはサブドメイン (acme.example.com、zenith.example.org など) にマッピングします。

引用元:サポートされる DNS レコードタイプ - Amazon Route 53

ドメイン名に別のドメイン名を付けられるレコードです。ドメイン名を別のドメイン名に転送する時などに利用します。 例えば、Aレコードで「example.com」はIPアドレス「10.0.0.6」と登録してCNAMEレコードで「example.com」に別名「www.example.com」を付ければ「www.example.com」のIPアドレスは「10.0.0.6」となります。

Route53だとこんな感じでした。 f:id:swx-miyu-sorimachi:20211214175701p:plain ※CNAMEレコードは同じホスト名をもつレコードは登録できないという制約があります。なので、必ず他のレコード設定とは異なるホスト名を入力する必要があります。

Route53では何ができる?

ここまでで、DNSとは何かどのように名前解決が行われているのかとレコードについて理解できたと思います。

じゃあAWSのサービスであるRoute53では何ができるのだろう!!??

と、気になり調べてみたのですが様々な機能があるためブログが長くなりすぎてしまうのでRoute53に関しては別でまとめたいな~と思います!

まとめ

  • DNSはIPアドレスに人間が覚えやすくするための名前をつけて、その名前とIPアドレスを対応させるもの。
  • レコードはいくつかの種類があり、それぞれがDNSの設定を決めている。レコード情報が入っているファイルをゾーンファイルという。