【DNS】ゾーンファイル・リソースレコードとは?仕組みや種類をわかりやすく解説!

Webサイトにアクセスするとき、私たちはexample.comのようなドメイン名を使いますよね。でも実際の通信では192.0.2.1などのIPアドレスが使われています。

この「ドメイン名 ⇔ IPアドレス」の変換をしてくれるのがDNS(Domain Name System)です。そしてDNSの仕組みを裏で支えているのがゾーンファイルリソースレコードです。

この記事では、DNSゾーンファイルリソースレコードについて、以下の内容をわかりやすく解説します。

  • DNSとは?
  • ゾーンファイルとは?
    • ゾーンファイルのサンプルと各項目の解説
    • ゾーンファイルの省略ルール
  • リソースレコードとは?
    • リソースレコードの基本構成
    • リソースレコードの主な種類

DNSとは?

DNSとは?

DNSは「ドメインネームシステム(Domain Name System)」の略です。一言で言えば、インターネット上の住所録のようなものです。

  • 人間はexample.comのような覚えやすい名前(ドメイン名)を使ってWebサイトにアクセスします。
  • しかしコンピュータ同士は192.0.2.1のようなIPアドレスで通信を行います。

DNSはこの「ドメイン名 ⇔ IPアドレス」の変換を行うシステムで、これを担当しているのがDNSサーバーです。

例えば、あなたがDNSサーバーに対して、「example.comのIPアドレスは何?」とか「IPアドレスが192.0.2.1のドメイン名ってなに?」と問い合わせると、DNSサーバーはそれぞれに対応するドメイン名やIPアドレスを答えてくれます。これは名前解決と呼ばれています。

あなたがexample.comにアクセスすると、裏側でDNSサーバーが働いて「このドメイン名は192.0.2.1というIPアドレスだよ」と教えてくれることで、通信が成立しているのです。

たとえば「山田さんに電話をかけたいな」と思ったとき、電話帳で名前から電話番号を調べますよね?DNSはこれと同じことをドメイン名とIPアドレスの間でやってくれます。

ゾーンファイルとは?

ゾーンファイルとは?

ゾーンファイル(Zone File)は、特定のドメイン名に関するDNS情報(リソースレコード)をまとめたファイルです。また、ゾーンファイルでは、1行が1つのリソースレコードに対応しています(リソースレコードについては後ほど解説します)

たとえばexample.comというドメインに対して、

  • example.comのWebサーバーのIPアドレスは何なのか(Aレコード)
  • そのドメイン宛のメール(xxx@example.com)をどのメールサーバーに配送するか(MXレコード)

といった情報をすべてこのゾーンファイルに記述します。このゾーンファイルをDNSサーバが読み取って、名前解決の応答を返してくれます。

ゾーンファイルのサンプルと各項目の解説

以下に、example.comというドメインの簡単なゾーンファイル例を示し、それぞれの項目を詳しく解説します。

$TTL 86400                      ; 各レコードのデフォルトTTL(秒)。ここでは24時間。
$ORIGIN example.com.           ; ベースとなるドメイン名。このファイルでは example.com が基準。

;---------------------------------------
; ゾーンの開始(SOAレコード)
;---------------------------------------
@   IN SOA ns1.example.com. postmaster.example.com. (
        2025060301 ; シリアル番号(通常はYYYYMMDD+連番)
        10800      ; Refresh:セカンダリがプライマリへ問い合わせる間隔(3時間)
        3600       ; Retry:失敗時の再試行間隔(1時間)
        604800     ; Expire:更新できないとみなすまでの期間(7日間)
        86400      ; Minimum TTL:ネガティブキャッシュの有効期間(1日)
)

;---------------------------------------
; 権威ネームサーバ(NSレコード)
;---------------------------------------
@       IN NS  ns1.example.com.   ; プライマリDNSサーバ
        IN NS  ns2.example.com.   ; セカンダリDNSサーバ

;---------------------------------------
; メールサーバ(MXレコード)
;---------------------------------------
        IN MX  10 mail.example.com. ; 優先度10のメールサーバ

;---------------------------------------
; 各ホストのIPアドレス(Aレコード)
;---------------------------------------
        IN A   192.0.2.1           ; example.com のIPアドレス
www     IN A   192.0.2.2           ; www.example.com のIPアドレス
mail    IN A   192.0.2.3           ; mail.example.com のIPアドレス

;---------------------------------------
; 別名(CNAMEレコード)
;---------------------------------------
ftp     IN CNAME www.example.com. ; ftp.example.com は www.example.com の別名

;---------------------------------------
; テキスト情報(TXTレコード)
;---------------------------------------
        IN TXT "This is a sample zone file" ; example.com に関する自由記述情報

