NSD 4.0.0b1 のゾーンの動的追加・削除を試す
NSD 3 系で悩みだったのが、ゾーンの追加・削除の際に、デーモンをリスタートしないといけない事でした。
僕の会社のコンテンツサーバは、結構な頻度でゾーンの追加・削除があるので、NSD に乗り換え候補にあげつつも、ちょっとなーなんて思っていた所、、、
NSD 4.0.0b1 がリリースされました。
[nsd-users] NSD 4.0.0b1 beta
The zone handling allows to addition and removal of zones on the fly.
との通り、ゾーンの追加・削除が動的にできるようになったとの事で、さっそく試して見ました。
- 環境
- CentOS 6.2 x86_64
インストールから起動まで
NSD3 系と同じ手順でインストールできました。
ビルド・インストール
# cd /usr/local/src
# wget http://nlnetlabs.nl/downloads/nsd/nsd-4.0.0b1.tar.gz
# tar zxvf nsd-4.0.0b1.tar.gz
# cd nsd-4.0.0b1
# ./configure --prefix=/usr/local/nsd
# make
# make install
ユーザ追加・パーミッション変更
# useradd -s /sbin/nologin -M nsd
# chown nsd:nsd /usr/local/nsd/var/db/nsd
→ <prefix>/var/db/nsd
は、nsd ユーザで書き込みが発生するので、パーミッションを変更する。
起動スクリプト配置
# cd /usr/local/src/nsd-4.0.0b1/contrib
# vi nsd.init
------
#configfile="/etc/nsd.conf"
configfile="/usr/local/nsd/etc/nsd/nsd.conf"
#sbindir="/usr/sbin"
sbindir="/usr/local/nsd/sbin"
------
# install -o root -g root -m 755 nsd.init /etc/init.d/nsd
# chkconfig --add nsd
設定
# /usr/local/nsd/etc/nsd
# cp -a nsd.conf.sample nsd.conf
# cat nsd.conf | grep -v "#" | grep -v "^$"
------
server:
username: nsd
zonelistfile: "/usr/local/nsd/var/db/nsd/zone.list"
database: "/usr/local/nsd/var/db/nsd/nsd.db"
pidfile: "/usr/local/nsd/var/db/nsd/nsd.pid"
xfrdfile: "/usr/local/nsd/var/db/nsd/xfrd.state"
hide-version: yes
remote-control:
control-enable: yes
pattern:
name: "myzones"
zonefile: "zones/%s"
------
→ 動的な追加・削除用に pattern ディレクティブを設定します。
→ zone ディレクティブは従来通りの動作をします。
remote-control 準備
# cd /usr/local/nsd/sbin
# ./nsd-control-setup
ゾーンファイル作成
# cd /usr/local/nsd/etc/nsd
# mkdir zones
# vi zones/example.com
------
$TTL 3600
@ IN SOA ns1.example.com. hostmaster.example.com. (
2012121301 ;serial
10800 ;refresh
3600 ;retry
604800 ;expire
600 ) ;negcache
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
ns1 IN A 10.0.0.11
ns2 IN A 172.16.0.11
@ IN A 192.0.43.10
------
起動
# /etc/init.d/nsd start
いざ実験
# dig +noall +answer @localhost example.com a
まず引いてみる。
まだゾーンはないので、引けない。
# /usr/local/nsd/sbin/nsd-control addzone example.com myzones
ok
ゾーンを動的に追加する。
"myzones" は pattern ディレクティブの name ディレクティブの値。
# dig +noall +answer @localhost example.com a
example.com. 3600 IN A 192.0.43.10
もう一度引く。
ゾーンが追加され、レコードが引けた!
# /usr/local/nsd/sbin/nsd-control delzone example.com
ok
ゾーンの動的削除
# dig +noall +answer @localhost example.com a
引けなくなった。
最後に
ずっと前から欲しかった機能なので、とてもうれしいです。
まだ 4 系最初のベータですが、正式版がいまから楽しみですね!