設定のリファレンス

ゾーンデータ

NSD(正確にはzonec)が解釈できるゾーンデータは、RFC 1035ベースでRFC 2308の拡張である$TTLディレクティブと、BINDの独自拡張と思われる、時間パラメータのw(week)、d(day)、h(hour)、m(min)の単位も解釈します。ただし、BINDの独自拡張である$GENERATEディレクティブはサポートされていません。
$GENERATEディレクティブについてはnsd-usersメーリングリストでリクエストした人がいたんですが、開発陣からはサポートする気はない、perlでプリプロセッサでも書いたらどうか、という反応がありました。後日、ある先輩から、大げさだけどnamed-checkconf -Dが使えるのではないか、という話も聞きました。

nsd.conf

nsd.confとは

BINDのnamed.confに相当する、NSDの設定の中核となる(かどうかは意見の分かれるところかもしれませんが)設定ファイルです。

想定環境

この先の説明では という仮定をします。

フォーマット

nsd.confは

# Example.com nsd.conf file
# This is a comment.
server:
     database: "/etc/nsd/nsd.db"
     username: nsd
     logfile: "/var/log/nsd.log"
     pidfile: "/var/run/nsd.pid"
     difffile: "/var/nsd/ixfr.db"
     xfrdfile: "/var/nsd/xfrd.state"

zone:
     name: example.com
     # note that quotes are optional on the value
     zonefile: /etc/nsd/example.com.zone

のような形式です。nsd.confのトップレベルには、server:、key:、zone:の3種類のアトリビュートキーワードを書くことができ、server:、key:、zone:のキーワードから、次のserver:、key:、zone:のキーワード(あるいはnsd.conf(5)には明示的には書かれていませんが、nsd.confの末尾)までをclause(節)と呼んでおり、それぞれのclauseには、いくつかのアトリビュートキーワードとそれに対応する値を記述できます。また、nsd.confにはinclude:ディレクティブを書くことができます。include:ディレクティブが登場する位置は、nsd.confのトップレベルでなければいけないとかclauseの中でなければいけないとかアトリビュートキーワードの右辺でなくてはいけないとかという制約は特になく、どの位置にでも登場してよい、nsd.conf(5)に書いてあります。include:ディレクティブで指定するファイル名は、試した範囲では絶対パスで設定する必要があるようでした。

server: clauseのオプション

server: clauseは個々のゾーンではなくサーバ全般に渡る動作に関する設定をします。server: clauseはnsd.confの中に1回だけ設定できます。アトリビュートキーワードとそれに対応する値の組をオプションと言い、server: clauseでは以下のオプションが設定できます。
ip-address:
nsdに、ホストに設定されている全IPアドレスではなく特定の物だけで待ちうけさせたいときに、そのアドレスを設定します。待ち受けさせたいIPアドレスが複数ある場合は、1つのip-address:オプションの右辺に複数のアドレスを記述するのではなく、ip-address:オプションを複数記述します。
debug-mode:
yesを設定すると、nsdがdebugモードで動作するそうです。試したことありませんが。grepとlessで簡単に眺めた範囲では、dbxやgdbなどの下で実行できるように、fork()しなくなるだけのようです。configureに--enable-checking引数を与えてコンパイルすると、nsdの起動時オプションで-Fと-Lという隠しオプションが有効になって、実行時のデバッグメッセージが採取できるようですが、これとは独立した機能に見えます。
ip4-only:、ip6-only:
yesを設定すると、nsdがqueryを待ち受けるアドレスファミリが、それぞれ指定した通りになります。
database:
nsd.dbのパスをconfigureで指定したのとは変更したい場合に設定します。
identity:
nsdがowner id.server、class CHAOS、type TXTのqueryに対して応答する内容を設定します。
logfile:
ログの出力先を、標準エラーとsyslog経由から、指定したファイルに変更します。
server-count:
nsdがプリフォークする子プロセスの個数を指定します。デフォルトは1です。
tcp-count:
サーバが同時に受け付けるTCPコネクション数の上限を設定します。デフォルトは10です。未検証なので確信はありませんが、nsd.conf(5)の文面は、server-count:オプションやnsdの起動時オプション-Nで複数の子プロセスを起動した場合には、各プロセスの上限という意味に思えます。
pidfile:
PIDファイルのパスをconfigureで指定したのとは変更したい場合に設定します。
port:
テストなどの際に、nsdがqueryを待ち受けるポートを53から変更したい場合に設定します。
statistics:
configureに--enable-bind8-stats引数を与えてコンパイルしたときに、ログに統計情報を出力する間隔を秒単位で指定します。指定しないと、configureに--enable-bind8-stats引数を与えてコンパイルしてあっても、統計情報は出力されません。
chroot:
nsdの実行時にchroot()させるディレクトリ名を指定します。指定しないとchroot()しません。
username:
nsdの実行時に、rootの特権を放棄するためにsetuid()(とsetgid())するIDをconfigureで指定したのとは変更したい場合に、ユーザ名、数字のuidあるいはuid.gidの形式で指定します。
zonesdir:
後述のzonefile:オプションでファイル名を相対パスで指定したときの基点ディレクトリを設定します。
difffile:
入り方向のゾーン転送のジャーナルファイルのパスをconfigureで指定したのとは変更したい場合に設定します。
xfrdfile:
ゾーン転送のタイミング関係の情報を保存するファイルのパスをconfigureで指定したのとは変更したい場合に設定します。
xfrd-reload-timeout:
未検証なのでよく理解できていませんが、nsd.conf(5)によれば、ゾーン転送を行った後にreloadする速さを指定した秒数に1回に制限する、と書いてあります。デフォルトでは10で、-1を指定すると、reloadしなくなるようです。

