DNSレコードの種類と意味

目次
名前解決の仕組みについて学んできましたが、今回はインフラエンジニアらしくDNSサーバのレコードについて解説していきます。

DNSサーバがあっても、レコードが登録されていなければ解決する名前がないので意味がありません。

システム構築において、作ったシステムを利用してもらえるようにするためにもレコードの登録管理が必要です。

そんなときのためにも、DNSサーバのレコードをきちんと把握しておきましょう。

DNSレコードタイプとは

DNSレコードとは、DNSサーバが名前解決を行うためのデータ群のことを言います。

例えば、「www.example.com」を「192.0.2.100」と名前解決するには、この2つの情報紐づけが必要になります。

この組み合わせをレコードと呼びます。

DNSサーバーには、さまざまな種類の情報(レコード)が保存されています。

これらのレコードは、ドメイン名に関連する様々な情報を提供します。

主要なDNSレコードタイプにはそれぞれ異なる役割があり、ネットワークの動作に不可欠です。

これらのレコードを適切に設定することで、Webサイト、メール、その他のインターネットサービスが正常に機能します。

DNSレコードの設定ミスはサービス停止につながる可能性もあるため、注意が必要です。

レコード種類 説明 使用目的 書き方例
A IPv4アドレスレコード ドメイン名を IPv4 アドレスに変換 example.com. IN A 192.0.2.1
AAAA IPv6アドレスレコード ドメイン名を IPv6 アドレスに変換 example.com. IN AAAA 2001:0db8:85a3:0000:0000:8a2e:0370:7334
CNAME 正規名レコード あるドメイン名の別名を定義 www.example.com. IN CNAME example.com.
MX メールエクスチェンジャーレコード メールサーバーの情報を指定 example.com. IN MX 10 mail.example.com.
NS ネームサーバーレコード ドメインの権威あるネームサーバーを指定 example.com. IN NS ns1.example.com.
TXT テキストレコード 任意のテキスト情報の格納 example.com. IN TXT "v=spf1 include:_spf.example.com ~all"
PTR ポインターレコード IPアドレスからドメイン名への逆引き 1.2.0.192.in-addr.arpa. IN PTR example.com.
SOA 開始オーソリティレコード ドメインのゾーン情報と管理パラメータ example.com. IN SOA ns1.example.com. admin.example.com. (2023032501 3600 1800 604800 86400)
SRV サービスロケーションレコード 特定のサービスのホストとポートを指定 _sip._tcp.example.com. IN SRV 10 60 5060 sipserver.example.com.

Aレコード(Address)

Aレコードは最も基本的なDNSレコードタイプです。

ウェブサイトのホスティングや電子メールサーバーの設定など、インターネット上のさまざまなサービスの基本的な接続を可能にするレコードで、ドメイン名とIPアドレスを紐づけることが可能です。

例えば、「www.example.co.jp」というドメイン名に対して「192.0.2.100」というIPアドレスを関連付けます。

Aレコード

AAAAレコード(Quad A Record)

AAAAレコードは、インターネットのドメインネームシステム(DNS)において、IPv6アドレスをドメイン名に対応付けるためのDNSレコードタイプです。

読み方は「クアッドエーレコード」です。

通常のIPアドレスとの紐づけであれば、Aレコードにて行うのですが、IPv6アドレスと紐づける場合は、こちらのAAAAレコードを使用します。

近年では、IPv4アドレスの枯渇により、IPv6を使用する企業も増えてきており、AAAAレコードを使用する機会も増えています。

AAAAレコード

CNAMEレコード (Canonical Name)

CNAMEレコードは、あるドメイン名を別のドメイン名のエイリアス(別名)として設定するために使用します。

例えば、「blog.example.co.jp」から「www.example.co.jp」へのCNAMEを設定すると、両方のドメインが同じWebサイトを指すようになります。

