BINDネームサーバ自体の設定はすべて、ファイル/etc/named.confに格納されます。ただし、ホスト名、IPアドレスなどで構成され、ドメインが処理するゾーンデータは、/var/lib/namedディレクトリ内の個別のファイルに格納されます。この詳細については、後述します。
/etc/named.confファイルは、大きく2つのエリアに分けられます。1つは一般的な設定用のoptionsセクション、もう1つは個々のドメインのzoneエントリで構成されるセクションです。ログセクションとacl (アクセス制御リスト)エントリは省略可能です。コメント行は、行頭に#記号または//を指定します。最も基本的な/etc/named.confファイルの例を、例 21-2に示します。
例 21-2 基本的な/etc/named.confファイル
options {
directory "/var/lib/named";
forwarders { 10.0.0.1; };
notify no;
};
zone "localhost" in {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" in {
type master;
file "127.0.0.zone";
};
zone "." in {
type hint;
file "root.hint";
};
BINDが検索する、ゾーンファイルが格納されているディレクトリを指定します。通常は/var/lib/namedです。
DNS要求が直接解決できない場合、それらが転送されるネームサーバ(ほとんどの場合、プロバイダのネームサーバ)を指定します。ip-addressには、IPアドレスを192.168.1.116のように指定します。
ルートネームサーバでDNS要求の解決を試みる前に、それらを転送するようにします。forward firstの代わりにforward onlyを指定すると、要求が転送されたままになり、ルートネームサーバには送り返されません。このオプションは、ファイアウォール構成で使用します。
BINDがクライアントからのクエリを受け取るネットワークインタフェースとポートを指定します。port 53はデフォルトポートであるため、明示的に指定する必要はありません。ローカルホストからの要求を許可するには、127.0.0.1と記述します。このエントリ全体を省略した場合は、すべてのインタフェースがデフォルトで使用されます。
BINDがIPv6クライアント要求をリッスンするポートを指定します。any以外で指定できるのはnoneだけです。IPv6に関して、サーバはワイルドカードアドレスのみ受け付けます。
ファイアウォールが発信DNS要求をブロックする場合、このエントリが必要です。BINDに対し、外部への要求をポート53から発信し、1024を超える上位ポートからは発信しないように指示します。
BINDがIPv6のクエリに使用するポートを指定します。
クライアントがDNS要求を発信できるネットワークを定義します。netには、アドレス情報を192.168.2.0/24のように指定します。末尾の/24は、ネットマスクの短縮表記で、この場合255.255.255.0を表します。
ゾーン転送を要求できるホストを制御します。この例では、!が使用されているので、ゾーン転送要求は完全に拒否されます。*. このエントリがなければ、ゾーン転送をどこからでも制約なしに要求できます。
このエントリがなければ、BINDは1時間ごとに数行の統計情報を生成して/var/log/messagesに保存します。0を指定すると、統計情報をまったく生成しないか、時間間隔を分単位で指定します。
このオプションは、BINDがキャッシュをクリアする時間間隔を定義します。キャッシュがクリアされるたびに、/var/log/messagesにエントリが追加されます。時間の指定は分単位です。デフォルトは60分です。
BINDは定期的にインタフェースを検索して、新しいインタフェースや存在しなくなったインタフェースがないか確認します。この値を0に設定すると、この検索が行われなくなり、BINDは起動時に検出されたインタフェースのみをリッスンします。0以外の値を指定する場合は分単位で指定します。デフォルトは60分です。
noに設定すると、ゾーンデータを変更したとき、またはネームサーバが再起動されたときに、他のネームサーバに通知されなくなります。
すべての利用可能なオプションのリストについては、マニュアルページman 5 named.confを参照してください。
BINDでは、何を、どのように、どこにログ出力するかを詳細に設定できます。通常は、デフォルト設定のままで十分です。例 21-3に、このエントリの最も簡単な形式、すなわちログをまったく出力しない例を示します。
例 21-3 ログを無効にするエントリ
logging {
category default { null; };
};
例 21-4 example.comのゾーンエントリ
zone "example.com" in {
type master;
file "example.com.zone";
notify no;
};
zoneの後、管理対象のドメイン名(example.com)を指定し、その後にinと関連のオプションを中カッコで囲んで指定します(例 21-4参照)。スレーブゾーンを定義するには、typeをslaveに変更し、このゾーンをmasterとして管理することをネームサーバに指定します(例 21-5参照)。これが他のマスタのスレーブとなることもあります。
例 21-5 example.netのゾーンエントリ
zone "example.net" in {
type slave;
file "slave/example.net.zone";
masters { 10.0.0.1; };
};
ゾーンオプション
masterを指定して、BINDに対し、ゾーンがローカルネームサーバによって処理されるように指示します。これは、ゾーンファイルが正しい形式で作成されていることが前提となります。
このゾーンは別のネームサーバから転送されたものです。必ずmastersとともに使用します。
ルートネームサーバの設定には、ゾーン.(hintタイプ)を使用します。このゾーン定義はそのまま使用できます。
slave/example.net.zoneファイル
このエントリは、ドメインのゾーンデータが格納されているファイルを指定します。スレーブの場合、このデータを他のネームサーバから取得するので、このファイルは不要です。マスタとスレーブのファイルを区別するには、スレーブファイルにディレクトリslaveを使用します。
このエントリは、スレーブゾーンにのみ必要です。ゾーンファイルの転送元となるネームサーバを指定します。
このオプションは、外部書き込みアクセスを制御し、クライアントにDNSエントリへの書き込み権を付与することができます。 ただし、これは通常、セキュリティ上の理由で好ましくありません。このエントリがなければ、ゾーンの更新は完全に拒否されます。! *によってそのような操作が禁止されるため、前述のエントリは同じものをアーカイブします。