DNSゾーンとは?ゾーンファイルとドメイン管理の仕組みを理解する

DNSゾーン

DNSゾーンとは?ゾーンファイルの役割を理解する

DNSを学習していると、「ゾーン」や「ゾーンファイル」という用語が登場します。

DNSレコード、権威DNSサーバ、ゾーン転送などを理解するためには、まずゾーンの概念を理解することが重要です。

実際のDNSサーバ運用では、ドメイン単位でDNS情報を管理するためにゾーンという仕組みが利用されています。

特にBINDを利用したDNSサーバ構築では、ゾーンファイルの理解が欠かせません。

本記事では、DNSゾーンとは何か、ゾーンファイルの構造、権威DNSサーバとの関係、実際の運用方法について解説します。

DNSゾーンとは

ゾーンとは、DNSサーバが管理するDNS情報の範囲を表す単位です。

例えば次のドメインがあるとします。

example.com

このドメインに関するDNS情報をまとめて管理する単位がゾーンです。

ゾーンの中には次のような情報が含まれます。

  • Aレコード
  • AAAAレコード
  • MXレコード
  • TXTレコード
  • NSレコード
  • CNAMEレコード
  • SOAレコード

つまり、DNSレコードの集合体がゾーンです。

ドメインとゾーンの違い

ドメインとゾーンは似ていますが、厳密には異なります。

例えば次の階層構造を考えてみます。

example.com
 ├─ www.example.com
 ├─ mail.example.com
 └─ dev.example.com

ドメインは名前空間そのものです。

一方、ゾーンはDNS管理単位です。

場合によってはドメインの一部だけを別ゾーンとして管理できます。

ゾーン分割とは

DNSではサブドメインを別のゾーンとして管理できます。

例えば次の構成です。

example.com
 └─ dev.example.com

通常はexample.comゾーンで管理できます。

しかし次のように分割することも可能です。

example.com ゾーン
 └─ dev.example.com → 別ゾーン

これをゾーン委任(Delegation)と呼びます。

ゾーンファイルとは

ゾーンファイルは、ゾーン情報を保存するテキストファイルです。

BINDでは通常次のようなファイルとして管理されます。

/var/named/example.com.zone

このファイルにDNSレコードを記述します。

ゾーンファイルの基本構造

簡単なゾーンファイルの例です。

$TTL 3600

@ IN SOA ns1.example.com. admin.example.com. (
    2026060801
    28800
    14400
    3600000
    86400
)

@       IN NS ns1.example.com.
@       IN NS ns2.example.com.

@       IN A 192.0.2.10
www     IN A 192.0.2.20
mail    IN A 192.0.2.30

@       IN MX 10 mail.example.com.

これがゾーンファイルの基本形です。

$TTLの意味

ファイルの先頭によく登場するのがTTLです。

$TTL 3600

これはデフォルトTTLを表しています。

3600秒なので1時間キャッシュされます。

SOAレコードとは

SOA(Start Of Authority)はゾーンの基本情報を定義します。

@ IN SOA ns1.example.com. admin.example.com.

SOAレコードには次のような情報が含まれます。

  • プライマリDNSサーバ
  • 管理者情報
  • シリアル番号
  • 更新間隔
  • 再試行間隔
  • 有効期限
  • ネガティブキャッシュTTL

ゾーンファイルには必須のレコードです。

シリアル番号の重要性

SOAレコードにはシリアル番号があります。

2026060801

ゾーンファイルを変更したら、この番号を増やします。

セカンダリDNSサーバはこの値を確認して更新の有無を判断します。

シリアル番号を更新し忘れると、変更内容が反映されません。

NSレコードの役割

NSレコードはゾーンを管理するDNSサーバを指定します。

@ IN NS ns1.example.com.
@ IN NS ns2.example.com.

通常は複数のDNSサーバを指定します。

これにより冗長化が実現できます。

Aレコードの登録

WebサーバなどのIPアドレスを登録します。

www IN A 192.0.2.20

この場合、次のFQDNになります。

www.example.com

BINDでは自動的にドメイン名が補完されます。

MXレコードの登録

メールサーバを指定します。

@ IN MX 10 mail.example.com.

メール配送時にはMXレコードが参照されます。

メールサーバ運用では必須の設定です。

$ORIGINとは

BINDでは$ORIGINが利用できます。

$ORIGIN example.com.

これにより記述を簡略化できます。

ただし実務では省略されることも多くあります。

特に単一ドメイン管理の場合は不要なケースもあります。

逆引きゾーンとは

ゾーンには正引きだけでなく逆引きもあります。

正引きです。
www.example.com
↓
192.0.2.10

逆引きです。
192.0.2.10
↓
www.example.com

逆引きゾーンではPTRレコードを利用します。

逆引きゾーンファイル例

$TTL 3600

@ IN SOA ns1.example.com. admin.example.com. (
    2026060801
    28800
    14400
    3600000
    86400
)

@ IN NS ns1.example.com.

10 IN PTR www.example.com.

メールサーバでは逆引き設定が重要になります。

ゾーン転送との関係

プライマリDNSサーバからセカンダリDNSサーバへゾーン情報をコピーする仕組みをゾーン転送と呼びます。

Primary DNS
↓
AXFR
↓
Secondary DNS

これにより複数の権威DNSサーバが同じ情報を保持できます。

ゾーン転送で利用されるポート

通常のDNS問い合わせはUDP53番ポートです。

しかしゾーン転送はTCP53番ポートを利用します。

ファイアウォール設定時には注意が必要です。

BINDでのゾーン定義

named.confでは次のように設定します。

zone "example.com" {
    type master;
    file "example.com.zone";
};

これによりBINDはゾーンファイルを読み込みます。

よくあるトラブル

シリアル番号未更新

セカンダリDNSへ変更が反映されません。

NSレコードの誤設定

ドメイン全体が名前解決できなくなる場合があります。

ゾーンファイル構文エラー

named-checkzoneで事前確認が必要です。

$ named-checkzone example.com example.com.zone

末尾ドット忘れ

BINDでは非常によくあるミスです。

意図しないFQDNが生成される原因になります。

実務で覚えておくべきポイント

  • ゾーンはDNS管理単位
  • ゾーンファイルはDNSレコードの集合
  • SOAレコードは必須
  • シリアル番号管理が重要
  • ゾーン転送で冗長化する
  • 正引きと逆引きが存在する

まとめ

DNSゾーンとは、DNSサーバが管理する情報の単位です。

ゾーン情報はゾーンファイルとして保存され、Aレコード、MXレコード、NSレコード、SOAレコードなどが記述されます。

権威DNSサーバはこのゾーン情報を保持し、正式なDNS情報を提供します。

また、ゾーン転送によってセカンダリDNSサーバへ複製されることで高可用性が実現されています。

DNSサーバ構築や運用を行う際には、ゾーンとゾーンファイルの理解が欠かせません。