このページではLinuxサーバーで運用するDNSサーバーBIND(〜9.3.x)/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について


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

では、現在構築の サーバー システム用のゾーンファイルの記述の前に、 WBEL CentOS BIND で予め準備されている デフォルト のゾーンファイルの説明をしましょう。

ファイルは、 "/var/named/(WBEL3,CentOS3)" "/var/named/chroot/var/named/(WBEL4,CentOS4,CentOS5)" にありますが、一般の ユーザーアカウント ではこれらを見ることができません。 root アカウントで ログイン してからご覧ください。

デフォルトのゾーンファイルはほぼ完全に省略された記述ですので、省略形に慣れていないと内容を読み取るのは難しいかもしれません。

もちろん、 ゾーンファイルの省略方法 の説明を参考にすれば大丈夫のはずですが、いちいち別のセクションを参照するのは大変かもしれませんので、説明が必要な部分はこのセクションでも随時挿入していきます。

また、これからご覧頂くデフォルトのゾーンファイルは、基本的に設定内容を変更する必要はありません。

ところがどういうわけかWBEL3,CentOS3,WBEL4,CentOS4では一部のゾーンファイルに「明らかな記述間違い」があります。

その間違いは些細なものですので、そのまま使用しても大きな問題はないと考えられますが、やはりきちんと修正して使用すべきですので、面倒でもご一読ください。

以下のパートのタイトル番号は、ブートファイル "/etc/named.conf" の該当する記述部分と同じにしていますので、照合して参照してください。

3."named.ca"〜ルートサーバーの設定

ルートサーバー に問い合わせを行うためのゾーンファイルです。対応するブートファイルの記述は 3.ルートサーバーのためのゾーンファイル設定へ(〜9.3.x) です。

デフォルト の内容は以下のとおりです。

;    This file holds the information on root name servers needed to
;    initialize cache of Internet domain name servers
;    (e.g. reference this file in the "cache . <file>"
;    configuration file of BIND domain name servers).
;
;    This file is made available by InterNIC
;    under anonymous FTP as
;      file        /domain/named.cache
;      on server      FTP.INTERNIC.NET
;    -OR-          RS.INTERNIC.NET

;
;    last update:  Jan 29, 2004
;    related version of root zone:  2004012900
;
;
; formerly NS.INTERNIC.NET
;
.            3600000 IN NS  A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.   3600000   A   198.41.0.4
;
; formerly NS1.ISI.EDU
;
.            3600000   NS  B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.   3600000   A   192.228.79.201
;

   中略

;
; operated by ICANN
;
.            3600000   NS  L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.   3600000   A   198.32.64.12
;
; operated by WIDE
;
.            3600000   NS  M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.   3600000   A   202.12.27.33
; End of File

デフォルトの"named.ca"

内容の詳細な説明は割愛しますが、このゾーンファイルの中身は要するにルートサーバーの所在地の一覧で、 named はこの一覧を元に適宜ルートサーバーへの問い合わせを行うわけです。

ルートサーバーは現在13台が利用可能ですが、namedはその中から接続可能な(つまり込み合っていない)ルートサーバーに接続し、任意の ドメイン名 の「権威ある DNS 情報」を持った DNSサーバー の所在地情報を得ることになります。

ルートサーバーの所在地については、それによって世の中のDNSサーバーがただちに影響をうけてしまうような大幅な変更が行われることはあり得ません。常識的に考えて。

named.caの内容は稀に変更になることがありますから、その場合は最新の内容に書き換えることになりますが、 「一刻も早く」 あるいは 「何が何でも」 書き換えなければならないということはありません。

先に説明したとおり、namedはnamed.caのリストの中から接続可能なルートサーバーを選んで接続しますから、一つや二つ接続できないルートサーバーがあっても大した問題にはならない、というのがその理由です。

DNSサーバーの解説書の中には、「時々named.caの最新情報を確認して、適宜修正すること。」のような記述が見られることがありますが。それはまず必要のない作業です。

