Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)

パート II DNS の設定と管理

ここでは、Solaris OS における BIND 9 DNS ネームサービスの構成および管理について説明します。

第 3 章 DNS の設定と管理 (リファレンス)

Solaris オペレーティングシステム (Solaris OS) には、BIND 9.x DNS ネームサーバーが付属しています。この章では、Solaris オペレーティングシステムで BIND 9 を使用する場合の構成および管理について説明します。BIND および DNS の全般については、「関連資料」を含め、豊富な資料が用意されています。

この章の内容は次のとおりです。

関連資料

DNS と BIND の管理については、次の文書を参照してください。

BIND 8 から BIND 9 への移行

BIND 9 は、BIND 8 の大部分の機能と上位互換性があります。ただし、BIND 9 を使用するために既存の BIND 8 インストールをアップグレードする際に知っておく必要のある多数の注意事項があります。BIND 9 のインストールや使用の前には、必ず『Migration Notes』をお読みください。『Migration Notes』は、/usr/share/doc/bind/migration.txt から入手可能です。また、BIND のパッケージ名は SUNWbind および SUNWbindr に変更されています。SUNWbindr パッケージに DNS サーバー目録が含まれています。

BIND 8 と BIND 9 の相違点の概要を次に示します。詳細については、『Migration Notes』を参照してください。

DNS とサービス管理機能

DNS/BIND named サービスは、サービス管理機能 (SMF) によって管理できます。SMF の概要については、『Solaris のシステム管理 (基本編)』の第 18 章「サービスの管理 (概要)」を参照してください。さらに、詳細は、svcadm(1M)svcs(1)、および svccfg(1M) のマニュアルページを参照してください。 /var/svc/manifest/network/dns にある DNS サーバー目録 server.xml も確認してください。

サーバーの管理には svcadm を使用することをお勧めしますが、rndc も使用できます。管理に svcadmrndc のどちらを使用しても、SMF は BIND 9 の named サービスの状態変化を認識します。


注 –

サービスをコマンド行から手動で実行した場合は、SMF は BIND 9 の named サービスを認識しません。


rndc の実装

BIND 8 ndc と BIND 9 rndc のネームサーバー制御ツールは、下位互換性がありません。rndc は BIND 8 ネームサーバーに接続できず、ndc は BIND 9 ネームサーバーに接続できません。機能、オプション、操作のデフォルトモード、および構成ファイルの要件が変更されています。そのため、BIND 9 サーバーで ndc を使用すると、機能が使用できなくなったり操作が不安定になったりすることがあります。詳細は、rndc(1M) のマニュアルページを参照してください。

rndc.conf 構成ファイル

BIND 8 の ndc と BIND 9 の rndc とのもっとも大きな違いは、rndc はそれ自身の構成ファイル rndc.conf を必要とすることです。rndc-confgen コマンドによってこのファイルを生成できます。rndc.conf ファイルは、制御を行うサーバー、およびそのサーバーが使用する必要のあるアルゴリズムを指定します。


例 3–1 rndc.conf ファイルの例


options {
             default-server localhost;
             default-key "rndc-key";
     };

     key "rndc-key" {
             algorithm hmac-md5;
             secret "qPWZ3Ndl81aBRY9AmJhVtU==";
     };


例 3–2 rndcnamed.conf ファイルエントリの例


controls {
             inet * allow { any; } keys { "rndc-key"; };
     };

     key "rndc-key" {
             algorithm hmac-md5;
             secret "qPWZ3Ndl81aBRY9AmJhVtU==";
     };

制御チャネルの相違点

ndc ユーティリティーと rndc ユーティリティーはどちらも、コマンドをネームサーバーに送信し、情報をネームサーバーから取り出すために制御チャネルを使用します。ただし、これらのユーティリティーには相違点があります。

BIND 9 rndc のコマンド

rndc コマンドの一覧を次に示します。

reload

構成ファイルおよびゾーンを再読み込みする

reload zone [class [view]]

単一ゾーンを再読み込みする

refresh zone [class [view]]

ゾーンの即時保守をスケジュールする

reconfig

構成ファイルと新しいゾーンのみを再読み込みする

stats

サーバー統計を統計ファイルに書き込む

querylog

照会ロギングを切り替える

dumpdb

キャッシュをダンプファイル (named_dump.db) にダンプする

stop

保留中の更新をマスターファイルに保存し、サーバーを停止する

