20.4 設定ファイル/etc/named.conf

BINDネームサーバ自体の設定はすべて、ファイル/etc/named.confに格納されます。ただし、ホスト名、IPアドレスなどで構成され、ドメインが処理するゾーンデータは、/var/lib/namedディレクトリ内の個別のファイルに格納されます。この詳細については、後述します。

/etc/named.confファイルは、大きく2つのエリアに分けられます。1つは一般的な設定用のoptionsセクション、もう1つは個々のドメインのzoneエントリで構成されるセクションです。ログセクションとacl (アクセス制御リスト)エントリは省略可能です。コメント行は、行頭に#記号または//を指定します。最も基本的な/etc/named.confファイルの例を、例 20.2. 「基本的な/etc/named.confファイル」に示します。

例 20.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";
};

20.4.1 重要な設定オプション

directory "filename";

BINDが検索する、ゾーンファイルが格納されているディレクトリを指定します。通常は/var/lib/namedです。

forwarders { ip-address; };

DNS要求が直接解決できない場合、それらが転送されるネームサーバ(ほとんどの場合、プロバイダのネームサーバ)を指定します。ip-addressには、IPアドレスを10.0.0.1のように指定します。

forward first;

ルートネームサーバでDNS要求の解決を試みる前に、それらを転送するようにします。forward firstの代わりにforward onlyを指定すると、要求が転送されたままになり、ルートネームサーバには送り返されません。このオプションは、ファイアウォール構成で使用します。

listen-on port 53 { 127.0.0.1; ip-address; };

BINDがクライアントからのクエリを受け取るネットワークインタフェースとポートを指定します。port 53はデフォルトポートであるため、明示的に指定する必要はありません。ローカルホストからの要求を許可するには、127.0.0.1と記述します。このエントリ全体を省略した場合は、すべてのインタフェースがデフォルトで使用されます。

listen-on-v6 port 53 {any; };

BINDがIPv6クライアント要求をリッスンするポートを指定します。any以外で指定できるのはnoneだけです。IPv6に関して、サーバはワイルドカードアドレスのみ受け付けます。

query-source address * port 53;

ファイアウォールが発信DNS要求をブロックする場合、このエントリが必要です。BINDに対し、外部への要求をポート53から発信し、1024を超える上位ポートからは発信しないように指示します。

query-source address * port 53;

BINDがIPv6のクエリに使用するポートを指定します。

allow-query { 127.0.0.1; net; };

クライアントがDNS要求を発信できるネットワークを定義します。netには、アドレス情報を192.168.1/24のように指定します。末尾の/24は、ネットマスクの短縮表記で、この場合255.255.255.0を表します。

allow-transfer ! *;;

ゾーン転送を要求できるホストを制御します。この例では、! *が使用されているので、ゾーン転送要求は完全に拒否されます。*このエントリがなければ、ゾーン転送をどこからでも制約なしに要求できます。

statistics-interval 0;

このエントリがなければ、BINDは1時間ごとに数行の統計情報を生成して/var/log/messagesに保存します。0を指定すると、統計情報をまったく生成しないか、時間間隔を分単位で指定します。

cleaning-interval 720;

このオプションは、BINDがキャッシュをクリアする時間間隔を定義します。キャッシュがクリアされるたびに、/var/log/messagesにエントリが追加されます。時間の指定は分単位です。デフォルトは60分です。

statistics-interval 0;

forwardingBINDは定期的にインタフェースを検索して、新しいインタフェースや存在しなくなったインタフェースがないか確認します。この値を0に設定すると、この検索が行われなくなり、BINDは起動時に検出されたインタフェースのみをリスンします。0以外の値を指定する場合は分単位で指定します。デフォルトは60分です。

notify no;

noに設定すると、ゾーンデータを変更したとき、またはネームサーバが再起動されたときに、他のネームサーバに通知されなくなります。

20.4.2 ログ

BINDでは、何を、どのように、どこにログ出力するかを詳細に設定できます。通常は、デフォルト設定のままで十分です。例 20.3. 「ログを無効にするエントリ」に、このエントリの最も簡単な形式、すなわちログをまったく出力しない例を示します。

例 20.3 ログを無効にするエントリ

logging {
        category default { null; };
};

20.4.3 ゾーンエントリ

例 20.4 my-domain.deのゾーンエントリ

zone "my-domain.de" in {
      type master;
      file "my-domain.zone";
      notify no;
};

zoneの後、管理対象のドメイン名my-domain.deを指定し、次にinと関連のオプションを中カッコで囲んで指定します(例 20.4. 「my-domain.deのゾーンエントリ」参照)。スレーブゾーンを定義するには、typeslaveに変更し、このゾーンをmasterとして管理することをネームサーバに指定します(例 20.5. 「other-domain.deのゾーンエントリ」参照)。これが他のマスタのスレーブとなることもあります。

例 20.5 other-domain.deのゾーンエントリ

zone "other-domain.de" in {
      type slave;
      file "slave/other-domain.zone";
      masters { 10.0.0.1; }; 
};

ゾーンオプション

type master;

masterを指定して、BINDに対し、ゾーンがローカルネームサーバによって処理されるように指示します。これは、ゾーンファイルが正しい形式で作成されていることが前提となります。

type slave;

このゾーンは別のネームサーバから転送されたものです。必ずmastersとともに使用します。

type hint;

ルートネームサーバの設定には、hintタイプのゾーン.を使用します。このゾーン定義はそのまま使用できます。

file my-domain.zoneまたはfile 「slave/other-domain.zone」;

このエントリは、ドメインのゾーンデータが格納されているファイルを指定します。スレーブの場合、このデータを他のネームサーバから取得するので、このファイルは不要です。マスタとスレーブのファイルを区別するには、スレーブファイルにディレクトリslaveを使用します。

masters { server-ip-address; };

このエントリは、スレーブゾーンにのみ必要です。ゾーンファイルの転送元となるネームサーバを指定します。

allow-update {! *; };

このオプションは、外部書き込みアクセスを制御し、クライアントにDNSエントリへの書き込み権を付与することができます。 ただし、これは通常、セキュリティ上の理由で好ましくありません。このエントリがなければ、ゾーンの更新は完全に拒否されます。上のエントリでは、! *によって一切の書き込みを禁止しているので、変更が完全に拒否されるという結果はこのエントリを指定しない場合と同じです。