このページではLinuxサーバーで運用するDNSサーバーBIND/namedゾーンファイルの一般的な省略記述について初心者向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
自宅内DNSサーバーの構築

DNSサーバーの構築

hostsファイルの設定

BINDについて(〜9.3.x)

BINDについて(9.7.x〜)

named.confの設定(〜9.3.x)

named.confの設定(9.7.x〜)

ゾーンファイルの書式

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

既存のゾーンファイル(〜9.3.x)

既存のゾーンファイル(9.7.x〜)

正引きゾーンファイルの作成

逆引きゾーンファイルの作成

設定ファイルの書式チェック

namedの起動とコントロール

namedの動作確認

ルーターとホストの設定

DNSSECについて


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

named のゾーンファイルは、他の多くの サーバー アプリケーション の設定ファイルと異なり、様々な省略方法が準備されています。

まずは、今回構築中のnamedの "obenri.com" に関する正引きゾーンファイル

"/var/named/obenri.com.zone"

の「非省略型」と「省略型」の記述を比べてみましょう。

obenri.com.  IN   SOA   web1.obenri.com.   tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

obenri.com.       86400    IN   NS   web1.obenri.com.
obenri.com.       86400    IN   MX   10   mail.obenri.com.
obenri.com.       86400    IN   A    192.168.100.11
router.obenri.com.    86400    IN   A    192.168.100.1
web1.obenri.com.     86400    IN   A    192.168.100.11
mail.obenri.com.     86400    IN   A    192.168.100.11
www.obenri.com.     86400    IN   A    192.168.100.11

正引きゾーンファイル(非省略)"obenri.com.zone"


↓省略