なぜかというと、 構築中のLinuxサーバー は、 WBEL CentOS アプリケーション yum yumによるシステムのアップデート(WBEL3) yumによるシステムのアップデート(CentOS3) yumによるシステムのアップデート(WBEL4) yumによるシステムのアップデート(CentOS4) yumによるシステムのアップデート(CentOS5) アップデート する運用スタイルをとりますから、named.caの内容が変更になっても、それに追随する形で BIND のアップデートも行われるはずだからです。

ちなみに、named.caの最新情報は、named.caの中のコメント( 太字 で示す部分)にあるとおり、

で確認することができます。

4."localhost.zone"〜ローカルホスト(一般名)の設定

対応するブートファイルの記述は 4.ローカルホスト(一般名)の正引きゾーンファイル設定へ(〜9.3.x) です。

「自分自身を示す普遍的な ホスト名 である"localhost"に対する IPアドレス は、 ループバックアドレス である"127.0.0.1"」

という 名前解決 を担うゾーンファイルです。

$TTL  86400
@       IN SOA @   root (
                    42       ; serial (d. adams)
                    3H       ; refresh
                    15M       ; retry
                    1W       ; expiry
                    1D )      ; minimum
        IN NS     @
        IN A      127.0.0.1
        IN AAAA    ::1

デフォルトの"localhost.zone"

このゾーンファイル中のTTLは、"$TTL"の値によりすべて86400秒(一日)が設定されていることになります $TTLによる省略ルール

また、ブートファイル上でのゾーン名は"localhost" 4.ローカルホスト(一般名)の正引きゾーンファイル設定へ(〜9.3.x) ですから、このゾーンファイル上の"@"は"localhost."で置き換えられます $ORIGINによる省略ルール @による省略ルール

更に、NSレコード以下のゾーン名はすべて省略されていますが省略のルール 連続記述による省略ルール により、その直前のレコードであるSOAレコードのゾーン名"@"、すなわち"localhost."が設定されているものとみなされます。

また、メールアドレスを記述すべきところで、末尾に ".(ピリオド)" がないものは、後ろに".localhost."が補われます。 .(ピリオド)による省略のルールへ

従って、このゾーンファイルの省略部分を補うと次のようになります。

$TTL  86400
localhost.       IN SOA localhost.   root.localhost. (
                    42       ; serial (d. adams)
                    3H       ; refresh
                    15M       ; retry
                    1W       ; expiry
                    1D )      ; minimum
localhost.    86400    IN NS     localhost.
localhost.    86400    IN A      127.0.0.1
localhost.    86400    IN AAAA    ::1

省略部を補ったデフォルトの"localhost.zone"

つまり、

1.ゾーン"localhost"に由来する FQDN は、 DNSサーバー "localhost"によって権威ある名前解決を受け、その管理者のメールアドレスは"root@localhost"である、というレポートを発信する SOAレコード

2.ゾーン"localhost"に由来するFQDNは、DNSサーバー"localhost"によって権威ある名前解決を受ける、という NSレコード

3.ホスト名"localhost"は、IPアドレス"127.0.0.1"へ名前解決される、という Aレコード

4.ホスト名"localhost"は、IPv6 IPv6の説明へ のループバックアドレスである"::1"へ名前解決される、という AAAAレコード

の四つのレコードから構成されています。

通常"localhost"に対する正引きの名前解決は hostsファイル で行われますし、このゾーンファイルはあくまで「自分自身のためのもの」ですから、手を加える必要は特にありません。

AAAAは"quad A「クワッドエー」"と読みます。
"::1"は、IPv6のループバックアドレスを示す"0:0:0:0:0:0:0:1"の省略形です。

詳細は割愛しますが、IPv6の場合はIPアドレスへの名前解決レコードとして、 AAAAレコード を宣言して設定します。

実際にはIPv6はまだ使用しませんのでこの部分の設定は当面必要はありませんが、わざわざ削除する必要はありませんのでそのまま残しておきましょう。

4'."localdomain.zone"〜ローカルホスト(DNS名)の設定

対応するブートファイルの記述は 4'.ローカルホスト(DNS名)の正引きゾーンファイル設定へ(〜9.3.x) です。