1つのサイトに複数のドメインを紐づける状況は余り思いつかないかもしれませんが、サイトの再構築時や移行時などにはよく使われます。

旧サイトのドメイン名でアクセスしてきた場合は、CNAMEにより強制的に新サイトのドメインの方へアクセスをコントロールすることが可能です。

このように、複数のサブドメインを同じサーバーに向けたい場合に便利です。

CNAMEレコード
ただし、CNAMEレコードは他のDNSレコードと共存できない制限があることに注意が必要です。

また、CNAMEレコードはあくまでも、別名への変換のみを対応するため、そのあとに実際にIPアドレスへ変換するAレコードが参照されることになります。

以下の例でいうと、「blog.example.com」は、CNAMEレコードにより「www.example.com」に変換されます。

変換後、「www.example.com」は、Aレコードにより「192.0.2.100」というIPアドレスに変換されます。

CNAMEレコード
なので、最終的な状況だと、「blog.example.com」は「192.0.2.100」のIPアドレスへ変換されるという結果になります。

MXレコード (Mail Exchange)

MXレコードは、電子メールの送信先を指定するDNSレコードです。

MXレコードの主な役割は、特定のドメインに送信される電子メールを、正確かつ効率的に適切なメールサーバーへルーティングすることです。

ドメイン名に対して、一つまたは複数のメールサーバーを優先順位とともに指定できるため、メール配信の柔軟性と信頼性を大幅に向上させます。

数値が低いほど優先度が高くなり、最初にメール配信が試みられます。
例えば、「example.co.jp」宛てのメールを処理するサーバーとして「mail1.example.com」を優先度10と指定します。

同様に、「example.co.jp」宛てのメールを処理するサーバーとして「mail2.example.com」を優先度20と指定します。

MXレコード
これにより、主要なメールサーバー(優先度10)が停止した場合に2つ目の優先度20のサーバをバックアップ機として利用が可能になります。

ちなみに、MXレコードの値として設定されるドメイン名は、別にAレコードを作成し、メールサーバのIPアドレスへ名前解決させてあげる必要があります。

MXレコード

NSレコード(Name Server)

NSレコードの主な役割は、特定のドメインの権威あるネームサーバーを指定することです。

これは、そのドメインに関する他のDNSレコード(AレコードやMXレコードなど)の情報を保持し、管理するサーバーを示す重要な情報となります。

ドメイン所有者や管理者は、自分のドメインに対して一つまたは複数のネームサーバーを指定することができます。

技術的な仕組みとして、NSレコードは通常、プライマリネームサーバーとセカンダリネームサーバーの両方を指定します。

これにより、一方のサーバーに障害が発生した場合でも、もう一方のサーバーがDNS情報の提供を継続できるため、ドメインの可用性と信頼性が大幅に向上します。

例えば、「example.com」というドメイン名に「ns1.example.com」と「ns2.example.com」のNSレコードを設定したとします。

これらのネームサーバーは、example.comドメインに関するすべてのDNS情報を保持し、ユーザーや他のDNSサーバーからの問い合わせに対して、正確な情報を提供するという意味になります。

MXレコード
このレコードは設定したドメイン名の名前解決を担当するネームサーバを教えるためのレコードとなりますので、名前解決の仕組みとして自分より上位のDNSサーバに登録する必要があります。

以前のDNSと名前解決の仕組みの章にて、ルートDNSからTLDネームサーバの回答を受け、TLDネームサーバから権威ネームサーバの回答を受けるという流れを解説しました。

このたらい回しを受けていた時に、もらっていた回答の中身がこのNSレコードです。

前回の名前解決の仕組みを具体的に回答のレコードを含めて記載すると以下の図のようになります。
名前解決の仕組み(レコード)
NSレコードがあるおかげで、対象のドメインを管理するDNSサーバがわかるようになっているということです。

また、NSレコードの値に入っているドメイン名は、別途AレコードなどでIPアドレスに名前解決をするレコードが必要です。