項目説明
$TTL各レコードのキャッシュの有効時間(秒)。通常86400秒(=24時間)などが指定されます。
$ORIGIN example.com.省略されたホスト名に自動で補完されるベースドメイン。
@現在のドメイン(ここではexample.com)を表す省略記号。
ORIGINと同じドメイン名は@で記載されます(例: example.com.@
ns1.example.net.このゾーン情報を管理するプライマリDNSサーバー。
postmaster.example.net.このドメインの管理者のメールアドレス。
postmaster.example.net.postmaster@example.netを意味します(最初の.@に、末尾の.は削除されます)
Serialゾーンファイルのバージョンを表す数字。
ゾーンファイル更新日+管理番号を表す(YYYYMMDDNN)の10桁使用が多い。
RefreshセカンダリDNSサーバーがプライマリDNSサーバーにゾーン情報の更新を確認する間隔の時間(秒)。
RetryセカンダリDNSサーバーが、Refreshでゾーン情報の更新が失敗した場合に再度Refreshを試みるまでの時間。
ExpireセカンダリDNSサーバーが、ゾーン情報のリフレッシュができない状態が続いた場合、セカンダリDNSサーバーが持っているゾーン情報をどれだけの時間利用するかの時間(秒)
Minimum TTL存在しないドメイン名の結果をDNSキャッシュに保持しておく時間。たとえば「存在しないドメイン」と問い合わせたとき、その「なかった」という情報を一定期間キャッシュするための設定。

なお、上記のゾーンファイルは省略した表記です。省略していない場合のゾーンファイルを以下に示します。

$TTL 86400
$ORIGIN example.com.

example.com.         86400  IN  SOA  ns1.example.com. postmaster.example.com. (
                         2025060301 ; Serial(シリアル番号)
                         10800      ; Refresh(更新間隔)
                         3600       ; Retry(再試行間隔)
                         604800     ; Expire(有効期限)
                         86400      ; Minimum TTL(ネガティブキャッシュ)
)

example.com.         86400  IN  NS   ns1.example.com.
example.com.         86400  IN  NS   ns2.example.com.

example.com.         86400  IN  MX   10 mail.example.com.

example.com.         86400  IN  A    192.0.2.1
www.example.com.     86400  IN  A    192.0.2.2
mail.example.com.    86400  IN  A    192.0.2.3

ftp.example.com.     86400  IN  CNAME www.example.com.

example.com.         86400  IN  TXT  "This is a sample zone file"

ゾーンファイルの省略ルール

ゾーンファイルでは、以下のように繰り返し記述を省略できるルールがあります。

省略例解説
名前の省略同じ名前(ドメイン名)が連続する場合、2行目以降は名前を省略できます。例えば、最初の@ IN NS ns1.example.com.のあとにIN NS ns2.example.com.と続けると、@が省略されたとみなされます。
TTLの省略デフォルトのTTLと同じTTLの場合、TTLの値を省略可能です。デフォルトのTTLは$TTLで指定します。
$ORIGINの利用$ORIGINで定義されたドメイン名は、レコードの名前に対して自動的に補完されます。例えば、www IN A 192.0.2.2wwwwww.example.com.を意味します。
ドットの有無に注意名前の末尾に.(ドット)があると絶対名(FQDN)とみなされ、$ORIGINは補完されません。.がないと$ORIGIN自動的に補完されます。

リソースレコードとは?

リソースレコード(Resource Record)は、DNSが保持している「ドメインに関する情報」を表すデータの単位です。

ゾーンファイルでは、1行が1つのリソースレコードに対応しています。たとえば、先ほど示した「ゾーンファイル(省略無)」でいうと、以下のような記述がそれぞれ1つのリソースレコードです(リソースレコードのレコードの読み方については後ほど解説します)。

  • example.com. 86400 IN NS ns1.example.com.
    • example.comドメインのDNSサーバはns1.example.comである。
  • example.com. 86400 IN A 192.0.2.1
    • example.comのIPアドレスは192.0.2.1である。

このように、各レコードが「ドメイン名とその関連情報」を定義しており、DNSの名前解決に使われます。

リソースレコードは「DNSレコード」や「DNSリソースレコード」と呼ばれることもあります。

リソースレコードの基本構成

リソースレコードの基本構成は以下のようになっています。

名前    TTL     クラス   タイプ   データ
項目意味
名前対象のドメイン名(例: example.com.)
TTLキャッシュの有効期間(秒)
クラス通常は「IN(Internet)」
タイプA / MX / CNAME / NS などのリソースレコード種類
データIPアドレス、ホスト名、優先度などタイプに応じた値

リソースレコードの主な種類

では、これからリソースレコードの代表的な種類について、それぞれの用途や書き方を具体的な例を交えて解説していきます。

DNSでは様々な種類のリソースレコードが使われており、それぞれが異なる役割を持っています。たとえば、WebサイトのIPアドレスを指定するためのAレコードや、メールの配送先を定めるMXレコードなどがあります。

これらのリソースレコードが正しく設定されていることで、Webアクセスやメール配信などが正常に動作するようになります。ではリソースレコードについてこれから詳しく説明していきます。

Aレコード

Aレコードは、ドメイン名(ホスト名)に対応するIPv4アドレスを指定するためのレコードです。

構文
ホスト名  IN  A  IPアドレス
例
example.com.  IN  A  192.0.2.1

このリソースレコードは「example.comのIPアドレスは192.0.2.1である」という意味になります。

AレコードのAは「Address(アドレス)」の略です。

AAAAレコード

AAAAレコードは、ドメイン名(ホスト名)に対応するIPv6アドレスを指定するためのレコードです。AレコードのIPv6版です。

構文
ホスト名  IN  AAAA  IPv6アドレス
例
example.com.  IN  AAAA  2001:db8::1

このリソースレコードは「example.comのIPv6アドレスは2001:db8::1である」という意味になります。

AAAAレコードのAAAAは「Quad A(Aが4つ)」の略です。

CNAMEレコード

CNAMEレコードは、ホストの別名(エイリアス)を設定するためのレコードです。

構文
エイリアス名  IN  CNAME  本当のホスト名
例
ftp.example.net.  IN  CNAME  www.example.com.

このリソースレコードは「ftp.example.netwww.example.comの別名(エイリアス)である」という意味になります。ユーザーがftp.example.netにアクセスすると、DNSはまずftp.example.netwww.example.comという別名として解釈し、最終的にwww.example.comに設定されたAレコード(IPアドレス)などを参照して解決します。

CNAMEレコードのCNAMEは「Canonical Name(正規名)」の略です。

MXレコード

MXレコードは、そのドメイン宛のメールをどのメールサーバーに配送するかを指定するためのレコードです。

構文
ドメイン名  IN  MX  優先度  メールサーバー名
例
example.com.  IN  MX  10  mail.example.com.

このリソースレコードは「xxx@example.com宛のメールはmail.example.comに配送する」という意味になります。「10」は優先度(preference)を示し、数値が小さいほど優先度が高いです。複数のMXレコードを設定することで、プライマリ/セカンダリのメールサーバーを定義でき、片方がダウンしてもメールを受け取れるようにする冗長構成が可能になります。

MXレコードのMXは「Mail Exchange(メール交換)」の略です。

TXTレコード

TXTレコードは、任意の文字列(テキスト)情報をDNSに記述できるレコードです。主に以下のような目的で使用されます。

  • メール送信元の正当性確認(SPF)
  • メールのなりすまし防止(DKIM)
  • Google Search Console などでのドメイン所有確認
  • 単なるメモやコメント的な情報の記録
構文
ホスト名  IN  TXT  "テキスト内容"
例
example.com.  IN  TXT  "great"

このリソースレコードは「example.netというドメインに関して、“great”というテキスト情報が登録されている」という意味になります。これは一例で、実用目的ではなく遊び心のあるTXTレコードです。

TXTレコードのTXTは「Text(テキスト)」の略です。

NSレコード

NSレコードは、あるドメインを管理するDNSサーバー(ネームサーバー)を指定するためのレコードです。言い換えると、「このドメインについて知りたければ、このDNSサーバーに問い合わせてね」と案内する情報です。

構文
ドメイン名  IN  NS  DNSサーバ名
例
example.com.  IN  NS  ns1.example.com.

このリソースレコードは「example.comドメインを管理しているDNSサーバーはns1.example.comである」という意味になります。つまり、example.comに関する情報(Aレコード、MXレコードなど)は、ns1.example.comに問い合わせればわかります。

NSレコードのNSは「Name Server(ネームサーバー)」の略です。

本記事のまとめ

この記事ではDNSゾーンファイルリソースレコードについて、以下の内容を説明しました。

  • DNS(Domain Name System)は、ドメイン名とIPアドレスを変換する仕組み(名前解決)
  • ゾーンファイルは、特定ドメインに関するDNS情報(リソースレコード)をまとめたファイル
  • ゾーンファイルでは省略記法(同じドメイン名・TTLなどの繰り返しを省略)が使われる
  • リソースレコードはDNS情報の1件1件のことで、ゾーンファイルの1行が1リソースレコード

お読み頂きありがとうございました。

スポンサーリンク