「自分自身を示す DNS 名としての ホスト名 である"localhost.localdomain"に対する IPアドレス は、 ループバックアドレス である"127.0.0.1"」

という 名前解決 を担うゾーンファイルです。

$TTL  86400
@       IN SOA localhost   root (
                    42       ; serial (d. adams)
                    3H       ; refresh
                    15M       ; retry
                    1W       ; expiry
                    1D )      ; minimum
        IN NS     localhost
localhost   IN A      127.0.0.1

デフォルトの"localdomain.zone"

このゾーンファイル中のTTLは、"$TTL"の値によりすべて86400秒(一日)が設定されていることになります $TTLによる省略ルール

また、ブートファイル上でのゾーン名は"localdamain" 4'.ローカルホスト(DNS名)の正引きゾーンファイル設定へ(〜9.3.x) ですから、このゾーンファイル上の"@"は"localdamain."で置き換えられます $ORIGINによる省略ルール @による省略ルール

更に、NSレコードのゾーン名は省略されていますが、省略のルール 連続記述による省略ルール により、その直前のレコードであるSOAレコードのゾーン名"@"、すなわち"localdamain."が設定されているものとみなされます。

また、 FQDN やメールアドレスを記述すべきところで、末尾に ".(ピリオド)" がないものは、後ろに".localdamain."が補われます。 .(ピリオド)による省略のルールへ

従って、このゾーンファイルの省略部分を補うと次のようになります。

$TTL  86400
localdomain.    IN SOA localhost.localdomain.   root.localdomain. (
                    42       ; serial (d. adams)
                    3H       ; refresh
                    15M       ; retry
                    1W       ; expiry
                    1D )      ; minimum
localdomain.       86400    IN NS     localhost.localdomain.
localhost.localdomain.  86400    IN A      127.0.0.1

省略部を補ったデフォルトの"localdomain.zone"

つまり、

1.ゾーン"localdomain"に由来する FQDN は、 DNSサーバー "localhost.localdomain"によって権威ある名前解決を受け、その管理者のメールアドレスは"root@localhost.localdomain"である、というレポートを発信する SOAレコード

2.ゾーン"localdomain"に由来するFQDNは、DNSサーバー"localhost.localdomain"によって権威ある名前解決を受ける、という NSレコード

3.ホスト名"localhost.localdomain"は、IPアドレス"127.0.0.1"へ名前解決される、という Aレコード

の三つのレコードから構成されています。

通常"localhost.localdomain"に対する正引きの名前解決は hostsファイル で行われますし、このゾーンファイルはあくまで「自分自身のためのもの」ですから、手を加える必要は特にありません。

5."named.local"〜ループバックアドレスの逆引きゾーンファイルの設定

対応するブートファイルの記述は 5.ループバックアドレスの逆引きゾーンファイル設定へ(〜9.3.x) です。

「自分自身を示す ループバックアドレス "127.0.0.1"の ホスト名 は"localhost"である、という逆引きの 名前解決 を担うゾーンファイルです。

SOAレコードの各時間のパラメータの表記方法が「秒」になっていますが、別に深い意味があってそうなっているわけではなく、これを記述した人がたまたまそうしただけです。
UNIX 系の OS では珍しくない現象です。考えすぎないようにしましょう。
$TTL  86400
@       IN SOA  localhost.   root.localhost. (
                    1997022700    ; Serial
                    28800      ; Refresh
                    14400      ; Retry
                    3600000     ; Expire
                    86400 )     ; Minimum
        IN NS     localhost.
1       IN PTR     localhost.

デフォルトの"named.local"

このゾーンファイル中のTTLは、"$TTL"の値によりすべて86400秒(一日)が設定されていることになります $TTLによる省略ルール

また、ブートファイル上でのゾーン名は"0.0.127.in-addr.arpa" 5.ループバックアドレスの逆引きゾーンファイル設定へ(〜9.3.x) ですから、このゾーンファイル上の"@"は"0.0.127.in-addr.arpa."で置き換えられます $ORIGINによる省略ルール @による省略ルール

