named.conf の設定

[サーバの実験室 Redhat/Fedora]

作成 : 2003/10/12

"サーバの実験室"の検索


named.conf の設定

### /etc/named.conf root:root 644 ###

acl "internal-acl" { 127/8; 192.168.0/24; };

include "/etc/rndc.key";
controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { rndc-key; }; };

include "/etc/host1.key";

logging {
        channel "default_syslog" {
                syslog daemon;
                severity info;
        };
        channel "default_debug" {
                file "named.run";
                severity dynamic;
        };
        channel "null" {
                null;
        };

        category "unmatched" { "null"; };
        category "default" { "default_syslog"; "default_debug"; };
};

options {
        directory "/var/named";
        pid-file "/var/run/named/named.pid";
};

view "internal-view" {
        match-clients { internal-acl; };

        allow-query { internal-acl; };
        allow-recursion { internal-acl; };

        zone "." IN {
                type hint;
                file "named.root";
        };

        zone "localhost" IN {
                type master;
                file "zone/localhost";
                allow-update { none; };
        };

        zone "0.0.127.in-addr.arpa" IN {
                type master;
                file "rev/0.0.127.in-addr.arpa";
                allow-update { none; };
        };

        zone "nina.jp" IN {
                type master;
                file "zone/nina.jp";
                allow-update { key host1; };
                allow-transfer { key host1; };
                also-notify { 192.168.0.11; };
        };

        zone "168.192.in-addr.arpa" IN {
                type master;
                file "rev/168.192.in-addr.arpa";
                allow-update { key host1; };
                allow-transfer { key host1; };
                also-notify { 192.168.0.11; };
        };
};

view "external-view" {
        match-clients { any; };

        allow-query { any; };
        allow-recursion { none; };

        zone "xxx" IN {
                type slave;
                file "zone/xxx";
                masters { x.x.x.x; };
        };
};
### /etc/host1.key root:named 640 ###
key host1 {
        algorithm hmac-md5;
        secret "eJExi+p3SRh92UOSj7m+Lh==";
};

acl ステートメント

アドレスマッチリストにシンボリックネームを割り当てる。 シンボリックネームを使用する前に、acl ステートメントで定義すること。

acl acl-name {
        address-match-list;
};

アドレスマッチリストには、IP アドレス、acl ステートメントで定義した ACL 名、key ステートメントで定義した KEY ID を指定することができる。

address_match_list = address_match_list_element; [ address_match_list_element; ... ]

address_match_list_element = [ ! ] ( ip_address [ /length ] | key key_id | acl_name | { address_match_list } )

アドレスマッチリストをIP アドレスで指定するには、次のように記述する。 ! (びっくりマーク)を先頭につけて、NOT を示すこともできる。

アドレスマッチリストには、あらかじめ定義されているものを使用することができる。

anyすべてのホストに一致する
noneすべてのホストに一致しない
localhostサーバのすべてのインタフェースアドレスに一致する(IPv4 のみ)
localnetsサーバのインタフェースと同じネットワーク上のホストに一致する(IPv4 のみ)

次の例では、127.X.X.X (ループバックアドレス)と192.168.0.X のホストを internal-acl という名前で定義している。

acl "internal-acl" { 127/8; 192.168.0/24; };

include ステートメント

include ステートメントの場所に、指定したファイルの内容を挿入する。

include filename;

controls ステートメント

rndc ユーティリティによるネームサーバの制御で使用する、コントロールチャネルを指定する。 controls ステートメントを記述しないと、127.0.0.1(ループバックアドレス)だけリスンする。

controls {
        inet ( ip_addr | * ) [ port ip_port } allow { address_match_list } keys { key_list };
        { inet .... }
};

inet でリスンするアドレスを指定する。 * (アスタリスク)を指定すると、すべての IPv4 アドレスをリスンする。 port クローズで、リスンするポートを指定することもできる。 port クローズを省略すると、953 番ポートをリスンする。

allow クローズと keys クローズで、ローカルネームサーバを制御できるリモートホストを制限する。 address_match_list には、acl ステートメントで指定したシンボリックネームや、192.168.0/24 のような IP アドレスを記述することができる。 key_list には、include ステートメントで読み込んだ rndc.key ファイルの keys ステートメントで指定した key_id など、rndc クライアントで使用するキーと一致する key_id を記述する。

