NSD
NSD は自身が管理するドメインだけを解決する、高性能でシンプルなオープンソースのネームサーバーです。
インストール
BIND から NSD に移行する
DNS サーバーとして BIND を使用している場合、インストールしたパッケージの中に移行ガイドが含まれています:
/usr/share/doc/nsd/NSD-FOR-BIND-USERS
NSD は Unbound と一緒に使用すると良いでしょう。詳しくは Unbound のページを参照してください。
初期設定
大抵の場合、NSD は Unbound などの DNS キャッシュサーバーと組み合わせて使用します。したがって、衝突を防ぐために、DNS キャッシュサーバーではポート 53 を使用するので、以下の設定では NSD で使用するポートを 53530 に設定します。NSD は localhost のリクエストを listen するようになります。さらに、ファイアウォールは外部マシンからの DNS クエリだけを処理できるようにポート 53 だけを開きます。
NSD のサンプル設定ファイルは /etc/nsd/nsd.conf.sample
に存在します。設定例:
/etc/nsd/nsd.conf
server: server-count: 1 ip-address: 127.0.0.1 port: 53530 do-ip4: yes hide-version: yes identity: "Home network authoritative DNS" zonesdir: "//etc/nsd3" key: name: "keyname" algorithm: hmac-md5 secret: "secretkey" zone: name: "example.com" zonefile: "example.com.zone"
詳しくは [1] を見てください。
実行
NSD を起動する前に nsd-checkconf コマンドを使ってゾーンファイルをチェックすることができます。パラメータとしてゾーンファイルの名前を指定してください。
ゾーンファイルや設定ファイルに変更があったときにだけデータベースファイルを再構築するようにするため、以下のコマンドを実行することでゾーンデータベースを作成:
# nsd-control reload
それから nsd.service
systemd サービスを起動・有効化することで NSD を起動できます。
テスト
以下のコマンドでポート 53530 を使って正引き・逆引きをチェックできます:
$ drill @127.0.0.1 -p 53530 mylocalmachine1.myhomenet.com $ drill @127.0.0.1 -p 53530 -x w.x.y.z
w.x.y.z は LAN 内のローカルアドレスに置き換えてください。
Unbound の設定
Unbound をキャッシュ再帰サーバーとして実行する場合、unbound.conf
に以下のように記述することで、同一ネットワーク上のローカルマシンからのクエリを NSD に転送できます:
do-not-query-localhost: no local-zone: "example.com" nodefault domain-insecure: "example.com"
stub-zone: name: "example.com" stub-addr: 127.0.0.1@53530
unbound.conf
に上記の設定を記述したら、Unbound を再起動して NSD のゾーンエントリのローカルクエリが機能することを確認してください。全てテストできたら、unbound.conf
に以下のように記述して Unbound がローカルネットワークの外部インターフェイスと 127.0.0.1 を listen するように設定してください:
interface: 127.0.0.1 interface: 10.0.0.1
10.0.0.1 は NSD と Unbound を実行している DNS サーバーの IP アドレスに置き換えてください。
上記の例では IPv4 だけを使用しています。必要ならば IPv6 の設定も追加する必要があります。パラメータに関する詳細は man ファイルを閲覧したりウェブ上を検索してください。
WAN と DNS
listen しているサーバーの設定ファイルやインターフェイスを変更することで、ローカルネットワーク外のマシンからのクエリから LAN 内の特定のマシンにアクセスできるように設定できます。どこからでもアクセスできるようにするウェブサーバーやメールサーバーなどで有用です。