nsd.conf(5)

nsd.conf

Section: nsd 4.0.0 (5)
Updated: Oct 29, 2013


名前

nsd.conf – NSD設定ファイル

書式

nsd.conf

説明

nsd.confnsd(8)を設定するために使われます。このファイル形式は属性と値を持ちます。属性の内側に属性を持つものもあります。記述方法は”属性: 値”です。

コメントは#で始まり、行の終わりまで続きます。空行も行の先頭の空白も無視されます。

nsd.confはnsdサーバ-、ゾーンファイル、プライマリ、セカンダリのオプションを指定します。

短いnsd.confの例を以下に示します。

# Example.com nsd.conf file

# This is a comment.
server:
database: “/var/db/nsd/nsd.db”
zonelistfile: “/var/db/nsd/zone.list”
username: nsd
logfile: “/var/log/nsd.log”
pidfile: “/var/run/nsd.pid”
xfrdfile: “/var/db/nsd/xfrd.state”
zone:
name: example.com
# note that quotes are optional on the value
zonefile: /etc/nsd/example.com.zone

ファイル形式

キーワード間には空白が必要です。属性のキーワードはコロン’:’で終わります。属性の次には属性あるいは値が続きます。トップレベルでは、server:key:pattern:zone:のみが許可されます。これらには、属性や新しいserver:key:pattern:zone:節が続きます。 zone:>属性には、ゾーン オプションが後に続きます。 server:属性には、NSDサーバーのグローバルオプションが後に続きます。key: >属性は認証の鍵を定義するために使われます。pattern:属性には、パターンを利用するゾーンのオプションが後に続きます。include:ディレクティブを使ってファイルを取り込むことができます。これはどこでも記述することができ、引数に一つのファイル名を取ります。取り込んだファイルのテキストはその箇所で設定ファイルにコピーされたような処理を行います。chrootが使われるときには(chrootを前に付けた)絶対ファイル名が必要です。(chrootが何であるかを知っていて)chrootするアプリケーションの前後にincludeが解析されます。

サーバのオプション

グローバル オプションは(NSDのコマンドラインにより優先されていなければ)server:節から取得されます。一つのserver:節のみ許容されます。

