BIND じゃないネームサーバ – NSD を使ってみる – いますぐ実践! Linuxシステム管理 / Vol.148

メモリに制約があるとはいえ、named は必要なのです。

しかし、BIND を使うと、思った以上にメモリを必要としますので、BIND しか動かせなくなってしまいます。

どうしようと思っていたところ、NSD というネームサーバの存在を、偶然知りました。
(実は、前回のあとがきでご紹介した Unbound と同じ開発元です。)

Name Server Domain (NSD)
http://www.nlnetlabs.nl/projects/nsd/

BIND は、DNS キャッシュサーバの機能も備わっていますが、NSD は DNS コンテンツサーバの機能だけに限られます。
ということは、その分、BIND よりメモリ使用量が少ないのではないか、という推測をしても、バチは当たらないように思います。

というわけで今回は、NSD をインストールし、設定して使うための方法をご紹介したいと思います。


まずは、インストールから始めてみましょう。

Fedora 9 の場合、パッケージがありますので、下記手順で完了です。

# yum install nsd

それ以外のバージョンは未確認ですが、たとえば以下に Fedora 7~9 の RPM パッケージがありました。yum コマンドで見つからなければ、以下で入手して rpm -i などとすればよいと思います。

RPM resource nsd
http://rpmfind.net/linux/rpm2html/search.php?query=nsd&submit=Search+…

Ubuntu 8.04 の場合、nsd3 というパッケージがありますので、下記手順でインストールできます。
(それ以前のバージョンでは、未確認です。すみません…。)

$ sudo apt-get install nsd3

そのほか…たとえば Vine Linux 4.2 や CentOS 5.2 には、パッケージは見当たりませんでした。
ですが、ソースコードに spec ファイルがありますので、RPM パッケージを作成することは可能です。
わたしが試した限りでは、一部変更が必要だったり、足りないファイルがあったりしました。念のため、変更したものを、以下に置いておきます。
(nsd-3.1.1 用です。)

NSD-3.1.1 用 spec ファイルなど
http://www.usupi.org/sysad/148-nsd-3.1.1.tgz

ちなみに、RPM パッケージの作り方は、変化球な説明が以下にあります。

Vol.130 – RPM パッケージを作成する
http://www.usupi.org/sysad/130.html


インストールが終わりましたら、次は初期設定です。

以下では、kuri.info というドメインを扱っていきたいと思います。
そのまま kuri.info で試しても構いませんが、できれば、kuri.info のところを、別のドメインに置き換えて試してみてください。

さて、まずは、設定ファイルを書いていきましょう。

設定ファイルは、/etc/nsd/nsd.conf です。
ただし、Ubuntu の場合は、/etc/nsd3/nsd.conf です。

設定ファイルといっても、ただ動かすだけなら、nsd.conf に以下を記述するだけです。

zone:      name: "kuri.info"      zonefile: "kuri.info.zone"

もとの nsd.conf には、以下のような記述がありますが、すべてコメントアウトされていますので、記述がなくても問題はありません。

server:      # hide-version: no      # debug-mode: no      # ip4-only: no  ...後略...

ちなみに、コメントアウトされている内容が、デフォルトです。
これと違う設定にしたければ、コメントを外して別の設定値を記述すればよいと思います。

 

次に、ゾーンファイルを用意します。
BIND と互換性がありますので、すでに BIND で使用しているファイルがあれば、そのまま流用できます。

上記で、zonefile に “kuri.info.zone” と指定していますので、これを /etc/nsd (Ubuntu なら /etc/nsd3)に置きます。
(zonesdir で別のディレクトリを指定した場合は、そちらに置きます。)

kuri.info 用のゾーンファイルの例を、以下に示します。
(内容の説明は、すみませんが割愛します。)

