ゾーンファイルの書き方完全ガイド|SOA・NS・A・MXレコードの設定方法を理解する

ゾーンファイル書式

ゾーンファイルの書き方完全ガイド

DNSサーバを構築する際、named.confと並んで重要になるのがゾーンファイルです。

ゾーンファイルにはドメイン名とIPアドレスの対応情報やメールサーバ情報など、DNSサーバが応答するためのデータが記述されています。

BINDの学習において、多くの人が最初につまずくのがゾーンファイルの書式です。

しかし、各レコードの意味を理解すれば決して難しいものではありません。

本記事ではBINDで利用するゾーンファイルの基本構造から、実際によく利用されるレコードの書き方まで解説します。

ゾーンファイルとは

ゾーンファイルとは、DNSレコードを保存するファイルです。

権威DNSサーバは、このゾーンファイルを参照して問い合わせへ応答します。

例えば以下のような情報を管理します。

  • WebサーバのIPアドレス
  • メールサーバ情報
  • DNSサーバ情報
  • TXTレコード

ゾーンファイルの配置場所

BINDでは一般的に以下へ配置します。

/var/named/

例です。
/var/named/example.com.zone

最小構成のゾーンファイル

$TTL 3600

@ IN SOA ns1.example.com. root.example.com. (
    2026060901
    28800
    14400
    3600000
    86400
)

@ IN NS ns1.example.com.

ns1 IN A 192.168.60.10
www IN A 192.168.60.20

まずはこの構造を理解することが重要です。

$TTLとは

TTL(Time To Live)を指定します。

$TTL 3600

秒単位で指定します。

3600秒は1時間です。

DNSキャッシュの保持時間として利用されます。

@の意味

ゾーンファイルでよく見かける記号です。

@

ゾーン名そのものを意味します。

例えばexample.comゾーンなら次と同じ意味です。

example.com.

SOAレコードとは

ゾーン管理情報を保持する重要なレコードです。

@ IN SOA ns1.example.com. root.example.com. (
    2026060901
    28800
    14400
    3600000
    86400
)

すべてのゾーンに必須です。

SOAの構成

項目意味
ns1.example.com.プライマリDNS
root.example.com.管理者メールアドレス
2026060901シリアル番号
28800Refresh
14400Retry
3600000Expire
86400Negative Cache TTL

シリアル番号とは

ゾーン更新管理に利用します。


2026060901

一般的には以下の形式です。


YYYYMMDDNN

ゾーンを変更したら必ず更新します。

NSレコードとは

DNSサーバを定義します。


@ IN NS ns1.example.com.

example.comを管理するDNSサーバを指定しています。

セカンダリーDNSの登録例

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

実運用では複数登録するのが一般的です。

Aレコードとは

ホスト名とIPv4アドレスを対応付けます。

www IN A 192.168.60.20

意味は次の通りです。
www.example.com
↓
192.168.60.20

AAAAレコードとは

IPv6アドレスを登録します。

www IN AAAA 2001:db8::20

IPv6環境で利用されます。

MXレコードとは

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

@ IN MX 10 mail.example.com.

メール配送時に利用されます。

MXレコードの優先順位

数値が小さいほど優先されます。

@ IN MX 10 mail1.example.com.
@ IN MX 20 mail2.example.com.

mail1が優先されます。

メールサーバのAレコード

MXだけでは不十分です。

対応するAレコードも必要です。
mail IN A 192.168.60.30

CNAMEレコードとは

別名を定義します。

ftp IN CNAME www

意味です。
ftp.example.com
↓
www.example.com

CNAMEの注意点

CNAMEと他レコードは共存できません。

例えば以下はエラーです。
ftp IN CNAME www
ftp IN A 192.168.60.50

TXTレコードとは

任意の文字列を登録できます。

@ IN TXT "hello"

近年はメール認証で利用されることが多くなっています。

SPFレコード例

@ IN TXT "v=spf1 mx -all"

送信元メールサーバの認証に利用されます。

DKIMレコード例

selector._domainkey
IN TXT "公開鍵情報"

メール改ざん検知に利用されます。

ワイルドカードレコード

アスタリスクを利用できます。

* IN A 192.168.60.20

未定義ホスト名へ応答できます。

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

次の2つは同じ意味です。

www IN A 192.168.60.20
www.example.com. IN A 192.168.60.20

通常は短縮記法を利用します。

末尾ドットの意味

非常に重要なポイントです。

ns1.example.com.
最後のドットはFQDNを意味します。

末尾ドット忘れの例

以下は誤りです。
ns1.example.com

ゾーン名が自動付加されます。
ns1.example.com.example.com

意図しないレコードになることがあります。

ゾーンファイルの確認

構文チェックを行います。

# named-checkzone example.com  /var/named/example.com.zone

成功例です。
OK

よくある記述ミス

末尾ドット忘れ

最も多いミスです。

シリアル番号未更新

セカンダリーDNSへ反映されません。

CNAMEとAレコードの共存

設定エラーになります。

MXのAレコード未設定

メール配送に失敗します。

実務で覚えておきたいポイント

  • SOAレコードは必須
  • シリアル番号管理が重要
  • NSレコードは複数登録する
  • MXには対応するAレコードが必要
  • 末尾ドットに注意する
  • named-checkzoneで確認する

まとめ

ゾーンファイルはDNSサーバの応答内容を定義する重要なファイルです。

SOA、NS、A、AAAA、MX、CNAME、TXTなどのレコードを組み合わせることで、Webサイトやメールシステムの名前解決を実現します。

また、シリアル番号管理や末尾ドットなど、運用上の重要なポイントも数多く存在します。

BIND運用を行う上では、ゾーンファイルを正しく読み書きできることが最も重要なスキルの一つと言えるでしょう。