ip-address: <ip4 or ip6>[@port]
NSDはそのIPアドレスにバインドします。複数のIPアドレスにバインドするために複数回記述することができます。任意で、ポート番号を記述することもできます。一つも記述されなければ、NSDはワイルドカード インターフェースで待ち受けます。コマンドライン オプションの-aと同じです。
ip-transparent: <yes or no>
NSDがローカルでないアドレスにバインドすることを許可します。デフォルトはnoです。
debug-mode: <yes or no>
nsdのデバッグ モードを有効にし、デーモン プロセスをフォークしません。デフォルトはnoです。コマンドライン オプションの-dと同じです。
do-ip4: <yes or no>
yesであれば、NSDはIPv4の接続を待ち受けます。デフォルトはyesです。
do-ip6: <yes or no>
yesであれば、NSDはIPv6の接続を待ち受けます。デフォルトはyesです。
database: <filename>
デフォルトで/var/db/nsd/nsd.dbが使われます。指定したファイルはコンパイルされたゾーン情報を格納するために使われます。コマンドライン オプションの-fと同じです。
zonelistfile: <filename>
デフォルトで/var/db/nsd/zone.listが使われます。指定したファイルは動的に追加されるゾーンのリストを格納するために使われます。このリストはNSDによりゾーンの追加や削除のために書き込まれます。これは各行にゾーン名とパターン名を持つテキストファイルです。このファイルはnsd-controlのaddzoneとdelzoneコマンドにより使われます。
identity: <string>
CH TXT ID.SERVER.を尋ねられたときに、指定された識別子を返します。デフォルトはgethostname(3)により返される名前です。コマンドライン オプションの-iと同じです。
nsid: <string>
NSID EDNS有効パケットでクエリーが行われたときに回答のEDNSセクションに指定したnsidを追加します。コマンドライン オプションの-Iと同じです。
logfile: <filename>
指定したログファイルにメッセージを記録します。デフォルトは標準エラーと(ファシリティLOG_DAEMONで)syslogにログを記録します。コマンドライン オプション-lと同じです。
server-count: <number>
指定した数のNSDサーバを開始します。デフォルトは1です。コマンドライン オプションの-Nと同じです。
tcp-count: <number>
各サーバーの最大同時TCP接続数。デフォルトは100です。コマンドライン オプションの-nと同じです。
tcp-query-count: <number>
一つのTCP接続で対応する最大クエリー数。デフォルトは0です。これは最大限なしを意味します。
tcp-timeout: <number>
デフォルトのTCPタイムアウトに優先します。これはTCPでのゾーン転送にも影響があります。
ipv4-edns-size: <number>
好ましいIPv4のEDNSバッファサイズ。
ipv6-edns-size: <number>
好ましいIPv6のEDNSバッファサイズ。
pidfile: <filename>
プラットフォーム特有のデフォルトのPIDファイル(大抵は/var/run/nsd.pid.)の代わりに指定したPIDファイルを使います。コマンドライン オプションの-Pと同じです。
port: <number>
指定したポート番号でクエリーに回答します。デフォルトは53です。コマンドライン オプションの-pと同じです。
statistics: <number>
存在しなければ、統計情報をダンプしません。統計情報は指定した秒数毎に生成されます。コマンドライン オプションの-sと同じです。
chroot: <directory>
NSDは指定したディレクトリで起動時にchrootします。設定のどこかで、chrootの内側のファイルへの絶対パス名を指定する場合は、chrootパスを前に付けなければならない点に注意してください。そのように、あなたは設定のどこかを修正する必要なしにchrootオプションを変えることができます。chrootを無効にするには””(空文字)を設定します。デフォルトでは ““が使われます。コマンドライン オプションの -tと同じです。
username: <username>
ソケットにバインドした後に、ユーザー権限を落とし、指定したユーザーになります。ユーザー名かidかid.gidでなければなりません。コマンドライン オプションの-uと同じです。
zonesdir: <directory>
ゾーンファイルにアクセスする前に、指定したディレクトリに作業ディレクトリを変えます。NSDはこのディレクトリに対する相対パス名でdatabase, zonelistfile, logfile, pidfile, xfrdfile, xfrdir, server-key-file, server-cert-file, control-key-file, control-cert-fileにアクセスします。作業ディレクトリの変更を無効にするためにはこの値を””(空文字)に設定します。デフォルトでは”/etc/nsd“が使われます。
difffile: <filename>
無視されます。NSD3の設定ファイルとの互換性のためです。
xfrdfile: <filename>
soaタイムアウトとNSDのゾーン転送デーモンはこのファイルにその状態を保存します。再起動後に状態は読み戻されます。重大な害なしにこの状態ファイルを削除できます。しかし、ゾーンのタイムスタンプは失われます。詳細はNSDのゾーンの期限切れの動作のセクションを参照してください。デフォルトは/var/db/nsd/xfrd.stateです。
xfrdir: <directory>
ゾーン転送は処理前にここに保存されます。NSDの終了時に削除されるディレクトリがここに生成されます。デフォルトは/tmpです。
xfrd-reload-timeout: <number>
この値が-1であれば、xfrdはゾーン転送後のリロードを引き起こしません。正の値であれば、xfrdはゾーン転送後にリロードを行い、それから新しいリロードを行う前に指定した秒数の間待ちます。この値を設定することで、リロードの間隔を指定した秒数毎に一度までに抑制できます。デフォルトは1秒です。
verbosity: <level>
この値は(デバッグではない)ログ出力の饒舌さのレベルを指定します。デフォルトは0です。1は内向きの通知とゾーン転送についての情報を与えます。2は遭遇した穏やかな警告の一覧を出力します。
hide-version: <yes or no>
CHAOSクラスのクエリーに対してバージョンの文字列をNSDが返答するのを防ぎます。
zonefiles-check <yes or no>
NSDに起動時とSIGHUP時にゾーンファイルののmtimeをチェックさせます。無効にすると、(たくさんのゾーンの場合にディスクの動作が減って)より早く起動します。デフォルトは有効です。nsd-control reloadはこのオプションに関係なくゾーンファイルをリロードします。
rrl-size: <numbuckets>
このオプションはハッシュテーブルのサイズを指定します。デフォルトは1000000です。より多くのバケットはより多くのメモリを使い、ハッシュ衝突の機会を減らします。
rrl-ratelimit: <qps>
(1つのクエリーソースからの)最大qpsが許容されます。デフォルトは200 qpsです。0に設定したら、無効(無制限のレート)になります。ratelimit処理を無効にするには whilelist-ratelimitも0の設定します。verbosityを2に設定すると、制限された、および制限が解除されたサブネットがログ出されます。制限されたクエリーは遮断されたり、TCPフォールバックの回答を受け取ったりします。
rrl-slip: <numpackets>
このオプションはSLIP応答(”truncated”ビットをセットした応答)を送り返す前に破棄されるパケットの数を制御します。0はSLIPパケットの送信を無効にし、1は各クエリーがSLIP応答を受け取ることを意味します。
rrl-ipv4-prefix-length: <subnet>
IPv4プレフィックス長。アドレスはネットブロックによりグループ化されます。
rrl-ipv6-prefix-length: <subnet>
IPv6プレフィックス長。アドレスはネットブロックによりグループ化されます。
rrl-whitelist-ratelimit: <qps>
ホワイトリストになるクエリー元の最大qps。デフォルトは2000 qpsです。rrl-whitelistオプションにより、通常の制限の代わりにこのqpsの制限を受け取る特定のクエリー設定できます。0の値を設定すると、レートは無制限になります。