$TTL 86400  @ IN SOA ns1.kuri.info. postmaster.kuri.info. (      2008111601 10800 3600 604800 86400)  @          IN   NS     ns1.kuri.info.             IN   NS     ns2.kuri.info.             IN   A      192.168.1.4             IN   MX 10  mail.kuri.info.  localhost  IN   A      127.0.0.1  ns1        IN   A      192.168.1.1  ns2        IN   A      192.168.1.2  mail       IN   A      192.168.1.3  www        IN   A      192.168.1.4

 

ゾーンファイルが用意できましたら、これをデータベース化します。

# /etc/init.d/nsd rebuild      (Ubuntu 以外の場合)  # /etc/init.d/nsd3 rebuild     (Ubuntu の場合)

ちなみに、データベースは、以下のパスにあります。

Fedora: /var/lib/nsd/nsd.db  Ubuntu: /var/lib/nsd3/nsd.db  その他: /var/db/nsd/nsd.db

ただ、その他といいますか、自力でパッケージを作成されたなどの場合、/var/db/nsd がありません。上記を行う前に、作成しておきましょう。

# mkdir /var/db/nsd  # chown nsd.nsd /var/db/nsd

ちなみに、NSD は、ゾーンファイルではなく、データベースの情報をもとに動作しますので、ゾーンファイルを変更したら、必ずデータベースを更新して、NSD を restart(あるいは reload)してください。
(でないと、いつまでたっても、古い情報しか伝えてくれません。)

 

さて、データベースを作成したら、あとは NSD を起動するだけです。

おっと、現在 BIND の named が動作中でしたら、NSD を起動する前に、named を止めておく必要があります。

# /etc/init.d/named stop       (Ubuntu 以外の場合)  # /etc/init.d/bind9 stop       (Ubuntu の場合)

named がいなくなりましたら、以下の手順で NSD を起動しましょう。

# /etc/init.d/nsd start        (Ubuntu 以外の場合)  # /etc/init.d/nsd3 start       (Ubuntu の場合)

NSD を起動したら、きちんと動作しているか確認しましょう。

たとえば、dig コマンドで、以下のように問い合わせます。

$ dig @nsdを動かしているマシン www.kuri.info a  ...前略...  ;; ANSWER SECTION:  www.kuri.info.          86400   IN      A       192.168.1.4  ...後略...

ちゃんと動作していれば、たくさんの出力の中に、答えを見つけることができると思います。

もし、出力の中に答えがなかったり、そもそも応答がなかったリする場合は、まず、NSD が動作しているかどうか、確認してください。

$ ps -C nsd    PID TTY          TIME CMD   8051 ?        00:00:00 nsd   8052 ?        00:00:00 nsd   8053 ?        00:00:00 nsd

また、各種メッセージは、デフォルトでは syslog に出力されます。
/var/log/messages や /var/log/syslog を見て、起動していることを、下記を参考にして確認してください。

# grep nsd /var/log/messages  ...前略...  日時 マシン名 nsd[PID]: nsd started (NSD 3.1.1), pid PID

それでも応答がない場合、ファイアーウォールにはねられている可能性があります。
たとえば Fedora 9 の場合、ファイアーウォールの設定を、GUI から参照および変更することができます。
メニューから、システム -> 管理 -> ファイアーウォールの設定を選択して、「DNS (53/tcp, 53/udp)」が「信頼したサービス」になっているかどうか、確認してください。


以上、NSD のインストールから初期設定の方法までを、ごく簡単にご説明しました。

さて、気になるメモリ使用量ですが、CentOS 5.2 上では、named は以下の通りでした。VSZ(仮想メモリサイズ)を見ると 100MB を超えています。

# ps -C named -o pid,vsz,rss,comm    PID    VSZ   RSS COMMAND   7939 111120  3296 named

かたや、nsd は以下の通りでした。
3つを合計しても、nsd の方が圧倒的に小さいですね。

# ps -C nsd -o pid,vsz,rss,comm    PID    VSZ   RSS COMMAND   5802   3672   700 nsd   5803  10536   808 nsd   5804   3960   500 nsd

まあ、named の方は、recursion no として、nsd と条件を近づけているとはいえ、もとが多機能ですので、仕方がないと思いますが…。

NBDの参考

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中