TXTレコード (Text)

TXTレコードはテキスト情報を保存するために使用されます。

当初は単純なメモや注釈を目的として開発されましたが、現在では幅広いインターネットセキュリティと認証の目的に不可欠な役割を果たしています。

主な用途は以下のとおりです。
  1. SPF(Sender Policy Framework)レコード:なりすましメール対策のため、メール送信元のIPアドレスを定義
  2. DKIM(DomainKeys Identified Mail):メールの認証に使用される公開鍵を保存
  3. 所有権確認:各種サービスでドメインの所有権を証明する際に使用

SPF(Sender Policy Framework)、DKIM(DomainKeys Identified Mail)といった電子メール認証技術は、TXTレコードを活用してドメインの正当性を証明します。

例えば、SPFレコードは、特定のドメインから送信できる正規のメールサーバーのIPアドレスを定義することで、なりすましメールや迷惑メールから保護します。

さらに、TXTレコードはドメイン所有権の検証にも広く使用されています。

多くのクラウドサービス、ウェブホスティングプロバイダー、ソフトウェアサービスは、ドメイン所有者に対して特定の文字列をTXTレコードに追加することで、そのドメインの正当な管理者であることを確認します。

ドメイン検証以外にも、TXTレコードはGoogle Search Consoleでのウェブサイト所有権の確認、SPAMフィルタリング、ワンタイムパスワード生成、分散型システムの設定情報の保存など、多岐にわたる用途で利用されています。

以下のような乱数を組み込んだtxtレコードを登録することで、ドメインの利用者であることの証明などを行います。

txtレコード
単純な文字列を保管するだけのレコードですが、セキュリティ面でかなり幅広い使われ方をしているレコードです。

PTRレコード(Pointer Record)

PTRレコードは、DNSにおいて逆引き(リバースDNS)を可能にする特殊なDNSレコードで、IPアドレスからドメイン名への変換を行うものです。

従来のDNSレコードがドメイン名からIPアドレスへの変換(正引き)を行うのに対し、PTRレコードはその逆の動作を担います。

具体的には、特定のIPアドレスに対応するホスト名を提供することができます。

この逆引きは、ネットワークセキュリティ、メール配送、ログ分析など、多様な技術的用途において重要な役割を果たしています。

メールサーバーのセキュリティ対策において、PTRレコードは特に重要です。

多くのメールサーバーは、受信メールの送信元IPアドレスに対して逆引きを実行し、その結果を迷惑メールフィルタリングや送信元の信頼性評価に利用します。

偽のIPアドレスや不正なドメインからのメール送信を防止する重要な防御機能の一つとなっています。

PTRレコードの設定方法は少し特殊です。

IPアドレスを「逆順」にし、「in-addr.arpa」というドメインを付与したレコード名とする必要があり、例えば192.0.2.1というIPアドレスの場合、1.2.0.192.in-addr.arpaのような形式でPTRレコードが設定されます。

PTRレコード
in-addr.arpaドメインは、インターネット全体の逆引きDNSを管理するための特殊なドメインで、一般のユーザーや組織が勝手に作成や管理をすることはできませんので、グローバルIPの場合はインターネットサービスプロバイダー(ISP)やホスティングプロバイダーに依頼して設定する必要があります。

プライベートIPアドレスの逆引きのためであれば、プライベートネットワーク内で内部用のDNSサーバを用意し、そこでプライベートな「in-addr.arpa」ドメインゾーンを作成するという手順が必要になります。

SOAレコード(Start of Authority)

SOAレコードは、主に管理目的に使用されるもので、直接サービスに利用するものではありません。

特定のドメインまたはゾーンに関する基本的な管理情報を記録するために使用されます。

記録される情報は主に、そのゾーンの主要なネームサーバー、管理者の連絡先情報、ゾーンデータの更新や同期に関する重要なパラメータを含んでいます。