リモート制御

remote-control:節は動作中のNSDサーバーにコマンドを与えるnsd-control(8) ツールを使うためのオプションを設定するために使われます。デフォルトでは無効にされていて、デフォルトでlocalhostで待ち受けます。サーバ-とクライアントの認証に互いに自己署名証明書を使ったTLS over TCPを使います。自己署名証明書はnsd-control-setupツールで生成することができます。chrootする前およびユーザー権限を落とす前にNSDにより鍵ファイルが読まれます。そのため、chrootの外側に置いたり、スーパーユーザーのみが読むことができるようにしたりできます。

control-enable: <yes or no>
リモート制御を有効にします。デフォルトはnoです。
control-interface: <ip4 or ip6>
NSDは(TCP上で)制御要求を提供するためにリストされたアドレスにバインドします。複数のIPアドレスにバインドするために複数回記述することができます。ワイルドカードインターフェースでサービスするためには 0.0.0.0 と ::0 を使います。control-enableで制御が有効なときに、このオプションが何も指定されなければ、NSDは制御のために127.0.0.1と::1のインターフェイスで待ち受けます。
control-port: <number>
リモート制御サービスのためのポート番号。デフォルトは8952です。
server-key-file: <filename>
サーバのプライベート鍵のパスです。デフォルトは/etc/nsd/nsd_server.keyです。このファイルはnsd-control-setupユーティリティにより生成されます。このファイルはnsd-controlによってではなくnsdサーバにより使われます。
server-cert-file: <filename>
サーバーの自己署名証明書へのパス。デフォルトは/etc/nsd/nsd_server.pemです。このファイルはnsd-control-setupユーティリティにより生成されます。このファイルはnsdサーバーによってもnsd-controlによっても使われます。
control-key-file: <filename>
制御クライアントのプライベート鍵へのパス。デフォルトは/etc/nsd/nsd_control.keyです。このファイルはnsd-control-setupユーティリティにより生成されます。このファイルはnsd-controlにより使われます。
control-cert-file: <filename>
制御クライアントの証明書へのパス。デフォルトは/etc/nsd/nsd_control.pemです。この証明書はサーバー証明書により署名されています。このファイルはnsd-control-setupユーティリティにより生成されます。このファイルはnsd-controlにより使われます。