controls ステートメントを記述しなかったり、controls ステートメントに keys クローズがなかったりした場合、/etc/rndc.key ファイルを読み込もうとする。 /etc/rndc.key ファイルがない場合や、/etc/rndc.key の内容が正しくない(BIND 8 の設定ファイルをそのまま流用したりとか)場合は、エラーになって named は起動しない。

logging ステートメント

ネームサーバのログオプションを設定する。 channel フェーズで出力先やレベルを指定し、category フェーズでどの種類のログをどの channel に記録するかを指定する。

logging {
        [ channel channel_name {
                ( file path_name | syslog syslog_facility | stderr | null );
                [ severity ( critical | error | warning | notice | info | debug | dynamic ); ]
                [ print-category ( yes | no ); ]
                [ print-severity ( yes | no ); ]
                [ print-time ( yes | no ); ]
        }; ]

        [ category category_name {
                channel_name; [ channel_name; ....]
        }; ]
};

あらかじめ、次のようなチャネルが定義されている。

default_syslog
channel "default_syslog" {
        syslog daemon;
        severity info;
};
プライオリティが info 以上のログが、syslog の daemon ファシリティに送られる。
default_debug
channel "default_debug" {
        file "named.run";
        severity dynamic;
};
サーバのデバッグレベルに応じたログが、ワーキングディレクトリ(directory オプションで指定したディレクトリ)のnamed.run ファイルに記録される。
default_stderr
channel "default_stderr" {
        stderr;
        severity info;
};
プライオリティが info 以上のログが、STDERR に記録される。
null
channel "null" {
        null;
};
このチャネルに送られたすべてのログを記録しない。

print-category に yes を指定すると、ログにカテゴリ名を記録する。 print-severity に yes を指定すると、ログに severity を記録する。 print-time に yes を指定すると、ログに日付を記録する。 デフォルトは、すべて no。

カテゴリとして、次の種類を指定することができる。

default指定されなかったすべてのカテゴリ
generalすべてのカテゴリ
databaseキャッシュデータとゾーン情報を格納するデータベースに関連するメッセージ
securityリクエストの承認と否認に関連するメッセージ
config設定ファイルの解析と処理に関連するメッセージ
resolverDNS 解決に関連するメッセージ
xfer-inサーバが受信したゾーン転送に関連するメッセージ
xfer-outサーバが送信したゾーン転送に関連するメッセージ
notifyマスタ・スレーブ間の notify プロトコルに関連するメッセージ
clientクライアントリクエストの処理に関連するメッセージ
unmatchedMessages that named was unable to determine the class of or for which there was no matching view.
networkネットワークオペレーションに関連するメッセージ
updateダイナミックアップデートに関連するメッセージ
queriesクエリに関連するメッセージ
despatchDispatching of incoming packets to the server modules where they are to be processed.
dnssecDNSSEC ・ TSIG プロトコル処理に関連するメッセージ
lame-servers不完全なサーバ(リモートサーバの設定ミスによる)に関連するメッセージ

category フレーズが記述されないとき、次のデフォルト設定が使用される。

category "default" { "default_syslog"; "default_debug"; };
category "unmatched" { "null"; };

options ステートメント

全体に影響するオプションを設定する。 options ステートメントが複数記述されていた場合、エラーになり named は起動できない。 options ステートメントが記述されていない場合、すべてのオプションはデフォルトの設定値を使用する。 たくさんのオプションを設定することができるが、そのうち一部だけ説明する。

directory

ネームサーバのワーキングディレクトリを絶対パスで指定する。 デフォルトは、"." (named を起動しようとしたときのカレントディレクトリ)。 設定ファイルに記述された相対パスは、このワーキングディレクトリからの相対パスになる。

directory filename;

pid-file

named の PID を記録するファイルを指定する。 デフォルトは、"/var/run/named.pid"。

pid-file filename;

notify

yes を指定すると、ゾーン情報が更新されたとき、NS レコードで指定したサーバと also-notify オプションで指定したサーバに notify メッセージを 送信する。 explicit を指定すると、also-notify オプションで明示されたサーバにのみ notify メッセージを送信する。 デフォルトは yes。 zone ステートに nofity オプションが記述された場合、options ステートメントの設定を上書きする。

notify ( yes | no | explicit );

recursion

このオプションに yes が指定され、DNS クエリが再起的な問い合わせを要求しているならば、サーバはクエリに答えるために必要な仕事をすべて行おうとする。 no が指定され、サーバのキャッシュに答えが見つからないならば、クライアントが次に参照するべきネームサーバを返す。 デフォルトは yes。