SOAレコードは以下の主要な情報を含みます。
  1. プライマリネームサーバー:ゾーンの権威あるサーバーを指定します。
  2. 管理者のメールアドレス:通常、技術的な連絡先を示します(ただし、通常は@の代わりにドットで表記されます)。
  3. シリアル番号:ゾーンデータの更新バージョンを示し、セカンダリサーバーの同期に使用されます。
  4. リフレッシュ間隔:セカンダリサーバーがプライマリサーバーに更新を確認する頻度を示します。
  5. リトライ間隔:更新確認に失敗した場合の再試行時間を定義します。
  6. 有効期限:セカンダリサーバーがゾーン情報を保持できる最大時間を示します。
  7. 最小TTL(Time To Live):ゾーン内のレコードのデフォルトキャッシュ時間を設定します。

SOAレコードは書き方が特殊です。

レコードの値は、左からスペース区切りで、上記の①~⑦を順番に記載していきます。

例えば、
プライマリーネームサーバを「ns1.example.com」、
管理者のメールアドレスを「admin@example.com」、
シリアル番号を「1」、
リフレッシュ間隔を「7200秒(120分)」、
リトライ間隔を「900秒(15分)」、
有効期限を「604800秒(7日)」、
最小TTLを「3600秒(60分)」
としたい場合は、以下のレコードになります。

SOAレコード
また、③~⑥の情報はDNSサーバを複数のサーバで冗長化構成とする場合に使用されるレコードです。

セカンダリDNSサーバーは、SOAレコードの情報を参照して、同期間隔やリトライ間隔等の同期に同期に関する情報をプライマリサーバーから受け取り、実際に更新・同期します。

このようにDNSサーバの管理面において、重要な情報を記録するのがSOAレコードです。

基本的には構築時に設定することが多く、運用においてはあまり触れることのないレコードといえるかもしれません。

SRVレコード(Service Record)

SRVレコード(サービスレコード)は、特定のサービスのホストとポート情報を提供するDNSレコードで、ネットワークサービスの自動検出と接続において重要な役割を果たします。

従来のDNSレコードと異なり、SRVレコードは特定のサービス、プロトコル、ポート番号と対応するホスト名を直接マッピングできる柔軟性の高い技術的仕組みです。

SRVレコードの典型的な書式は、サービス名、プロトコル、ドメイン、優先度、重み、ポート、ターゲットホスト名で構成されます。

SRVレコードは複数のサーバーやサービス間の効率的な接続を可能にします。

クライアントは、SRVレコードを参照することで、利用可能な最適なサーバーを自動的に選択できます。

SRVレコードは以下の主要パラメータを提供します。

サービス名
プロトコル(TCP/UDP)
優先度(低い数値ほど高優先)
重み(同じ優先度のサーバー間での負荷分散)
ポート番号
ターゲットホスト名

レコード名は、「_<サービス名>._<プロトコル>.<ドメイン名>」となります。
そして値には、「<優先度> <重み> <ポート番号> <ターゲットホスト名>」の順にスペース区切りで入力します。

例えば、FTPサービスの存在を利用者に伝えるためのSRVレコードとして、以下の情報を登録する場合でレコードを考えてみます。

サービス名:FTP
プロトコル:TCP
優先度:1(最優先)
重み:0(負荷分散なし)
ポート番号:21
ターゲットホスト名:ftp.example.com

SRVレコード

まとめ

今回はDNS管理で重要となるDNSレコードについて解説しました。

名前解決というドメイン名からIPアドレスへの変換は有名なので知っている人もいたのではないでしょうか?

しかし、DNSサーバは単純なIPアドレスへの変換以外にも、多数のレコード種別を持っていることがわかっていただけたと思います。

これらを使いこなすことで、可用性やセキュリティの高いシステム構築が可能となります。

是非、DNSをしっかりと使い倒して下さい!