key: clauseのオプション

ゾーン転送やNOTIFYなどのパケットを送出する際にTSIGで署名したり、受信したパケットを署名で認証したりするための鍵情報を定義するclauseです。詳細はdoc/READMEの3.3 Using TSIGのセクションが参考になります。key: clauseでは以下のオプションが設定できます。
name:
鍵の名前を指定します。
algorithm:
鍵のアルゴリズムを指定します。
secret:
base64エンコードしたsecretを設定します。

zone: clauseのオプション

このネームサーバがネームサービスを提供するゾーンそれぞれに関する設定をします。zone: clauseでは以下のオプションが設定できます。
name:
オプションというものの必須です。このzone: clauseの対象となるゾーン名を記述します。
zonefile:
ゾーンデータのファイル名を設定します。
allow-notify: IP-spec key-name|NOKEY|BLOCKED
NOTIFYの受け入れ、拒否と、受け入れるTSIG署名を設定します。IP-specは、単一のIPアドレス、1.2.3.0/24のようなprefix形式、1.2.3.0&255.255.255.0のようなnetmask形式、1.2.3.4-1.2.3.25のような範囲指定、1.2.4.4@5300あるいは1.2.3.0/24@5300のようなポート番号指定が記述できます。IP-specに続くパラメータは、key: clauseで設定したkey-nameであれば、その鍵でTSIG署名されたNOTIFYを受理し、NOKEYというキーワードであれば、TSIG署名なしで受け入れ、BLOCKEDというキーワードであれば、拒否します。secondaryとして動作する(request-xfr:オプションがある)ゾーンについては、::1あるいは127.0.0.1に対してもallow-notify:でNOTIFYを受け入れるよう設定しておかないと、nsdc updateを実行した際にエラーが出ます。
request-xfr: [AXFR] ip-address key-name|NOKEY
ゾーン転送を要求するマスタと、query形式、それに付加するTSIG署名を設定します。キーワードAXFRを設定するとAXFRでゾーン転送を要求し、設定しないとIXFRとAXFRの両方で要求します。
notify: ip-addr key-name|NOKEY
ゾーンデータの更新があった際にNOTIFYを送出する先とその際のTSIG署名を設定します。
provide-xfr: ip-spec key-name|NOKEY|BLOCKED
ゾーン転送の要求を許可する内容を設定します。各パラメータはallow-notify:と同様に解釈されます。

インストール|Up|設定と運用の基本的な例
Copyright(c) 2006, Koh-ichi Ito, All right reserved.
Last update: $Date: 2018-10-21 16:09:48 +0900 (Sun, 21 Oct 2018) $