更に、NSレコードのゾーン名は省略されていますが、省略のルール 連続記述による省略ルール により、その直前のレコードであるSOAレコードのゾーン名"@"、すなわち"0.0.127.in-addr.arpa."が設定されているものとみなされます。

また、IPアドレスを記述すべきところで、末尾に ".(ピリオド)" がないものは、後ろに".0.0.127.in-addr.arpa."が補われます。 .(ピリオド)による省略のルールへ

従って、このゾーンファイルの省略部分を補うと次のようになります。

$TTL  86400
0.0.127.in-addr.arpa.    IN SOA  localhost.   root.localhost. (
                    1997022700    ; Serial
                    28800      ; Refresh
                    14400      ; Retry
                    3600000     ; Expire
                    86400 )     ; Minimum
0.0.127.in-addr.arpa.    86400    IN NS     localhost.
1.0.0.127.in-addr.arpa.   86400    IN PTR     localhost.

省略部を補ったデフォルトの"named.local"

つまり、

1.ゾーン"0.0.127.in-addr.arpa"、すなわち"127.0.0.0/24"の サブネット は、 DNSサーバー "localhost"によって権威ある名前解決を受け、その管理者のメールアドレスは"root@localhost"である、というレポートを発信する SOAレコード

2."127.0.0.0/24"の サブネット は、DNSサーバー"localhost"によって権威ある名前解決を受ける、という NSレコード

3.IPアドレス"127.0.0.1"は、ホスト名"localhost"へ名前解決される、という Aレコード

の三つのレコードから構成されています。

もちろん手を加える必要は特にありません。

6."named.ip6.local"〜IPv6用ループバックアドレスの逆引きゾーンファイルの設定

対応するブートファイルの記述は 6.IPv6用ループバックアドレスの逆引きゾーンファイル設定へ(〜9.3.x) です。

「自分自身を示すIPv6の ループバックアドレス "0:0:0:0:0:0:0:1"の ホスト名 は"localhost"である、という逆引きの 名前解決 を担うゾーンファイルです。

$TTL  86400
@       IN SOA  localhost.   root.localhost. (
                    1997022700    ; Serial
                    28800      ; Refresh
                    14400      ; Retry
                    3600000     ; Expire
                    86400 )     ; Minimum
        IN NS     localhost.
1       IN PTR     localhost.

デフォルトの"named.ip6.local"

実は、このゾーンファイルの内容は、上の 5. で説明したループバックアドレスの逆引きゾーンファイルである "named.local" 全く同じ です。

ただ、ブートファイル上でのゾーン名が"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" 6.IPv6用ループバックアドレスの逆引きゾーンファイル設定へ(〜9.3.x) ですから、このゾーンファイル上の"@"は"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa."で置き換えられます $ORIGINによる省略ルール @による省略ルール

更に、NSレコードのゾーン名は省略されていますが、省略のルール 連続記述による省略ルール により、その直前のレコードであるSOAレコードのゾーン名"@"、すなわち"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa."が設定されているものとみなされます。

また、IPアドレスを記述すべきところで、末尾に ".(ピリオド)" がないものは、後ろに".0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa."が補われます。 .(ピリオド)による省略のルールへ

IPv6の場合は、現在使われているIPv4のように、 ネットワーク部 ホスト部 の境界が可変ではなく、 ネットワーククラス は一種類で、全128 ビット のうち上位64ビットがネットワーク部、下位64ビットがホスト部になっています。

しかしながらこのゾーンファイルでは124ビットまでがネットワーク部であるかのような設定がなされています。

これは現在の BIND に付加されているIPv6への対応が、まだ暫定的であるための措置ですが、事実上ただひとつのループバックアドレスに対して設定が行われているだけですから、実用上は何の問題もありません。

もちろん手を加える必要も特にありません。

7.7'."named.zero""named.broadcast"〜誤った逆引きに対処するゾーンファイルの設定

対応するブートファイルの記述は 7.7'.誤った逆引きに対処するゾーンファイル設定へ(〜9.3.x) です。