recursion に no を指定しても、クライアントがネームサーバのキャッシュから答えを得られることに注意する。

recursion ( yes | no );

forward

このオプションは、forwarders オプションが記述されているときのみ有効になる。 first を指定すると、最初に(キャッシュの中に答えが見つからなければ) forwarders で指定したネームサーバに問い合わせ、もし答えが得られなければ次に自分自身で答えを見つけようとする。 only を指定すると、単純に forwarders で指定したネームサーバに問い合わせる。 デフォルトは first。

LAN 内のネームサーバのような、インターネットに直接問い合わせをさせたくないサーバで使用される。

forward ( only | first );

forwarders

クエリを転送するネームサーバを指定する。 デフォルトは指定なし(転送しない)。

リストの左に指定したサーバから順に転送するようだ。

forwarders { ip_addr; [ ip_addr; ... ] };

allow-notify

notify の送信を許可するホストを指定する。 デフォルトは、ゾーンのマスタであるホストからの notify のみ処理する。 このオプションは、スレーブゾーンに対してのみ有効になる。 zone ステートに allow-nofity オプションが記述された場合、options ステートメントの設定を上書きする。

address_match_list には、IP アドレス、acl ステートメントで定義した ACL 名、key ステートメントで定義した KEY ID を指定することができる。

allow-notify { address_match_list; };

allow-query

クエリを許可するホストを指定する。 デフォルトは、すべてのホストからのクエリを許可する。 zone ステートに allow-query オプションが記述された場合、options ステートメントの設定を上書きする。

address_match_list には、IP アドレス、acl ステートメントで定義した ACL 名、key ステートメントで定義した KEY ID を指定することができる。

allow-query { address_match_list; };

allow-recursion

再帰的なクエリを許可するホストを指定する。 デフォルトは、すべてのホストからの再帰的クエリを許可する。

address_match_list には、IP アドレス、acl ステートメントで定義した ACL 名、key ステートメントで定義した KEY ID を指定することができる。

allow-recursion に no を指定しても、サーバのキャッシュ検索を妨げることはない。 また、allow-recursion に yes を指定しても、recursion オプションが no になっていれば再帰的クエリは許可されない。

allow-recursion { address_match_list; };

allow-transfer

ゾーン転送を許可するホストを指定する。 デフォルトは、すべてのホストへのゾーン転送を許可する。 zone ステートに allow-transfer オプションが記述された場合、options ステートメントの設定を上書きする。

address_match_list には、IP アドレス、acl ステートメントで定義した ACL 名、key ステートメントで定義した KEY ID を指定することができる。

allow-transfer { address_match_list; };

blackhole

クエリに対する返答をしないホストを指定する。 パケットを返さないので、クエリはブラックホールに飲み込まれてしまったように見える。 デフォルトは、none。

address_match_list には、IP アドレス、acl ステートメントで定義した ACL 名、key ステートメントで定義した KEY ID を指定することができる。

blackhole { address_match_list; };

listen-on

クエリをリスンするポートとインタフェースを指定する。 このオプションを指定しないと、すべてのインタフェースの 53 番ポートをリスンする。

listen-on [ port ip_port ] { address_match_list; };

次の例では、サーバの 1.2.3.4 インタフェースの 53 番ポートでクエリをリスンする。

listen-on port 53 { 1.2.3.4; };

query-source

サーバが他のネームサーバに問い合わせるときに使用する、アドレスとポートを指定する。 アドレスに * を指定するか省略すると、サーバが持つ任意のアドレスを使用する。 ポートに * を指定するか省略すると、任意の非特権ポート(1023 番以上)を使用する。

ポートの指定は UDP クエリにのみ適用され、TCP クエリは任意の非特権ポートを使用することに注意する。

query-source [ address ( ip_addr | * ) ] [ port ( ip_port | * ) ];

デフォルトは、次の指定をしたときの動作と同じになる。

query-source address * port *;

also-notify

ゾーンの NS レコードに記述されたネームサーバに加えて、notify メッセージを送信するサーバを IP アドレスで指定する。 zone ステートに also-notify オプションが記述された場合、options ステートメントの設定を上書きする。

also-notify { ip_address [ port ip_port ]; [ ip_address [ port ip_port ] ]; };

transfer-source

サーバがゾーン転送するときに使用する、アドレスとポートを指定する。 アドレスに * を指定するか省略すると、サーバが持つ任意のアドレスを使用する。 ポートに * を指定するか省略すると、任意の非特権ポート(1023 番以上)を使用する。