patternオプション

pattern:節は複数のゾーンに適応するオプションのセットを示すために使われます。ゾーンに関して同じゾーンのオプションは許可されます。

name: <string>
パターン名。これは(大文字小文字を区別する)文字列です。”_implicit_”で始まるパターン名はパターンを持たないゾーン(直接nsd.confに定義されたゾーン)の内部で使われます。
include-pattern: <pattern-name>
与えられたパターンのオプションはここ場所に読み込まれます。参照されるパターンはこのパターンより上で定義されていなければなりません。
<zone option>: <value>
zonefile, allow-notify, request-xfr, allow-axfr-fallback, notify, notify-retry, provide-xfr, outgoing-interfaceのゾーンオプションがで指定できます。これらはこのパターンに読み込まれるパターンとゾーンに適応されます。

ゾーン オプション

ゾーン毎に一つのzone:節で指定されるオプションが必要です。複数のサーバーを加えるためにはアクセス制御リストの要素を複数回与えます。これらの要素は明示的に追加される必要があります。

nsd.conf設定ファイルに設定されたゾーンは、(それ自体の暗黙的なパターンないで)その設定がハードコードされます。そして、それらはdelzoneで削除できませんが、設定ファイルから削除したり、repatternで削除したりすることはできます。

name: <string>
ゾーン名。これはゾーンの頂点のドメイン名です。(FQDN記法で)’.’で終わってもよいです。例えば、”example.com”,や”sub.example.net.”です。この属性は各ゾーンに存在しなければなりません。
zonefile: <filename>
ゾーン情報を含んでいるファイル。この属性が存在していたら、指定したファイルはゾーンの内容を読み書きするのに使われます。この属性が存在していなければ、そのゾーンを書き出すことを防ぎます。
allow-notify: <ip-spec> <key-name | NOKEY | BLOCKED>
アクセス制御リスト。指定された(プライマリ サーバの)アドレスはこの(セカンダリ)サーバに通知を送信するのが許可されます。指定されていない、あるいはBLOCKEDと指定されたアドレスからの通知は破棄されます。NOKEYが与えられたら、TSIG署名は必要とされません。BLOCKEDは他のエントリーを破棄します。他のエントリーは記述の順番で一致するかを調べられます。

ip-specは普通のIPアドレス(IPv4やIPv6)、あるいは1.2.3.4/24の形式のサブネット、1.2.3.4&255.255.255.0のようなマスクされたもの、1.2.3.4-1.2.3.25の形式の範囲のどれかです。ポート番号は@numberの接尾語を使って付与されます。例えば、5300番ポートでは1.2.3.4@5300や1.2.3.4/24@5300です。ip-specの範囲は/や&や@や-記号の周りに空白を使ってはいけません。
request-xfr: [AXFR|UDP] <ip-address> <key-name | NOKEY>
アクセス制御リスト。指定した(マスタ サーバの)アドレスに更新時にAXFR/IXFRのクエリーを行います。ポート番号は@numberの接尾語を使って付与されます。例えば、5300番ポートでは1.2.3.4@5300です。指定した鍵がAXFR/IXFRで使われす。

