DNSを設定する際、大抵レコード等をコピペするだけで完了します。後から「それぞれどんな意味だっけ、あの設定の意味わからなくてもいいのかな、というかDNSって何だろう」と、毎回調べておりました。一度整理して、DNS設定でよく見かける最低限だけ抑えておこうと思った次第です。
DNS
DNSとは、Domain Name Systemの略称で、ブラウザがインターネットリソースにアクセスできるように「ドメイン名とIPアドレス」との名前解決を行います。
スマホの電話帳に例えると...
| 要素 | 電話帳の役割 | 動作 |
|---|---|---|
| ドメイン名 |
google.com など、連絡先リストに登録された「名前」 |
人が覚えて使える「分かりやすい名前」 |
| IPアドレス |
142.250.199.110 など、その名前に紐づいた「電話番号」 |
コンピュータだけが扱える「実際の場所を示す番号」 |
| DNS | 電話帳アプリ全体 | 「名前」を「電話番号」に変換するシステム |
「名前解決」のプロセスは「名前しか知らない人に電話をかける」行為に似ています。
- ユーザー:「〇〇に電話したい」
- DNS: 電話帳を調べ、「〇〇」という名前が持つ電話番号(IPアドレス)を割り出す
- コンピューター: 解決された電話番号(IPアドレス)を使って、ようやく通信が可能になる
ざっくりと、 DNSはドメイン名をIPアドレスに変換し、ブラウザがインターネットリソースをロードできるようにするのです。
DNSの構造
ドメイン階層構造
まず、ドメインが示すIPアドレス(住所)は常に変わるため、「ドメイン名とIPアドレスの対応表」のような静的な一覧表で管理することはできず、インターネットは都度、最新の情報を問い合わせる必要があります。アクセスの瞬間に問い合わせる(名前解決を行う)仕組みが必要だということです。
そこでドメインは、TLD(トップレベルドメイン)、SLD(セカンドレベルドメイン)...と階層構造に管理されました。各階層の名前ごとに、その名前を持つドメインを管理するDNSサーバが世界中に分散している構成になっています。つまり、 DNSはインターネットを使った階層的な分散型データベースシステムのことです。
| ドメイン階層 | 位置 | 役割 |
|---|---|---|
| TLD (Top-Level Domain) | 最上位 | 「国・地域」あるいは「組織区分」名簿( .com .jp .org)この名簿が、次にどこへ問い合わせるべきかを示す |
| SLD (Second-Level Domain) | TLDの直下 | 「企業やサービスの名簿」(google, yahooなど)この名簿は、ウェブサイトのホスト名(www)を具体的なIPアドレスに変換するための情報を持っている |
| ドメイン名全体 | 完全修飾ドメイン名 | 国から番地までの完全な住所 |
ドメイン名の構成
ドメイン名 = ルートドメイン + 下位のドメイン + ホスト名
例えば www.google.com. だと
- 最後のドット
.がルートドメインで、基本省略 -
.comが下位のドメイン(TLD) -
googleも下位のドメイン(SLD) -
wwwがホスト名
名前解決に必要な4つのサーバ
ドメイン名の名前解決には大まかに以下の4種類のサーバが絡んでいます。
- DNSリカーシブリゾルバ
- ルートネームサーバ
- TLDネームサーバ
- 権威ネームサーバ
そうなんだと頭に入れておいて、ここでは最低限「権威ネームサーバ」について説明します。
権威ネームサーバ
ドメインの正確なDNSの情報を管理しており、 そのドメインに対してクエリが来たものに返答するネームサーバ です。そのドメインに関する真実(公式情報)を唯一知っている管理者とも言えます。
これは「家の住所」を管理している役所のようなものです。世の中にはたくさんの「DNSサーバー」がありますが、それらは「一時的に覚えている情報」や「どこに聞けばいいか」を知っているだけ。それに対して、権威ネームサーバーは情報を書き換える権限を持ち、常に最新で正確な情報を保持しております。
例えば、Resend などでドメイン設定を行う際、CNAMEやTXTレコードを設定するのは、この「権威ネームサーバー」に新しい公式情報(認証情報)を書き込んでいるということになります。
要するに、DNSの階層構造の名前解決を全てたどり完全なドメインを管理するネームサーバで、階層構造の一番下に位置します。
権威ネームサーバは、最終的にリクエストしているWebブラウザがWebサイトやその他のWebリソースにアクセスするために必要なIPアドレスに到達するようにします。
DNSのキャッシング
クライアントからのリクエストに対する迅速な名前解決のために、DNSにはいくつかのキャッシングが存在し、大きく分けて二種類のキャッシングになります。
- DMSサーバ自身のキャッシュ
- ブラウザによるDNSレコードキャッシュ
※キャッシングがあると言うことだけ抑えておきます。
DNSゾーン
DNSデータを管理する単位、範囲 です。
特定のドメイン名とその下位にあるすべての名前に関する情報を一括して管理する、責任の境界線を定めます。
例えば、example.com を取得した場合、そのドメイン全体(www.example.com mail.example.com blog.example.com など)の情報を管理する責任を持つのが、example.com ゾーンです。
このゾーンを管理する権威DNSサーバーは「example.com 内のすべての名前をIPアドレスに解決する」という専門的な役割を持っています。
また、権威ネームサーバは、ドメイン名とIPアドレスの対応情報を管理し、DNSシステム内で最も重要な役割を担っています。権威ネームサーバは、ドメイン名をクライアントから受け取り、そのドメイン名に関連付けられた情報を提供します。この情報には、ドメイン名に対応するIPアドレスや、メールサーバ(MXレコード)などの情報が含まれます。
「DNSゾーン」という言葉を聞いたら、「このドメインのすべての設定情報がまとめて保管され、一括で管理されている区画」と抑えておきましょう。この区画があるおかげで、自分のドメインを他ドメインの管理者とは関係なく自由に設定変更できるわけです。
DNSレコードの種類
レコード設定は、主にドメイン名と対応する情報(サーバーの場所、メールの送り先など)を結びつけるための設定です。webサイトやメールが正しく機能するためには、この「レコード」と呼ばれる情報が必要です。
レコードとは何か?
ドメイン名 example.com を、インターネット上の特定の 情報 に結びつけるためのデータ行のことです。ドメイン管理画面(DNSサーバー)に設定します。
レコードは、ドメインを使った通信(webの閲覧やメールの送受信)の 「行き先を示す地図」 の役割を果たします。
主要レコードの種類
webサイトとメールの運用において、最低限知っておくべき主要なレコード。
| レコード名 | 用途 | 説明 |
|---|---|---|
| Aレコード (Address) | ウェブサイト | ドメイン名(example.com)を、サーバーのIPアドレス(住所)に変換します。ウェブサイトの「サーバーの場所」を指定します。 |
| CNAMEレコード (Canonical Name) | ウェブサイト/サービス連携 | あるドメイン名(www.example.com)を、別のドメイン名(example.com)の別名として扱います。主にサブドメインや外部サービスへの接続に使われます。 |
| MXレコード (Mail Exchanger) | メール | ドメイン宛てのメールを処理するメールサーバーの場所(ホスト名)を指定します。 |
| TXTレコード (Text) | 認証/セキュリティ | テキスト情報を自由に書き込めるレコードです。主にドメインの所有者認証や、メールのセキュリティ設定(SPF、DKIM、DMARC)に使われます。 |
レコード設定の基礎用語
設定画面でよく使われる用語とその意味。
| 用語 | 説明 |
|---|---|
| タイプ (Type) | 設定するレコードの種類(A, CNAME, MX, TXTなど)。 |
| ホスト名 / 名前 (Host / Name) | レコードを適用するドメインの一部です。通常、メインドメインであれば「@」または空欄、サブドメインであれば「blog」などを入力します。 |
| 値 / データ (Value / Data) | レコードが指し示す具体的な情報です。AレコードならIPアドレス、CNAMEならドメイン名、MXならメールサーバーのホスト名が入ります。 |
| TTL (Time To Live) | 設定の情報がキャッシュされる時間です。短いほど変更が早く反映されますが、サーバー負荷が増すことがあります。通常は変更する必要はありません。 |
設定のポイントと注意点
ドメイン認証と接続
Resend や Squarespace などの外部サービスを利用する場合、ほとんどの場合CNAMEレコードやTXTレコードを設定するよう指示されます。これは、ドメインの正当な所有者であることを確認するための手続きです。
設定の反映時間
DNSの変更は、インターネット全体に情報が浸透するまでに時間がかかります(数分~数時間、最長で48時間程度)。これを 伝播(でんぱ) と呼び、設定後すぐに反映されなくても、しばらく待つ必要があります。
競合に注意
同じホスト名に対して、異なる種類のレコードを設定したり、同じ種類のレコードを複数設定したりすると、意図しないエラーが発生することがあります(特にAレコードやCNAMEレコード)。設定を変更する際は、既存の設定内容を必ず確認しましょう。
ちなみに、DNSサーバーから情報を収集するには dig コマンドが使われているようです。
以上です。