ポートの指定は UDP クエリにのみ適用され、TCP クエリは任意の非特権ポートを使用することに注意する。

transfer-source [ address ( ip_addr | * ) ] [ port ( ip_port | * ) ];

デフォルトは、次の指定をしたときの動作と同じになる。

transfer-source address * port *;

notify-source

サーバが notify メッセージを送信するときに使用する、アドレスとポートを指定する。 アドレスに * を指定するか省略すると、サーバが持つ任意のアドレスを使用する。 ポートに * を指定するか省略すると、任意の非特権ポート(1023 番以上)を使用する。

ポートの指定は UDP クエリにのみ適用され、TCP クエリは任意の非特権ポートを使用することに注意する。

notify-source [ address ( ip_addr | * ) ] [ port ( ip_port | * ) ];

デフォルトは、次の指定をしたときの動作と同じになる。

notify-source address * port *;

view ステートメント

誰からのクエリかによって、ネームサーバに異なる返答をさせたいときに使用する。 たとえば、複数のサーバを実行せずに、外部向けと内部向けのネームサーバを構築することができる。

view view_name {
        match-clients { address_match_list; };
        match-destinations { address_match_list; };
        match-recursive-only ( yes | no );
        [ view_option; ... ]
        [ zone_statistics ( yes | no ); ]
        [ zone_statement; ... ]
};

それぞれの view は、クライアントに見せる DNS 名前空間を定義する。 view の中で定義されたゾーンは、match-clients クローズ、match-destinations クローズ、match-recursive-only クローズでマッチしたクライアントからのみアクセスが可能になる。

match-clients

クライアント IP アドレスが address_match_list と一致すればマッチする。 match-clients クローズを省略すると、すべてのクライアント IP アドレスにマッチする。 address_match_list には、IP アドレス、acl ステートメントで定義した ACL 名、key ステートメントで定義した KEY ID を指定することができる。

match-destinations

デスティネーション IP アドレスが address_match_list と一致すればマッチする。 ここでいうデスティネーション IP アドレスは、ネームサーバのインターフェースに割り当てた IP アドレスになる。 複数のインタフェースを持つサーバで、インタフェースごとにネームサーバの返答を変えたいときに使用する。 match-destinations クローズを省略すると、すべてのデスティネーション IP アドレスにマッチする。 address_match_list には、IP アドレス、acl ステートメントで定義した ACL 名、key ステートメントで定義した KEY ID を指定することができる。

match-recursive-only

yes を指定すると、クライアントが再帰的なクエリを要求したときだけマッチする。

options ステートメントで指定できるオプションの多くが、view ステートメントでも使用することができる。 view の中でオプションが明示されなければ、options ステートメントで使用された値がデフォルトになる。 さらに、ゾーンオプションは view ステートメントでデフォルト値を指定することができる。 view ステートメントで明示したオプションの値は、options ステートメントに優先する。

zone ステートメント

ゾーンに影響するオプションを設定する。 たくさんのオプションを設定することができるが、そのうち一部だけ説明する。

zone zone_name [ class ] {
        zone_option;
        ...
};

type

ゾーンのタイプを指定する。

zone ( master | slave | hint | stub | forward );
masterゾーンデータのマスターコピーを持ち、ゾーンの権威ある返答を提供することができる。
slaveゾーンデータの複製を持つ。 masters オプションでマスタサーバを指定する。
hintルートネームサーバを指定する。 ヒントゾーンが(クラス IN に対して)指定されない場合、コンパイルされているデフォルトセットを使用する。
stubゾーンデータの NS レコードのみの複製を持つ。 bind 特有の機能で、新しい設定では推奨されない。
forwardゾーンごとにクエリを転送するネームサーバを変更する。 forward オプションと forwarders オプションでクエリを転送するサーバを指定する。

file

ゾーン情報を書き込むファイルを指定する。 相対パスで記述したとき、options ステートメントの directory オプションで指定したディレクトリからの相対パスになる。

ヒントゾーンとマスタゾーンでは必須。 スレーブゾーンでは推奨。 トランスファーゾーンとスタブゾーンでは(たぶん)無視される。

file filename;

masters

マスタサーバの IP アドレスを指定する。 スレーブゾーンとスタブゾーンでは、masters オプションは必須。

masters { ip_addr [ port ip_port ]; ... };

allow-notify