AXFRオプションが与えられたら、そのサーバにはIXFRクエリーで接続されず、AXFR要求のみが行われます。これはNSDセカンダリがNSDを動かすマスタ サーバを持つことを許可します。AXFRオプションがなければ、IXFRとAXFR要求の両方がマスタ サーバに行われます。UDPオプションが与えられたら、セカンダリはIXFR要求を送信するためにUDPを使います。UDP送信を許可するときには、通知とゾーン転送を認証するために、TSIGを設定するべきです。そうでなければ、NSDはKaminsky方式の攻撃でもっと脆弱になるでしょう。UDPオプションがなければ、IXFRはTCPを使って送信されます。
allow-axfr-fallback: <yes or no>
このオプションはrequest-xfrオプションと一緒に使われるべきです。プライマリ ネームサーバがIXFRをサポートしていないときに、(セカンダリとしての)NSDがAXFRにフォールバックするのを許可あるいは拒否します。デフォルトではyesです。
notify: <ip-address> <key-name | NOKEY>
アクセス制御リスト。指定した(セカンダリ サーバの)アドレスはこのゾーンへの更新が通知されます。ポート番号は@numberの接尾語を使って付与されます。例えば、5300番ポートでは1.2.3.4@5300です。指定した鍵は通知を署名するために使われます。セカンダリの設定上でのみ、(自身に通知させたり、しばらくして更新したりして)NSDはゾーンの更新を検出できます。
notify-retry: <number>
このオプションはnotifyオプションと一緒に使われるべきです。通知の送信時の再接続の試みの回数を設定します。
provide-xfr: <ip-spec> <key-name | NOKEY | BLOCKED>
アクセス制御リスト。指定した(セカンダリ サーバの)アドレスはこのサーバからのAXFRの要求を許可されます。ゾーン データはそのアドレス宛に提供されます。指定した鍵がAXFRで使われす。指定されていない、あるいはBLOCKEDと指定されたアドレスでは、データは提供されず、要求は破棄されます。BLOCKEDは他のエントリーを破棄します。他のエントリーは記述の順番で一致するかを調べられます。

ip-specは普通のIPアドレス(IPv4やIPv6)、あるいは1.2.3.4/24の形式のサブネット、1.2.3.4&255.255.255.0のようなマスクされたもの、1.2.3.4-1.2.3.25の形式の範囲のどれかです。ポート番号は@numberの接尾語を使って付与されます。例えば、5300番ポートでは1.2.3.4@5300や1.2.3.4/24@5300です。ip-specの範囲は/や&や@や-記号の周りに空白を使ってはいけません。
outgoing-interface: <ip-address>
アクセス制御リスト。指定したアドレスは(セカンダリの場合では)AXFR|IXFRを要求するために使われるか、(プライマリの場合では)通知を送信するために使われます。

IPアドレスは普通のIPアドレス(IPv4またはIPv6)です。ポート番号は@numberの接尾語を使って付与されます。例えば、5300番ポートでは1.2.3.4@5300です。
include-pattern: <pattern-name>
与えられたパターンのオプションはここ場所に読み込まれます。参照されるパターンはこのゾーンより上で定義されていなければなりません。
rrl-whitelist: <rrltype>
このオプションの節はこのゾーンのための指定したrrltypeのクエリーがホワイトリストされるようになります。これらはwhitelist-ratelimitを受け入れます。複数行を記述したら、各行はゾーンのためにホワイトリストされる新しいrrltypeを有効にします。デフォルトは何もホワイトリストされません。rrltypeはNSD RRLが異なるタイプを互いに干渉させないように利用するクエリーの分類です。(verbosity 2では)サブネットがブロックされるときに、タイプがログの行に出力されます。RRLの分類タイプはnxdomain, error, referral, any, rrsig, wildcard, nodata, dnskey, positive, allです。

鍵の宣言

key:節はアクセス制御リストで使われる鍵を設定します。次の属性を持ちます。

name: <string>
鍵の名前。アクセス制御リストでこの鍵を参照するために使われます。
algorithm: <string>
この鍵の認証アルゴリズム。
secret: <base64 blob>
base64で符号化された共有鍵。異なるファイルにsecret:宣言(とbase64の塊)を置くこともできます。このときはinclude:でそのファイルを指定します。このようにして、鍵と設定ファイルの残りは異なるセキュリティ ポリシーを持つこともあるため、別ファイルに分けることができます。

BIND9ハッカーのためのNSDの設定

BIND9は自身の設定ファイルの形式named.conf(5)を持つネームサーバの実装です。BIND9には’Master’と’Slave’のタイプのゾーンがあります。