halt

保留中の更新を保存せずにサーバーを停止する

trace

デバッグレベルを 1 ずつ増分する

trace level

デバッグレベルを変更する

notrace

デバッグレベルを 0 に設定する

flush

サーバーのキャッシュをすべてフラッシュする

flush [view]

表示用のサーバーのキャッシュをフラッシュする

status

サーバーの状態を表示する

restart

サーバーを再起動する (未実装)

BIND 9 のコマンド、ファイル、ツールおよびオプション

BIND 9 の一部のコマンド、ファイル、ツール、およびオプションは、BIND 8 と同じです。ただし、その他は変更または追加されています。この項では、BIND 9 の多くのコマンド、ファイル、ツール、オプション、およびそれぞれに関連付けられた新しい動作または変更された動作について説明します。

BIND 9 のツールと構成ファイル

Solaris オペレーティングシステムで使用できる BIND 9.x ツールを次に示します。

named

nsupdate

rndc

dnssec-keygen

nslookup

dig

dnssec-makekeyset

dnssec-signkey

dnssec-signzone

named-checkconf

named-checkzone

rndc-confgen

host

Solaris 10 リリースでサポートされている BIND 9.x 構成ファイルを次に示します。

/etc/rndc.conf 

BIND 8 と BIND 9 のコマンドおよびファイルの比較

BIND 8 と BIND 9 のコマンドおよび構成ファイルの違いを次の表に示します。

BIND 8 のコマンド 

BIND 9.x で置き換えられたコマンド 

dnskeygen(1M)

dnssec-keygen(1M)

rndc(1M)

rndc(1M)

named-bootconf(1M)

必要なし 

nsupdate(1M)

nsupdate(1M)

nslookup(1M)

nslookup(1M)

named-xfer(1M)

必要なし 

in.named(1M)

named(1M)

named.conf(4)

named.conf [詳細な named.conf マニュアルページは BIND 9.2.4 には含まれません。named.conf のオプション」に、BIND 9.2.4 でサポートされる named.conf のオプションの概要を示します。]

dig(1M)

dig(1M)

コマンドとオプションの変更の説明

次に示す非互換性はすべて、同等の BIND 9 バイナリでサポートされない BIND 8 の機能およびインタフェースです。BIND 9.x バイナリのオプション、コマンド行オプションまたは機能のすべてを示しているわけではありません。

コマンド 

オプションの変更 

in.named(1M)

DNS ネームサーバー in.named の一部のコマンド行オプションはサポートされません。

BIND 9.x ネームサーバーで、-g group_name-q-r および -w directory のオプションがサポートされず、BIND 8.x の -b config_file-c config_file で置き換えられます。詳細は、named のマニュアルページを参照してください。

dnssec-keygen(1M)

キーの生成のために使用する BIND 8.x の dnskeygen と BIND 9.x の dnssec-keygen に、共通のオプションはありません。詳細は、dnssec-keygen のマニュアルページを参照してください。

rndc(1M)

BIND 8.x の ndc と BIND 9.x の rndc は大きく異なります。共通のオプションは 1 つもなく、ndc とは異なり、rndc は実行のために /etc/rndc.conf に構成ファイルが必要です。詳細は、rndcrndc.confrndc-confgen のマニュアルページを参照してください。

nsupdate(1M)

BIND 9.x の -nsupdate で、k オプションの構文が変更されました。-k keydir::keyname ではなく、 k keyfile です。それ以外のもう 1 つの変更は、サーバーへの入力送信の信号として空の行を使用していましたが、明示的に send サブコマンドを使用するようになりました。詳細は、nsupdate のマニュアルページを参照してください。

nslookup(1M)

BIND の 9.x バージョンでサポートされないオプションは、 helphost serverset ignoretcset noignoretcset srch[list]=N1[/N2/.../N6]set ro[ot]=hostrootfinger [USER]ls [opt] DOMAIN [> FILE] です。

named.conf(4)

named.conf の詳細なマニュアルページは、BIND 9.2.4 に含まれていません。 サポートされないオプション、実装されないオプション、またはデフォルトが変更されたオプションがあります。オプションの変更のリスト、および BIND 9.2.4 でサポートされる named.conf のすべてのオプションの概要については、named.conf のオプション」を参照してください。

named.conf のオプション