notify の送信を許可するホストを指定する。 デフォルトは、ゾーンのマスタであるホストからの notify のみ処理する。 このオプションは、スレーブゾーンに対してのみ有効になる。 zone ステートに allow-nofity オプションが記述された場合、options ステートメントの設定を上書きする。

address_match_list には、IP アドレス、acl ステートメントで定義した ACL 名、key ステートメントで定義した KEY ID を指定することができる。

allow-notify { address_match_list; };

allow-query

クエリを許可するホストを指定する。 デフォルトは、すべてのホストからのクエリを許可する。 zone ステートに allow-query オプションが記述された場合、options ステートメントの設定を上書きする。

address_match_list には、IP アドレス、acl ステートメントで定義した ACL 名、key ステートメントで定義した KEY ID を指定することができる。

allow-query { address_match_list; };

allow-transfer

ゾーン転送を許可するホストを指定する。 デフォルトは、すべてのホストへのゾーン転送を許可する。 zone ステートに allow-transfer オプションが記述された場合、options ステートメントの設定を上書きする。

address_match_list には、IP アドレス、acl ステートメントで定義した ACL 名、key ステートメントで定義した KEY ID を指定することができる。

allow-transfer { address_match_list; };

allow-update

指定されたホストから送信されたダイナミック DNS アップデートを許可する。

address_match_list には、key による暗号化認証を指定することが推奨される。 IP アドレスベースの制限は使用しないほうがよい。

allow-update { address_match_list; };

allow-update-forwarding

指定されたホストからスレーブゾーンに送信されたダイナミック DNS アップデートを、マスタサーバに転送することを許可する。 デフォルトは none。 (すべて転送しない)

address_match_list には、any (すべて転送する)か none (すべて転送しない)にしたほうがよい。 アップデートに関するアクセス制御は、マスタサーバに任せる。

allow-update-forwarding { address_match_list; };

also-notify

ゾーンの NS レコードに記述されたネームサーバに加えて、notify メッセージを送信するサーバを IP アドレスで指定する。 zone ステートに also-notify オプションが記述された場合、options ステートメントの設定を上書きする。

also-notify { ip_address [ port ip_port ]; [ ip_address [ port ip_port ] ]; };

forward

このオプションは、forwarders オプションが記述されているときのみ有効になる。 first を指定すると、最初に(キャッシュの中に答えが見つからなければ) forwarders で指定したネームサーバに問い合わせ、もし答えが得られなければ次に自分自身で答えを見つけようとする。 only を指定すると、単純に forwarders で指定したネームサーバに問い合わせる。 デフォルトは first。

forward ( only | first );

forwarders

クエリを転送するネームサーバを指定する。 フォワードゾーンに forwarders オプションを記述しないと、そのゾーンの転送は行われない。

forwarders { ip_addr; [ ip_addr; ... ] };

notify

yes を指定すると、ゾーン情報が更新されたとき、NS レコードで指定したサーバと also-notify オプションで指定したサーバに notify メッセージを 送信する。 explicit を指定すると、also-notify オプションで明示されたサーバにのみ notify メッセージを送信する。 デフォルトは yes。 zone ステートに nofity オプションが記述された場合、options ステートメントの設定を上書きする。

notify ( yes | no | explicit );

transfer-source

サーバがゾーン転送するときに使用する、アドレスとポートを指定する。 アドレスに * を指定するか省略すると、サーバが持つ任意のアドレスを使用する。 ポートに * を指定するか省略すると、任意の非特権ポート(1023 番以上)を使用する。

ポートの指定は UDP クエリにのみ適用され、TCP クエリは任意の非特権ポートを使用することに注意する。

transfer-source [ address ( ip_addr | * ) ] [ port ( ip_port | * ) ];

デフォルトは、次の指定をしたときの動作と同じになる。

transfer-source address * port *;

notify-source

サーバが notify メッセージを送信するときに使用する、アドレスとポートを指定する。 アドレスに * を指定するか省略すると、サーバが持つ任意のアドレスを使用する。 ポートに * を指定するか省略すると、任意の非特権ポート(1023 番以上)を使用する。

ポートの指定は UDP クエリにのみ適用され、TCP クエリは任意の非特権ポートを使用することに注意する。

notify-source [ address ( ip_addr | * ) ] [ port ( ip_port | * ) ];

デフォルトは、次の指定をしたときの動作と同じになる。

notify-source address * port *;

[サーバの実験室 Redhat/Fedora]