スレーブ ゾーン

スレーブ ゾーンでは、マスタ サーバが並べられます。マスタ サーバはゾーン データをクエリーされ、更新通知のために待ち受けます。NSDでは、これらの2つの特性は別に設定される必要があります。allow-notifyとrequest-xfrオプションでマスタ アドレスを並べます。BIND9では、(例えば操作者など)通知の特別な送信元のためにallow-notify要素を提供することだけが必要です。NSDはマスタと操作者の両方のためにallow-notifyを持つ必要があります。BIND9では追加の転送元を許可します。NSDでは、request-xfrとして転送元を並べます。BIND9の文法でスレーブ ゾーンの例をここに示します。# Config file for example.org options {

dnssec-enable yes;
};

key tsig.example.org. {

algorithm hmac-md5;
secret “aaaaaabbbbbbccccccdddddd”;

};

server 162.0.4.49 {

keys { tsig.example.org. ; };

};

zone “example.org” {

type slave;
file “secondary/example.org.signed”;
masters { 162.0.4.49; };

}; For NSD, DNSSEC is enabled automatically for zones that are signed. options節にdnssec-enable文は必要ではありません。NSDでは、鍵はアクセス制御リストの文のIPアドレスと結びつけられています。そのため、server{}文は必要ありません。NSDの設定ファイルでは同じ例は下のようになります。

# Config file for example.org

key:
name: tsig.example.org.
algorithm: hmac-md5
secret: “aaaaaabbbbbbccccccdddddd”

zone:

name: “example.org”
zonefile: “secondary/example.org.signed”
# the master is allowed to notify and will provide zone data.
allow-notify: 162.0.4.49 NOKEY
request-xfr: 162.0.4.49 tsig.example.org.

masterは2回並べられていることに注目してください。このスレーブ サーバに通知を送ることを許可するために1回、スレーブ サーバに更新のゾーン データがどこにあるかを伝えるために1回。マスタを指定するために、もっと多くのallow-notifyとrequest-xfrの行を追加することができます。このスレーブ サーバに通知を送信することも許可するアドレスのために、追加のallow-notifyの行を指定することができます。

マスタ ゾーン

BIND9でのマスタ ゾーンでは、スレーブ サーバが並べられます。これらのスレーブ サーバは更新の通知を送信され、ゾーン データの転送の要求を許可されます。NSDでは、これらの2つの特性は別に設定される必要があります。BIND9の文法でマスタ ゾーンの例をここに示します。

zone “example.nl” {

type master;
file “example.nl”;

};

NSDの文法ではこれは次のようになります。

zone:

name: “example.nl”
zonefile: “example.nl”
# allow anybody to request xfr.
provide-xfr: 0.0.0.0/0 NOKEY
provide-xfr: ::0/0 NOKEY
# to list a slave server you would in general give
# provide-xfr: 1.2.3.4 tsig-key.name.
# notify: 1.2.3.4 NOKEY

その他

NSDは権威のみのDNSサーバです。これはゾーンのプライマリあるいはセカンダリのサーバとして意味し、DNSリゾルバとキャッシュにDNSデータを提供します。BIND9は権威サーバとして機能し、その設定オプションはこのセクションのNSDと比べられます。しかし、BIND9はリゾルバやキャッシュとしても機能します。BIND9がリゾルバやキャッシュのために持つ設定オプションはNSDと等しくないです。

ファイル

/var/db/nsd/nsd.db
デフォルトのNSDデータベース
/etc/nsd/nsd.conf
デフォルトのNSDの設定ファイル

関連項目

nsd(8), nsd-checkconf(8), nsd-control(8)

著者

NSDはNLnet LabsとRIPE NCCの共同チームにより作られました。詳細は配布ファイルに含まれているファイルCREDITSを見てください。

バグ

nsd.confは基本的な解析器により解析されます。エラーメッセージは要領を得ないかもしれません。