すべての IPアドレス の先頭である "0.0.0.0" と、末尾である "255.255.255.255" に対して、あり得ない逆引きの 名前解決 named が自分自身でエラー処理し、外部への問い合わせを発生させないようにするゾーンファイルの設定となります。

"named.zero"と"named.broadcast"は全く同じ内容です。

以下に WBEL3 CentOS3 、WBEL4、CentOS4の "named.zero"と"named.broadcast"を示します。

$TTL  86400
@       IN SOA   localhost   root (
                    42       ; serial (d. adams)
                    3H       ; refresh
                    15M       ; retry
                    1W       ; expiry
                    1D )      ; minimum
        IN NS    localhost

デフォルトの"named.zero"と"named.broadcast"

このゾーンファイル中のTTLは、"$TTL"の値によりすべて86400秒(一日)が設定されていることになります $TTLによる省略ルール

また、ブートファイル上でのゾーン名は、それぞれ"0.in-addr.arpa"と"255.in-addr.arpa"ですから 5.ループバックアドレスの逆引きゾーンファイル設定へ(〜9.3.x) 、このゾーンファイル上の"@"は各々"0.in-addr.arpa."と"255.in-addr.arpa."で置き換えられます $ORIGINによる省略ルール @による省略ルール

更に、NSレコードのゾーン名は省略されていますが、省略のルール 連続記述による省略ルール により、その直前のレコードであるSOAレコードのゾーン名"@"、すなわちそれぞれ"0.in-addr.arpa."と"255.in-addr.arpa."が設定されているものとみなされます。

さて、このゾーンファイルには 明らかな誤りがある ことがお解かりでしょうか。

もしも、このゾーンファイルの省略部分をルール通り補うと、"named.zero"の場合は次のようになります。

$TTL  86400
0.in-addr.arpa.  IN SOA  localhost.0.in-addr.arpa.  root.0.in-addr.arpa. (
                    42       ; serial (d. adams)
                    3H       ; refresh
                    15M       ; retry
                    1W       ; expiry
                    1D )      ; minimum
0.in-addr.arpa.  86400  IN NS  localhost.0.in-addr.arpa.

省略部を補ったデフォルトままの"named.zero"

もうお解かりの通り、"0.localhost(255.localhost)"などという DNSサーバー などあり得ませんから、このままではこれらのゾーンファイルは全く機能しません。

そこで、 nano エディタで "/var/named/named.zero" "/var/named/named.broadcast" を、いずれも次のように書き換えて保存してください。 nanoエディタでファイルを開く nanoエディタ編集後にでファイルを保存する

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# nano /var/named/named.zeroEnter

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# nano /var/named/named.broadcastEnter


$TTL  86400
@       IN SOA   localhost.   root.localhost. (
                    42       ; serial (d. adams)
                    3H       ; refresh
                    15M       ; retry
                    1W       ; expiry
                    1D )      ; minimum
        IN NS    localhost.

修正した"named.zero"と"named.broadcast"

これらの「誤った逆引きに対するnamedでの処理」は後から「できればあったほうがいい設定」という形で付け加えられたものですから、結構安易に作られてしまったのかもしれません。

想像ですが、これは"named.zero"と"named.broadcast"を最初に記述した担当者が、本来は ループバックアドレス に対する逆引きのゾーンファイル "named.local" からPTRレコードを削除して作製すべきところを、間違って正引きのゾーンファイルである "localdomain.zone" からAレコードを削除して作成してしまったものだと思われます。

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

さて、これらのゾーンファイルには、肝心のPTRレコードが一つもありませんから、逆引きの名前解決の対象となる"0.in-addr.arpa"と"255.in-addr.arpa"の二つのゾーンについては 構築中のLinuxサーバー が自分自身のnamedでエラー処理を行い、他のDNSサーバーへの問い合わせを行いません。

あまりスマートは方法ではないかもしれませんし、ネットワーク負荷の軽減に対する貢献度は微々たるものかもしれませんが、これらはマナーとしてきちんと設定しておきましょう。

なお、CentOS5の BIND では"named.zero""named.broadcast"ともきちんと設定されていますので修正の必要はありません。

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


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