ゾーンデータのフォーマットは DNS の仕様で定義されているが、構成ファイルは BIND 特有のものであり、
DNS の RFC では定義されていない。
named.conf はネーム サーバーを制御するための様々なステートメントと、それに付随するオプション (サブ ステートメント) で構成される。
ステートメントとオプションの記述に関する書式は、次のように決められている。
- ステートメントおよびサブ ステートメントは、すべてセミコロン ( ; ) で終わる。
- 大文字と小文字は区別しない。
一般には、すべて小文字を使う傾向がある。
- 任意の場所に空行を挿入でき、空行は無視される。
- 空白文字 (スペース、TAB、C/R) は、各項目を区切るデリミタとして解釈される。
また、named.conf で使用できる有効なコメントは次の通り。
- //
コメント記号以降、行末までがコメントと解釈される。
- #
コメント記号以降、行末までがコメントと解釈される。
- /* および */
これらの記号で囲まれた範囲がコメントと解釈される。
named.conf で用いられるステートメントのうち、一般的なものは以下の通り。
acl (access control list) ステートメントは、ネーム サーバーへのアクセスを許可または拒否するホストのグループを定義する。
1 つまたは複数の IP アドレス (
address_match_list) を 1 グループとしてまとめ、任意の名前を付けて管理する。
acl name {
address_list;
};
- アクセス制御リストを定義する。
- name
リストを管理するための名称を指定する。 (名称は任意)
name フィールドに指定した名称は他のステートメントでも参照できるので、アクセス制御以外にも利用できる。
- address_list
適用したいアドレスを記述する。
個々の IP アドレス (例: 192.168.1.123) や、IP ネットワーク表記 (例: 10.20.30.0/24) をセミコロンで区切って複数指定できる。
※ 例えば、 acl "internal" { 10.20.30.0/24; 192.168.1.123; }; と記述すると、
以降のステートメントにおいて該当のアドレスは internal の名称で参照できる。
- acl ステートメントを複数記述し、複数のアドレス制御リストを作成する事は可能。
- 次の4つの名称は、アドレス制御リストとして予め定義されている。
none | どの IP アドレスともマッチしない |
any | すべての IP アドレス |
localhost | ローカル システムで使用されている IP アドレス (127.0.0.1) |
localnets | ローカル システムがそのインターフェースで接続するネットワークの IP アドレス |
named.conf ファイル内の include ステートメントの位置に、指定した別ファイルの内容が挿入される。
分離した方が管理しやすい内容や、セキュリティ上変更されたくない内容などを別ファイルとして保管する事が可能になる。
include "file-name";
- file-name
挿入したいファイルを絶対パスで指定する。
- 他のステートメント内では使用できない。
ネーム サーバーで使われるグローバル オプションを定義して、他のステートメントのデフォルト値とする。
構成ファイル内に 1 度だけ記述可能で、誤って複数の options を記述した場合は、最初のステートメントのみ適用される。
options {
option;
[ option; ... ]
};
- options ステートメントは、様々なオプション (サブ ステートメント) を大カッコ { } で囲んで定義する。
- 他のステートメントで同じオプションが設定された場合、オプションの設定値はそのステートメントに限って上書きされる。
【 主な option 】
options ステートメント内で使用する主な option は次の通り。
- directory "path";
- ネーム サーバーの作業ディレクトリを絶対パスで指定する。
- 構成ファイルに記載されているパスが絶対パスでない場合、ここで指定したディレクトリからの相対パスと解釈される。
- forwarders { ip_addr; [ ip_addr; ... ] };
- 問い合わせに対する回答 (ゾーンデータ、キャッシュ) を持っていない場合に、
問い合わせを転送する他のネーム サーバー (フォワーダー) を IP アドレス (1つまたは複数) で指定する。
- forwarders を設定すると、ネーム サーバーは自身で解決できない問い合わせを直ちにフォワーダー へ転送する。
- フォワーダーへの転送は「再帰的」な問い合わせで行う。
- forward ( only | first );
- forwarders の転送方法を指定する。
only | 自分では解決処理を行わない。
フォワーダーから回答が得られない場合はエラーとなる。 |
first | フォワーダーから回答が得られない場合、フォワーダー以外のネーム サーバーへ
反復的問い合わせを繰り返す。 |
- forward オプション省略時のデフォルト値は first 。
- allow-transfer { list; };
- ゾーン転送要求を許可するホストを指定する。
- list には許可するホストの、IP アドレスまたはアクセス制御リスト名を記述する。
- 通常はスレーブ サーバーの IP アドレスを指定し、不特定ホストからのゾーン転送要求を拒否する。
- allow-transfer オプション省略時のデフォルト値は any 。
- allow-query { list; };
- 名前解決要求を許可するホスト指定する。
- list には許可するホストの、IP アドレスまたはアクセス制御リスト名を記述する。
- allow-query のデフォルトは any であり、すべてのホストからの要求を受け付ける。
- notify ( yes | no );
- マスター サーバーのゾーンファイルが更新された場合、更新通知をスレーブ サーバーへ送信するかどうかを指定する。
- デフォルトは "yes"
更新通知がスレーブ サーバーへ送信され、通知を受けたスレーブ サーバーはリフレッシュのタイミングを待たずにゾーン転送要求の処理を行う。
- listen-on [ port number ] { list; };
- ネーム サーバーが問い合わせを待ち受ける、ネットワーク インターフェースを指定する。
- listには待ち受けるインターフェースの IP アドレス、ネットワーク アドレス、またはアクセス制御リストを記述する。
- listen-on が指定されていない場合、ネーム サーバーはすべてのネットワーク インターフェースで待機する。
- 複数のネットワーク インターフェースを装備したネーム サーバーが、
特定のネットワーク (例: 192.168.1.1) からの問い合わせのみを受け付けたい場合は次のように指定する。
listen-on { 192.168.1.1; };
- 標準ポート (53) を使わない場合は、port オプションで指定する。
次の記述はネーム サーバーが待機するポートを "1234" に設定する。
listen-on port 1234 { 192.168.1.1; };
ネーム サーバーが権限を持つゾーンの独自オプションなど、ゾーンの特性を定義する。
zone ステートメントには多くのオプション (サブ ステートメント) がある。
ネーム サーバーがマスターであるのかスレーブであるのかは、zone ステートメント内の type サブ ステートメントで決まる。
つまり、ゾーンごとにマスターかスレーブであるかを指定しているのであって、
1台のサーバー (ホスト) が丸ごとマスターであったり、スレーブである必要はない。
zone "domain-name" [class] {
type master|slave|hint;
file "fname";
[zone-option;]
[ ...; ]
};
- domain-name
- ゾーンのドメイン名を記述する。 ドメイン名は二重引用符で囲む。
- ここで定義したドメイン名が、当該ゾーンファイルで使用される $ORIGIN ディレクティブに割り付けられ、
ゾーンファイルの資源レコードにおける起点名となる。
- class
- クラスを指定する。 通常はインターネット クラスを表す in を指定する。
- クラスを省略した場合、デフォルトクラスの in が適用される。
- ゾーンファイルに記述する資源レコードのクラスを省略 (通常省略することが多い) した場合、
ここで指定したクラスが適用される。
【 主な zone-option 】
zone ステートメント内で使用する主な zone-option は次の通り。
- type master|slave|hint;
- ゾーンのタイプを指定する。 タイプには次の種類がある。
master | ネーム サーバーが、このゾーンのマスターであることを定義する。 |
slave | ネームサーバーが、このゾーンのスレーブであることを定義する。 |
hint | ルート ネーム サーバーのゾーンデータであることを定義する。 |
- ネーム サーバーはゾーンごとに、「マスター」若しくは「スレーブ」を指定できる。
これは複数のサーバーでゾーンの管理を分担することが可能であるといえる。
- file "fname";
- ゾーンデータを記述したファイル名を、フルパス名で指定する。
- ゾーンファイルを options の directory で指定したディレクトリに配置する場合は、
ディレクトリまでのパスを省略してファイル名のみの記述とすることができる。
通常はこの方法が採られる。
- ネーム サーバーがスレーブ (type slave) の場合は以下のようになる。
- ここで指定したファイル名は、ゾーン転送で受信したデータの保存先となる。
- file サブ ステートメントを省略すると、ゾーンデータは保存されない。
この時、ネーム サーバーは再起動されるたびにゾーン転送要求を発生する。
- masters [ port ip_port ] { ip_addr; };
- type が slave の場合のみ必須、他の type では不要。
- ゾーン転送要求を送信する、相手サーバーの IP アドレスを指定する。
- 相手サーバーがマスター サーバーである必要はない。
- 相手サーバーの IP アドレスは、セミコロンで区切って複数指定できる。
- 標準ポート (53) を使わない場合は、port オプションで指定する。
【 options ステートメントの option と同じ zone-option 】
options ステートメントの option と同じ書式・機能の zone-option もある。
これらは options ステートメントにも同じ option の記述があった場合、こちらの設定 (zone-option) が優先される。
※ hintタイプのゾーンファイルでは使用できない。
- forwarders { ip_addr; [ ip_addr; ... ] };
- forward only|first;
- allow-transfer { list; };
- allow-query { list; };
- notify yes|no;