$TTL 86400
@    IN   SOA   web1   tanaka (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

            IN   NS   web1
            IN   MX   10   mail
            IN   A    192.168.100.11
router         IN   A    192.168.100.1
web1          IN   A    192.168.100.11
mail          IN   A    192.168.100.11
www           IN   A    192.168.100.11

正引きゾーンファイル"obenri.com.zone"

次に、自宅の サブネット に関する逆引きゾーンファイル

"/var/named/100.168.192.in-addr.arpa.zone"

の「非省略型」と「省略型」の記述を比べてみましょう。

100.168.192.in-addr.arpa. IN SOA web1.obenri.com. tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

100.168.192.in-addr.arpa.   86400  IN   NS   web1.obenri.com.
1.100.168.192.in-addr.arpa.  86400  IN   PTR   router.obenri.com.
11.100.168.192.in-addr.arpa.  86400  IN   PTR   web1.obenri.com.

逆引きゾーンファイル(非省略)"100.168.192.in-addr.arpa.zone"


↓省略

$TTL 86400
@    IN   SOA  web1.obenri.com.  tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

            IN   NS   web1.obenri.com.
1            IN   PTR   router.obenri.com.
11           IN   PTR   web1.obenri.com.

逆引きゾーンファイル"100.168.192.in-addr.arpa.zone"

この独特の書式は人間が手作業で内容を書き換えるときの利便性だけではなく、大量の名前解決情報をサーバーが自動処理で一括して修正、変更するときにも都合が良いように考案されています。
この書式を考えた人は天才だと思います。本当に。

例外もありますが、ゾーンファイルの記述の省略方法の基本は、 「明示的に記述しない場合は直前の記述内容が設定されているものとみなす。」 という考え方に基づいていて、省略のルールを理解してしまえば最小限の書き換えで容易にかつダイナミックに設定変更ができるようになっています。

このセクションでは、「非省略型」から「省略型」への記述変更について、順を追って解説していきます。

関連セクションへ 関連セクション・ 固定IPでDNSサーバー構築


このページの先頭へ↑

"$TTL"による各レコードのTTLの省略

TTL は、ゾーンファイルに記述されている各レコードが、他の DNSサーバー クライアント機 などで DNSキャッシュ として使用されるとき、その保持される時間です。

デフォルト は一日、つまり、 "1D" 、または "86400" ですが、この値の変化は DNS 全体のパフォーマンスには若干の影響は与えるものの、不具合を生じるほどのものではないので、全てのレコードについて同じ値を設定して構いません。

もうこれはほとんど当たり前同様の記述です。

こういう場合、各ゾーンファイルの先頭に

$TTL 86400

と記述しておけば、各レコードのTTL値を省略しても自動的に TTL=86400 という値が設定されたものとみなされます。

これでゾーンファイルは以下のようになります。

obenri.com.  IN   SOA   web1.obenri.com.   tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

obenri.com.       86400    IN   NS   web1.obenri.com.
obenri.com.       86400    IN   MX   10   mail.obenri.com.
obenri.com.       86400    IN   A    192.168.100.11
router.obenri.com.    86400    IN   A    192.168.100.1
web1.obenri.com.     86400    IN   A    192.168.100.11
mail.obenri.com.     86400    IN   A    192.168.100.11
www.obenri.com.     86400    IN   A    192.168.100.11

正引きゾーンファイル(非省略)"obenri.com.zone"


↓省略

$TTL 86400
obenri.com.  IN   SOA   web1.obenri.com.   tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

obenri.com.           IN   NS   web1.obenri.com.
obenri.com.           IN   MX   10   mail.obenri.com.
obenri.com.           IN   A    192.168.100.11
router.obenri.com.       IN   A    192.168.100.1
web1.obenri.com.        IN   A    192.168.100.11
mail.obenri.com.        IN   A    192.168.100.11
www.obenri.com.         IN   A    192.168.100.11

$TTLで省略した"obenri.com.zone"


100.168.192.in-addr.arpa. IN SOA web1.obenri.com. tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

100.168.192.in-addr.arpa.   86400  IN   NS   web1.obenri.com.
1.100.168.192.in-addr.arpa.  86400  IN   PTR   router.obenri.com.
11.100.168.192.in-addr.arpa.  86400  IN   PTR   web1.obenri.com.

逆引きゾーンファイル(非省略)"100.168.192.in-addr.arpa.zone"


↓省略

$TTL 86400
100.168.192.in-addr.arpa. IN SOA web1.obenri.com. tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

100.168.192.in-addr.arpa.     IN   NS   web1.obenri.com.
1.100.168.192.in-addr.arpa.    IN   PTR   router.obenri.com.
11.100.168.192.in-addr.arpa.   IN   PTR   web1.obenri.com.

$TTLで省略した"100.168.192.in-addr.arpa.zone"

関連セクションへ 関連セクション・ 固定IPでDNSサーバー構築


このページの先頭へ↑

"$ORIGIN"によるゾーン名の省略

"$ORIGIN [ゾーン名]" をゾーンファイルの最初に記述しておくと、それがゾーンファイル全体の デフォルト のゾーン名とみなされ、以後の FQDN や、PTR形式の IPアドレス の記述を簡略化することができます。

例えば、正引きのゾーンファイルで、

ここで注意が必要なのは、 "@" は変数ではなく、 「ゾーン名を単独で表す記号」 であるということです。
つまり、 "web1.obenri.com." を、 "web1.@" のようには記述できないことに注意してください。
$ORIGIN obenri.com.

と記述した場合、 "obenri.com." と記述すべきところは "@" に置き換えることができます。同様に、逆引きのゾーンファイルで、

$ORIGIN 100.168.192.in-addr.arpa.

と記述すれば、 "100.168.192.in-addr.arpa." と記述すべきところは "@" で置き換えることができます。

$TTL 86400
obenri.com.  IN   SOA   web1.obenri.com.   tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

obenri.com.           IN   NS   web1.obenri.com.
obenri.com.           IN   MX   10   mail.obenri.com.
obenri.com.           IN   A    192.168.100.11
router.obenri.com.       IN   A    192.168.100.1
web1.obenri.com.        IN   A    192.168.100.11
mail.obenri.com.        IN   A    192.168.100.11
www.obenri.com.         IN   A    192.168.100.11

$TTLで省略した"obenri.com.zone"


↓省略

$TTL 86400
$ORIGIN obenri.com.
@        IN   SOA   web1.obenri.com.   tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

@                IN   NS   web1.obenri.com.
@                IN   MX   10   mail.obenri.com.
@                IN   A    192.168.100.11
router.obenri.com.       IN   A    192.168.100.1
web1.obenri.com.        IN   A    192.168.100.11
mail.obenri.com.        IN   A    192.168.100.11
www.obenri.com.         IN   A    192.168.100.11

$ORIGINで省略した"obenri.com.zone"


$TTL 86400
100.168.192.in-addr.arpa. IN SOA web1.obenri.com. tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

100.168.192.in-addr.arpa.     IN   NS   web1.obenri.com.
1.100.168.192.in-addr.arpa.    IN   PTR   router.obenri.com.
11.100.168.192.in-addr.arpa.   IN   PTR   web1.obenri.com.

$TTLで省略した"100.168.192.in-addr.arpa.zone"


↓省略

$TTL 86400
$ORIGIN 100.168.192.in-addr.arpa.
@        IN SOA web1.obenri.com. tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

@                 IN   NS   web1.obenri.com.
1.100.168.192.in-addr.arpa.    IN   PTR   router.obenri.com.
11.100.168.192.in-addr.arpa.   IN   PTR   web1.obenri.com.

$ORIGINで省略した"100.168.192.in-addr.arpa.zone"

更に、FQDNやPTR形式のIPアドレスを記述する部分を、末尾に

".(ピリオド)"を付けずに記述

した場合には、

「その後に"."と"デフォルトのゾーン名"が付加している」

とみなされます。

これを逆にいえば、 ".(ピリオド)"で終わっている記述は、完全な記述 であるということになります。

つまり、$ORIGINでデフォルトのゾーン名が"obenri.com."に定義されている場合、

"web1.obenri.com."→"web1"

と簡略化して記述できるわけです。

このルールを使って、更に省略を進めてみましょう。

$TTL 86400
$ORIGIN obenri.com.
@        IN   SOA   web1.obenri.com.   tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; inimum

@                IN   NS   web1.obenri.com.
@                IN   MX   10   mail.obenri.com.
@                IN   A    192.168.100.11
router.obenri.com.       IN   A    192.168.100.1
web1.obenri.com.        IN   A    192.168.100.11
mail.obenri.com.        IN   A    192.168.100.11
www.obenri.com.         IN   A    192.168.100.11

$ORIGINで省略した"obenri.com.zone"


↓省略

$TTL 86400
$ORIGIN obenri.com.
@        IN   SOA   web1   tanaka (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

@          IN   NS   web1
@          IN   MX   10   mail
@          IN   A    192.168.100.11
router       IN   A    192.168.100.1
web1        IN   A    192.168.100.11
mail        IN   A    192.168.100.11
www         IN   A    192.168.100.11

"."のルールで省略した"obenri.com.zone"


$TTL 86400
$ORIGIN 100.168.192.in-addr.arpa.
@        IN SOA web1.obenri.com. tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

@                 IN   NS   web1.obenri.com.
1.100.168.192.in-addr.arpa.    IN   PTR   router.obenri.com.
11.100.168.192.in-addr.arpa.   IN   PTR   web1.obenri.com.

$ORIGINで省略した"100.168.192.in-addr.arpa.zone"


↓省略

$TTL 86400
$ORIGIN 100.168.192.in-addr.arpa.
@        IN SOA web1.obenri.com. tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

@       IN   NS   web1.obenri.com.
1       IN   PTR   router.obenri.com.
11       IN   PTR   web1.obenri.com.

"."のルールで省略した"100.168.192.in-addr.arpa.zone"

これでかなりすっきりしてきました。

関連セクションへ 関連セクション・ 固定IPでDNSサーバー構築


このページの先頭へ↑

"named.conf"と継続記述によるゾーン名の省略

前のステップで使用した "$ORIGIN" ですが、実はこれすらも省略できます。

そのポイントは "/etc/named.conf" の記述方法にあります。

以下に、その一部を示します。

zone "obenri.com" IN {
    type master;
    file "obenri.com.zone";
    allow-update { none; };
};        A."obenri.com"に対する正引きゾーンファイル設定

zone "100.168.192.in-addr.arpa" IN {
    type master;
    file "100.168.192.in-addr.arpa.zone";
    allow-update { none; };
};        B.サブネットのIPアドレスに対する逆引きゾーンファイル設定

この二つのパートが、それぞれが現在取り扱っているゾーンファイルを指し示すものだとすると、実は で示した[ゾーン名]の部分は、それぞれ対象となるゾーンファイルの中で、

zone "obenri.com"

"@"=デフォルトのゾーン名=obenri.com.

及び、

zone "100.168.192.in-addr.arpa"

"@"=デフォルトのゾーン名=100.168.192.in-addr.arpa.

と解釈されます。

従って、ゾーンファイルの中の "$ORIGIN" の記述は不要ということになります。

また、ゾーンファイルの中の各レコードの先頭の記述は、

「省略した場合は上の行と同じ値」

とみなされます。つまり、同じ設定対象を連続して記述する場合には、できるだけ続けて記述すれば、ゾーンファイルはずっとシンプルとなるわけです。

この二つの省略ルールを適用すると、次のようになります。

$TTL 86400
$ORIGIN obenri.com.
@        IN   SOA   web1   tanaka (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

@          IN   NS   web1
@          IN   MX   10   mail
@          IN   A    192.168.100.11
router       IN   A    192.168.100.1
web1        IN   A    192.168.100.11
mail        IN   A    192.168.100.11
www         IN   A    192.168.100.11

"."のルールで省略した"obenri.com.zone"


↓省略

$TTL 86400
@        IN   SOA   web1   tanaka (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

          IN   NS   web1
          IN   MX   10   mail
          IN   A    192.168.100.11
router       IN   A    192.168.100.1
web1        IN   A    192.168.100.11
mail        IN   A    192.168.100.11
www         IN   A    192.168.100.11

zoneと継続記述のルールで省略した"obenri.com.zone"


$TTL 86400
$ORIGIN 100.168.192.in-addr.arpa.
@        IN SOA web1.obenri.com. tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

@       IN   NS   web1.obenri.com.
1       IN   PTR   router.obenri.com.
11       IN   PTR   web1.obenri.com.

"."のルールで省略した"100.168.192.in-addr.arpa.zone"


↓省略

$TTL 86400
@        IN SOA web1.obenri.com. tanaka.obenri.com. (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

        IN   NS   web1.obenri.com.
1       IN   PTR   router.obenri.com.
11       IN   PTR   web1.obenri.com.

zoneと継続記述のルールで省略した"100.168.192.in-addr.arpa.zone"

ゾーンファイルの省略記述は、慣れないうちはとても難しく感じるものです。

DNSサーバーの構築に、
とても役に立った一冊です

ところが、ある程度わかってくるとその無駄の少なさからかえって見やすく、書き換えなどのときに内容を間違えにくくなります。

また、今はあまり理解できなくても、他の サーバー アプリケーション を扱っていれば自然とわかってくるのがこのゾーンファイルですから、あせらず気長に覚えるようにしましょう。

関連セクションへ 関連セクション・ 固定IPでDNSサーバー構築


このサイトは リンクフリー です。趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。今のところ更新予定はありませんのでご了承ください。
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。