BIND 8 と BIND 9 の named.conf のオプションの違いを次に一覧表示します。変更の簡単な説明も記載しています。「変更」の欄の「変更なし」は、BIND 9 バージョンの named でオプションの機能に変更がないことを表します。

オプション { 

変更 

[ version version_string; ] 

変更なし 

[ directory path_name; ] 

変更なし 

[ named-xfer path_name; ] 

旧式 [アーキテクチャーの違いのために旧式。]

[ dump-file path_name; ] 

変更なし 

[ memstatistics-file path_name; ] 

実装されない 

[ pid-file path_name; ] 

変更なし 

[ statistics-file path_name; ] 

変更なし 

[ auth-nxdomain yes_or_no; ] 

変更なし [デフォルト設定は BIND 8 では yes、BIND 9 では no。]

[ dialup yes_or_no; 

変更なし 

[ fake-iquery yes_or_no; ] 

旧式 

[ fetch-glue yes_or_no; ] 

旧式 

[ has-old-clients yes_or_no; ] 

旧式 

[ host-statistics yes_or_no; ] 

実装されない 

[ host-statistics-max number; ] 

実装されない 

[ multiple-cnames yes_or_no; ] 

旧式 

[ notify yes_or_no | explicit; ] 

変更なし 

[ recursion yes_or_no; ] 

変更なし 

[ rfc2308-type1 yes_or_no; ] 

実装されない 

[ use-id-pool yes_or_no; ] 

旧式 

[ treat-cr-as-space yes_or_no; ] 

旧式 

[ also-notify yes_or_no; ] 

構文の変更 [yes の場合は IP アドレスが必要。]

[ forward ( only | first ); ] 

変更なし [転送機能を指定しないと機能しない。指定しない場合、no matching 'forwarders' statement のエラーが表示される。]

[ forwarders { [ in_addr ; \ 

[ in_addr ; ... ] ] }; ] 

 

変更なし [[ forward ] 句を参照。]

[ check-names ( master | slave | \ 

response ) ( warn | fail | ignore); ] 

実装されない 

[ allow-query { address_match_list }; ] 

変更なし 

[ allow-recursion { address_match_list }; ] 

変更なし 

[ allow-transfer { address_match_list }; ] 

変更なし 

[ blackhole { address_match_list }; ] 

変更なし 

[ listen-on [ port ip_port ] \ 

{ address_match_list }; ] 

 

変更なし 

[ query-source [ address ( ip_addr | * ) ] \ 

変更なし 

[ port ( ip_port | * ) ] ; ] 

[ lame-ttl number; ] 

 

変更なし 

[ max-transfer-time-in number; ] 

変更なし 

[ max-ncache-ttl number; ] 

変更なし 

[ min-roots number; ] 

実装されない 

[ transfer-format ( one-answer | \ 

many-answers ); ] 

 

変更なし [デフォルト設定は BIND 8 では one-answer、BIND 9 では many-answers。]

[ transfers-in number; ] 

変更なし 

[ transfers-out number; ] 

変更なし 

[ transfers-per-ns number; ] 

変更なし 

[ transfer-source ip_addr; ] 

変更なし 

[ maintain-ixfr-base yes_or_no; ] 

旧式 

[ max-ixfr-log-size number; ] 

旧式 [BIND 9 では、該当するログファイルのサイズを自動的にトリムするので、このオプションは必要ない。]

[ coresize size_spec ; ] 

変更なし 

[ datasize size_spec ; ] 

変更なし 

[ files size_spec ; ] 

変更なし 

[ stacksize size_spec ; ] 

変更なし 

[ cleaning-interval number; ] 

変更なし 

[ heartbeat-interval number; ] 

変更なし 

[ interface-interval number; ] 

変更なし 

[ statistics-interval number; ] 

実装されない 

[ topology { address_match_list }; ] 

実装されない 

[ sortlist { address_match_list }; ] 

変更なし 

[ rrset-order { order_spec ; \ 

[ order_spec ; ... ] }; ] 

 

実装されない 

}; 

 

BIND 9 の文

この項では、BIND 8 と BIND 9 の文の相違点について説明します。

Controls

unixndc のデフォルトであり、引数のすべてがコンパイルされます。inetrndc の唯一のオプションであり、この場合、何もコンパイルされません。


  Syntax
     controls {
       [ inet ip_addr
         port ip_port
         allow { address_match_list; }; ]	OK
       [ unix path_name
         perm number
         owner number
         group number; ]			Not Implemented
     };

ロギング構文は大幅に変更されました。named.conf オプションのリストは、named.conf のオプション」を参照してください。

Zone

BIND 8 の named.conf マニュアルページに示されているゾーン文の構文は、次を除いた大部分が BIND 9 でサポートされます。


  [ pubkey number number number string; ]	Obsolete
  [ check-names ( warn | fail | ignore ); ]	Not Implemented

ACL

BIND 9 で変更なく機能します。


  Syntax
     acl name {
       address_match_list
     };

Key

BIND 9 で変更なく機能します。


  Syntax
     key key_id {
       algorithm algorithm_id;
       secret secret_string;
     };

Trusted-Keys

変更なく機能しますが、この文を使用するコードは BIND 9.2.4 で使われなくなりました。


  Syntax
     trusted-keys {
       [ domain_name flags protocol algorithm key; ]
     };

Server

support-ixfr は廃止されましたが、次のオプションのすべては BIND 9 で変更なく機能します。transfer-format のデフォルトは変更されました。


  Syntax
     server ip_addr {
       [ bogus yes_or_no; ]
       [ transfers number; ]
       [ transfer-format ( one-answer | many-answers ); ]
       [ keys { key_id [ key_id ... ] }; ]
       [ edns yes_or_no; ]
     };

Include

BIND 9 で変更なく機能します。


  Syntax
     include path_name;

named.conf のオプションの概要

BIND 9.2.4 には named.conf の詳細なマニュアルページが含まれていません。BIND 9.2.4 でサポートされる named.conf のオプションの概要を次に示します。


options  {
        blackhole { <address_match_element>; ... };
        coresize <size>;
        datasize <size>;
        deallocate-on-exit <boolean>; // obsolete
        directory <quoted_string>;
        dump-file <quoted_string>;
        fake-iquery <boolean>; // obsolete
        files <size>;
        has-old-clients <boolean>; // obsolete
        heartbeat-interval <integer>;
        host-statistics <boolean>; // not implemented
        host-statistics-max <integer>; // not implemented
        interface-interval <integer>;
        listen-on [ port <integer> ] { <address_match_element>; ... };
        listen-on-v6 [ port <integer> ] { <address_match_element>; ... };
        match-mapped-addresses <boolean>;
        memstatistics-file <quoted_string>; // not implemented
        multiple-cnames <boolean>; // obsolete
        named-xfer <quoted_string>; // obsolete
        pid-file <quoted_string>;
        port <integer>;
        random-device <quoted_string>;
        recursive-clients <integer>;
        rrset-order { [ class <string> ] [ type <string> ] [ name
            <quoted_string> ] <string> <string>; ... }; // not implemented
        serial-queries <integer>; // obsolete
        serial-query-rate <integer>;
        stacksize <size>;
        statistics-file <quoted_string>;
        statistics-interval <integer>; // not yet implemented
        tcp-clients <integer>;
        tkey-dhkey <quoted_string> <integer>;
        tkey-gssapi-credential <quoted_string>;
        tkey-domain <quoted_string>;
        transfers-per-ns <integer>;
        transfers-in <integer>;
        transfers-out <integer>;
        treat-cr-as-space <boolean>; // obsolete
        use-id-pool <boolean>; // obsolete
        use-ixfr <boolean>;
        version <quoted_string>;
        allow-recursion { <address_match_element>; ... };
        allow-v6-synthesis { <address_match_element>; ... };
        sortlist { <address_match_element>; ... };
        topology { <address_match_element>; ... }; // not implemented
        auth-nxdomain <boolean>; // default changed
        minimal-responses <boolean>;
        recursion <boolean>;
        provide-ixfr <boolean>;
        request-ixfr <boolean>;
        fetch-glue <boolean>; // obsolete
        rfc2308-type1 <boolean>; // not yet implemented
        additional-from-auth <boolean>;
        additional-from-cache <boolean>;
        query-source <querysource4>;
        query-source-v6 <querysource6>;
        cleaning-interval <integer>;
        min-roots <integer>; // not implemented
        lame-ttl <integer>;
        max-ncache-ttl <integer>;
        max-cache-ttl <integer>;
        transfer-format ( many-answers | one-answer );
        max-cache-size <size_no_default>;
        check-names <string> <string>; // not implemented
        cache-file <quoted_string>;
        allow-query { <address_match_element>; ... };
        allow-transfer { <address_match_element>; ... };
        allow-update-forwarding { <address_match_element>; ... };
        allow-notify { <address_match_element>; ... };
        notify <notifytype>;
        notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        also-notify [ port <integer> ] { ( <ipv4_address> | <ipv6_address>
            ) [ port <integer> ]; ... };
        dialup <dialuptype>;
        forward ( first | only );
        forwarders [ port <integer> ] { ( <ipv4_address> | <ipv6_address> )
            [ port <integer> ]; ... };
        maintain-ixfr-base <boolean>; // obsolete
        max-ixfr-log-size <size>; // obsolete
        transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        max-transfer-time-in <integer>;
        max-transfer-time-out <integer>;
        max-transfer-idle-in <integer>;
        max-transfer-idle-out <integer>;
        max-retry-time <integer>;
        min-retry-time <integer>;
        max-refresh-time <integer>;
        min-refresh-time <integer>;
        sig-validity-interval <integer>;
        zone-statistics <boolean>;
};

controls {
        inet ( <ipv4_address> | <ipv6_address> | * ) [ port ( <integer> | *
            ) ] allow { <address_match_element>; ... } [ keys { <string>; ... } ];
        unix <unsupported>; // not implemented
};

acl <string> { <address_match_element>; ... };

logging {
        channel <string> {
                file <logfile>;
                syslog <optional_facility>;
                null;
                stderr;
                severity <logseverity>;
                print-time <boolean>;
                print-severity <boolean>;
                print-category <boolean>;
        };
        category <string> { <string>; ... };
};

view <string> <optional_class> {
        match-clients { <address_match_element>; ... };
        match-destinations { <address_match_element>; ... };
        match-recursive-only <boolean>;
        key <string> {
                algorithm <string>;
                secret <string>;
        };
        zone <string> <optional_class> {
                type ( master | slave | stub | hint | forward );
                allow-update { <address_match_element>; ... };
                file <quoted_string>;
                ixfr-base <quoted_string>; // obsolete
                ixfr-tmp-file <quoted_string>; // obsolete
                masters [ port <integer> ] { ( <ipv4_address> |
                    <ipv6_address> ) [ port <integer> ] [ key <string> ]; ... };
                pubkey <integer> <integer> <integer> <quoted_string>; //
                    obsolete
                update-policy { ( grant | deny ) <string> ( name |
                    subdomain | wildcard | self ) <string> <rrtypelist>; ... };
                database <string>;
                check-names <string>; // not implemented
                allow-query { <address_match_element>; ... };
                allow-transfer { <address_match_element>; ... };
                allow-update-forwarding { <address_match_element>; ... };
                allow-notify { <address_match_element>; ... };
                notify <notifytype>;
                notify-source ( <ipv4_address> | * ) [ port ( <integer> | *
                    ) ];
                notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer>
                    | * ) ];
                also-notify [ port <integer> ] { ( <ipv4_address> |
                    <ipv6_address> ) [ port <integer> ]; ... };
                dialup <dialuptype>;
                forward ( first | only );
                forwarders [ port <integer> ] { ( <ipv4_address> |
                    <ipv6_address> ) [ port <integer> ]; ... };
                maintain-ixfr-base <boolean>; // obsolete
                max-ixfr-log-size <size>; // obsolete
                transfer-source ( <ipv4_address> | * ) [ port ( <integer> |
                    * ) ];
                transfer-source-v6 ( <ipv6_address> | * ) [ port (
                    <integer> | * ) ];
                max-transfer-time-in <integer>;
                max-transfer-time-out <integer>;
                max-transfer-idle-in <integer>;
                max-transfer-idle-out <integer>;
                max-retry-time <integer>;
                min-retry-time <integer>;
                max-refresh-time <integer>;
                min-refresh-time <integer>;
                sig-validity-interval <integer>;
                zone-statistics <boolean>;
        };
        server {
                bogus <boolean>;
                provide-ixfr <boolean>;
                request-ixfr <boolean>;
                support-ixfr <boolean>; // obsolete
                transfers <integer>;
                transfer-format ( many-answers | one-answer );
                keys <server_key>;
                edns <boolean>;
        };
        trusted-keys { <string> <integer> <integer> <integer>
            <quoted_string>; ... };
        allow-recursion { <address_match_element>; ... };
        allow-v6-synthesis { <address_match_element>; ... };
        sortlist { <address_match_element>; ... };
        topology { <address_match_element>; ... }; // not implemented
        auth-nxdomain <boolean>; // default changed
        minimal-responses <boolean>;
        recursion <boolean>;
        provide-ixfr <boolean>;
        request-ixfr <boolean>;
        fetch-glue <boolean>; // obsolete
        rfc2308-type1 <boolean>; // not yet implemented
        additional-from-auth <boolean>;
        additional-from-cache <boolean>;
        query-source <querysource4>;
        query-source-v6 <querysource6>;
        cleaning-interval <integer>;
        min-roots <integer>; // not implemented
        lame-ttl <integer>;
        max-ncache-ttl <integer>;
        max-cache-ttl <integer>;
        transfer-format ( many-answers | one-answer );
        max-cache-size <size_no_default>;
        check-names <string> <string>; // not implemented
        cache-file <quoted_string>;
        allow-query { <address_match_element>; ... };
        allow-transfer { <address_match_element>; ... };
        allow-update-forwarding { <address_match_element>; ... };
        allow-notify { <address_match_element>; ... };
        notify <notifytype>;
        notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        also-notify [ port <integer> ] { ( <ipv4_address> | <ipv6_address>
            ) [ port <integer> ]; ... };
        dialup <dialuptype>;
        forward ( first | only );
        forwarders [ port <integer> ] { ( <ipv4_address> | <ipv6_address> )
            [ port <integer> ]; ... };
        maintain-ixfr-base <boolean>; // obsolete
        max-ixfr-log-size <size>; // obsolete
        transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        max-transfer-time-in <integer>;
        max-transfer-time-out <integer>;
        max-transfer-idle-in <integer>;
        max-transfer-idle-out <integer>;
        max-retry-time <integer>;
        min-retry-time <integer>;
        max-refresh-time <integer>;
        min-refresh-time <integer>;
        sig-validity-interval <integer>;
        zone-statistics <boolean>;
};

