nsd.conf(5)

nsd.conf

Section: nsd 3.2.8 (5)
Updated: Mar 22, 2011


名前

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"
username: nsd
logfile: "@logfile@"
pidfile: "/var/run/nsd.pid"
difffile: "/var/db/nsd/ixfr.db"
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:zone:key:のみが許可されます。これらはその属性や新しいserver:zone:key:節の開始が続きます。zone:属性はゾーン オプションが後に続きます。server:属性はNSDサーバーの全体のオプションが後に続きます。key:属性は認証の鍵を定義するために使われます。

include:ディレクティブを使ってファイルを取り込むことができます。これはどこでも記述することができ、引数に一つのファイル名を取ります。取り込んだファイルのテキストはその箇所で設定ファイルにコピーされたような処理を行います。

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

ip-address: <ip4 or ip6>[@port]
NSDはそのIPアドレスにバインドします。複数のIPアドレスにバインドするために複数回与えることができます。さらに、ポート番号を与えることもできます。一つも与えられなければ、NSDはワイルドカード インターフェースで待ち受けます。コマンドライン オプションの-aと同じです。
debug-mode: <yes or no>
nsdのデバッグ モードを有効にし、デーモン プロセスをフォークしません。デフォルトはnoです。コマンドライン オプションの-dと同じです。
ip4-only: <yes or no>
yesであれば、NSDはIPv4の接続のみを待ち受けます。コマンドライン オプションの-4と同じです。
ip6-only: <yes or no>
yesであれば、NSDはIPv6の接続のみを待ち受けます。コマンドライン オプションの-6と同じです。
database: <filename>
デフォルトで/var/db/nsd/nsd.dbが使われます。指定したファイルはコンパイルされたゾーン情報を格納するために使われます。コマンドライン オプションの-fと同じです。
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接続数。デフォルトは10です。このオプションは1000未満の値にすべきです。コマンドライン オプションの-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します。コマンドライン オプションの-tと同じです。
username: <username>
ソケットにバインドした後に、ユーザ権限を落とし、usernameになります。ユーザー名かidかid.gidでなければなりません。コマンドライン オプションの-uと同じです。
zonesdir: <directory>
ゾーンファイルにアクセスするまえに、指定したディレクトリに作業ディレクトリを変えます。zonec(8)のコマンドライン オプションの-dと同じです。nsd(8)もこのディレクトリに対する相対パスでファイル(PIDファイル、データベースファイル、ログファイル)にアクセスします。作業ディレクトリの変更を無効にするためにはこの値を""(空文字)に設定します。
difffile: <filename>
NSDがIXFR更新を受け取ったら、このファイルに差分ファイルを保存します。このファイルはデータベースファイルと最新ゾーンバージョンとの差を含んでいます。デフォルトは/var/db/nsd/ixfr.dbです。
xfrdfile: <filename>
soaタイムアウトとNSDのゾーン転送デーモンはこのファイルにその状態を保存します。再起動後に状態は読み戻されます。重大な不具合なしにこの状態ファイルを削除できます。しかし、ゾーンのタイムスタンプは失われます。詳細はNSDのゾーンの期限切れの動作のセクションを参照してください。デフォルトは/var/db/nsd/xfrd.stateです。
xrfd-reload-timeout: <number>
この値が-1であれば、xfrdはゾーン転送後の再読み込みを引き起こしません。正の値であれば、xfrdはゾーン転送後に再読み込みを行わせ、それから新しい再読み込みを行わせる前に指定した秒数の間待ちます。この値を設定することで、再読み込みの間隔を指定した秒数毎に一度までに抑制できます。デフォルトは10秒です。
verbosity: <level>
この値は(デバッグではない)ログのための饒舌さのレベルを指定します。デフォルトは0です。1は内向きの通知とゾーン転送についての情報を与えます。2は出会った穏やかな警告の一覧を出力します。
hide-version: <yes or no>
CHAOSクラスのクエリーに対してバージョンの文字列をNSDが返答するのを防ぎます。

ゾーン オプション

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

name: <string>
ゾーン名。これはゾーンの頂点のドメイン名です。(FQDN記法で)'.'で終わってもよいです。例えば、"example.com",や"sub.example.net."です。この属性は各ゾーンに存在しなければなりません。
zonefile: <filename>
ゾーン情報を含んでいるファイル。このファイルはzonec(8)により使われます。この属性は各ゾーンに存在しなければなりません。
allow-notify: <ip-spec> <key-name | NOKEY | BLOCKED>
アクセス制御リスト。指定された(プライマリ サーバの)アドレスはこの(セカンダリ)サーバに通知を送信するのが許可されます。指定されていない、あるいはBLOCKEDと指定されたアドレスからの通知は破棄されます。NOKEYが与えられたら、TSIG署名は必要とされません。
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のクエリーを行います。A port number can be added using a suffix of @number, for example 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>
アクセス制御リスト。指定した(セカンダリ サーバの)アドレスはこのゾーンへの更新が通知されます。A port number can be added using a suffix of @number, for example 1.2.3.4@5300. 指定した鍵は通知を署名するために使われます。セカンダリの設定上でのみ、(自身に通知させたり、しばらくして更新したりして)NSDはゾーンの更新を検出できます。
notify-retry: <number>
このオプションはnotifyオプションと一緒に使われるべきです。通知の送信時の再接続の試みの回数を設定します。
provide-xfr: <ip-spec> <key-name | NOKEY | BLOCKED>
アクセス制御リスト。指定した(セカンダリ サーバの)アドレスはこのサーバからのAXFRの要求を許可されます。ゾーン データはそのアドレス宛に提供されます。指定した鍵がAXFRで使われす。指定されていない、あるいは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を要求するために使われるか、(プライマリの場合では)通知を送信するために使われます。
The ip-address is a plain IP address (IPv4 or IPv6). A port number can be added using a suffix of @number, for example 1.2.3.4@5300.

鍵の宣言

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

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

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

BIND9は自身の設定ファイルの形式named.conf(5)を持つネームサーバの実装です。BIND9 types zones as 'Master' or '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; };

};

NSDでは、署名されたゾーンに対してDNSSECは自動で有効になります。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), nsdc(8), nsd-checkconf(8), nsd-notify(8), nsd-patch(8), nsd-xfer(8), zonec(8)

著者

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

バグ

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