電卓片手に

DNS コンテンツサーバ NSD を使ってみる

投稿日:

DNS サーバ といえば BIND ですが、BIND の複雑怪奇な設定ファイルに納得が行かないので、 BIND 以外の DNS サーバを探していたら NSD ってのを見つけた。BIND より軽く、フットプリントも小さいらしい。

Debian lenny の aptitude (apt-get) で手に入る NSD は下記のように、若干古いので ソースからインストールする。

$ aptitude show nsd3
  ...
バージョン: 3.0.7-3.lenny2
  ...

ダウンロード・展開・インストール

NSD から、最新版をダウンロードし、 展開、コンパイル、インストールする。ちなみに、コンパイルの際、gcc, make, libssl が必要になるそう。

$ wget http://www.nlnetlabs.nl/downloads/nsd/nsd-3.2.8.tar.gz
$ tar zxf nsd-3.2.8.tar.gz
$ cd nsd-3.2.8
$ ./configure --help
$ ./configure # --help を参考にオプションつける
$ make && make install

設定

make install の表示見るとわかるが、/etc/nsd/nsd.conf.sample ができてる。 これを参考に /etc/nsd/nsd.conf を作成する。/etc/nsd/nsd.conf.sample でコメントアウトされている値が、初期値となっている。なので、全部初期値でいいなら、 正引き逆引きのゾーンファイルの設定だけでいい。

今回は使ってみるだけなので、ゾーンファイルの設定のみ行う。NSD をインストールした サーバの IP アドレスは 192.168.1.10 とする。

# -*- coding:utf-8 -*-

# 正引きの設定
zone:
	name: hoge.k-ui.jp
	zonefile: hoge.k-ui.jp.zone

# 逆引きの設定
zone:
	name: 1.168.192.in-addr.arpa
	zonefile: 1.168.192.in-addr.arpa.zone

それぞれの zone ファイルは BIND のものと同じ形式(RFC 1035 と RFC 1034)で構わない。

正引きゾーンファイル

/etc/nsd/hoge.k-ui.jp.zone に配置する。

; -*- coding:utf-8 -*-
@	IN	SOA	dns.hoge.k-ui.jp.	some-user-name.gmail.com.(
	2011091206	; serial number
	10800	; Refresh
	3600	; Retry
	604800	; Expire
	86400	; Min TTL
)

; name servers
	IN	NS	dns.hoge.k-ui.jp.
	IN	A	192.168.1.100

; hoge servers
svr	IN	A	192.168.1.100
router	IN	A	192.168.1.1
laptop	IN	A	192.168.1.2

; CNAMEs
dns	IN	CNAME	svr

逆引きゾーンファイル

/etc/nsd/1.168.192.in-addr.arpa.zone に配置する。

; -*- coding:utf-8 -*-
@	IN	SOA	dns.hoge.k-ui.jp.	some-user-name.gmail.com.(
	2011091218	; serial number
	10800	; Refresh
	3600	; Retry
	604800	; Expire
	86400	; Min TTL
)

; name servers
	IN	NS	dns.hoge.k-ui.jp.

; PTRs
2	IN	PTR	laptop.hoge.k-ui.jp.
100	IN	PTR	svr.hoge.k-ui.jp.

設定ファイルのコンパイル、起動、リロード

$ sudo nsdc start	# 起動
$ sudo nsdc stop	# 停止
$ sudo nsdc rebuild	# 設定ファイルのコンパイル
$ sudo nsdc reload	# 設定の反映

# なので、設定ファイル(nsd.conf, zone ファイル)を書き換えたら
$ sudo nsdc rebuild && sudo nsdc reload

こんな感じ。

もし NSD を気に入って、かつ Debian 使ってるなら

OS 起動時に起動できるようにしましょう。

$ sudo update-rc.d nsdc defaults 90
$ sudo update-rc.d nsdc start 90 2 3 4 5 .
$ sudo update-rc.d nsdc stop 90 1 6 .

# 起動スクリプトからはずすとき
$ sudo update-rc.d nsdc remove 

BIND と違って

NSD は DNS コンテンツサーバです。DNS コンテンツサーバと、DNS キャッシュサーバ 両方の機能を持つ BIND の完全な代わりにはなりません。

DNS キャッシュサーバとしての機能は、NSD を開発している NLnet Labs が同様に 公開している Unbound などを使ってみるのも いいかもしれませんね。