lwres {
        listen-on [ port <integer> ] { ( <ipv4_address> | <ipv6_address> )
            [ port <integer> ]; ... };
        view <string> <optional_class>;
        search { <string>; ... };
        ndots <integer>;
};

key <string> {
        algorithm <string>;
        secret <string>;
};

zone <string> <optional_class> {
        type ( master | slave | stub | hint | forward );
        allow-update { <address_match_element>; ... };
        file <quoted_string>;
        ixfr-base <quoted_string>; // obsolete
        ixfr-tmp-file <quoted_string>; // obsolete
        masters [ port <integer> ] { ( <ipv4_address> | <ipv6_address> ) [
            port <integer> ] [ key <string> ]; ... };
        pubkey <integer> <integer> <integer> <quoted_string>; // obsolete
        update-policy { ( grant | deny ) <string> ( name | subdomain |
            wildcard | self ) <string> <rrtypelist>; ... };
        database <string>;
        check-names <string>; // not implemented
        allow-query { <address_match_element>; ... };
        allow-transfer { <address_match_element>; ... };
        allow-update-forwarding { <address_match_element>; ... };
        allow-notify { <address_match_element>; ... };
        notify <notifytype>;
        notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        also-notify [ port <integer> ] { ( <ipv4_address> | <ipv6_address>
            ) [ port <integer> ]; ... };
        dialup <dialuptype>;
        forward ( first | only );
        forwarders [ port <integer> ] { ( <ipv4_address> | <ipv6_address> )
            [ port <integer> ]; ... };
        maintain-ixfr-base <boolean>; // obsolete
        max-ixfr-log-size <size>; // obsolete
        transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        max-transfer-time-in <integer>;
        max-transfer-time-out <integer>;
        max-transfer-idle-in <integer>;
        max-transfer-idle-out <integer>;
        max-retry-time <integer>;
        min-retry-time <integer>;
        max-refresh-time <integer>;
        min-refresh-time <integer>;
        sig-validity-interval <integer>;
        zone-statistics <boolean>;
};

server {
        bogus <boolean>;
        provide-ixfr <boolean>;
        request-ixfr <boolean>;
        support-ixfr <boolean>; // obsolete
        transfers <integer>;
        transfer-format ( many-answers | one-answer );
        keys <server_key>;
        edns <boolean>;
};

trusted-keys { <string> <integer> <integer> <integer> <quoted_string>; ... };