DNSゾーンファイルの歩き方:SOA, A, MX, CNAMEレコードの基本
はじめに
DNSサーバーを構築する際、named.confの設定と並んで重要になるのが、ドメインの具体的な情報を定義する「ゾーンファイル(ゾーンデータベース)」です。
example.com.dbのようなファイル名で、一見すると謎の記号や略語が並んでいるように見えますよね。
この記事では、自身のWikiメモを元に、このゾーンファイルの基本的な書式と、主要なレコード(SOA, A, MX, CNAMEなど)がそれぞれ何を示しているのかを、備忘録として解説します。
ゾーンファイルの基本構造
ゾーンファイルは、リソースレコードと呼ばれる情報の集まりです。各レコードは、一般的に以下の形式で記述されます。
[ドメイン名] [TTL] [クラス] [タイプ] [データ]
-
ドメイン名: レコードの対象となるホスト名。
@はドメイン名そのもの($ORIGIN)を指す省略記法です。 - TTL: Time To Live。このレコードをキャッシュして良い時間(秒)。
-
クラス:
IN(インターネット) が一般的に使われます。 -
タイプ: レコードの種類(
A,MXなど)。 - データ: レコードの内容(IPアドレスやホスト名など)。
最重要レコード:SOAレコード
SOA (Start of Authority)レコードは、そのゾーンファイルの管理者情報やバージョンを定義する、最も重要なレコードです。必ずファイルの一番最初に記述します。
@ IN SOA ns1.example.com. root.example.com. (
2024100801 ; Serial
28800 ; Refresh
14400 ; Retry
2419200 ; Expire
10800 ) ; Minimum TTL
-
ns1.example.com.: このゾーンのプライマリDNSサーバー名。 -
root.example.com.: 管理者のメールアドレス (root@example.comの@を.に置き換えたもの)。 -
Serial: ゾーンファイルのバージョン番号。ファイルを更新したら、必ずこの数値を増やします。YYYYMMDDNN(年月日+連番) 形式が一般的です。セカンダリDNSサーバーは、この番号を見てファイルの更新を検知します。 -
Refresh,Retry,Expire: セカンダリDNSサーバーがプライマリに問い合わせるタイミングの設定です。
基本的なレコードの種類
次に、実際にドメインの挙動を定義する主要なレコードを見ていきましょう。
NSレコード (Name Server)
そのドメインの名前解決を担当するDNSサーバーを指定します。
IN NS ns1.example.com.
IN NS ns2.example.com.
Aレコード (Address)
ドメイン名(ホスト名)をIPv4アドレスに対応させます。 最もよく使われるレコードです。
www IN A 203.0.113.10
mail IN A 203.0.113.11
これで、www.example.comは203.0.113.10に、mail.example.comは203.0.113.11に解決されるようになります。
MXレコード (Mail Exchanger)
そのドメイン宛のメールをどのサーバーに配送すればよいかを指定します。
IN MX 10 mail.example.com.
10は優先度を示し、数値が小さいほど優先度が高くなります。
CNAMEレコード (Canonical Name)
あるドメイン名に**別の名前(エイリアス)**を付けます。
ftp IN CNAME www
この設定により、ftp.example.comへのアクセスは、www.example.comと同じIPアドレスに解決されるようになります。
PTRレコード (Pointer)
Aレコードの逆で、 IPアドレスからドメイン名を引く(逆引き) ために使われます。逆引き用のゾーンファイルに記述します。
10 IN PTR [www.example.com](https://www.example.com).
おわりに
ゾーンファイルは、一見すると複雑ですが、それぞれのレコードの役割さえ理解してしまえば、ドメインの挙動を自由自在にコントロールできるようになります。
特にSOAレコードのシリアルナンバーの更新は、設定変更時に忘れがちなポイントなので注意が必要です。
この記事が、DNSの内部構造を理解するための一助となれば幸いです。
この記事で紹介した内容以外にも、技術情報をブログで発信しています。
MEANTECH
Discussion