ネームサーバ djbdns 1.05 のインストール

SERVER

管理不十分から BIND がのっとられたのをきっかけに、安全が売り文句の djbdns というネームサーバを使ってみることにしました。


djbdns 1.05

djbdns とは、qmail の作者、D.J.Bernstein さんが作成したネームサーバです。

http://djbdns.jp.qmail.org/djbdns/ に掲げられていますけど、「安全、確実、高速、簡潔、設定も簡単な DNS ツール群」 が売り文句になっているようです。

 

djbdns というのは DNS 関連のパッケージです。今回はそのうちの tinydns サービスを利用して、DNS サーバを構築するまでのお話です。

以前、我が家の BIND がやられまして、いい機会だったのでこの djbdns への移行をしてみることにしました。BIND 9.1.0 でも良かったのですが、珍しい物好きなもので・・・。ちょっと手順が多いのが気になりました。

daemontools-0.76 では、その辺りの手間が自動化されるのでだいぶ楽にはなりましたけど。

 

djbdns のインストール

まずは djbdns のサイトから必要なファイルをダウンロードします。

  • djbdns-1.05.tar.gz
  • doc.tar.gz
  • daemontools-0.76.tar.gz

これらを /usr/local/src にダウンロードします。doc.tar.gz はドキュメントなので、必要に応じてダウンロードしてください。また、daemontools-0.76.tar.gz は、djbdns を起動したりするために必要なツールが入っているものです。こちら も必ずダウンロードしましょう。

なお、その他にも、ゾーン転送サーバの axfrdns や、ゾーン転送クライアントである axfr-get を使用する場合には、ucspi-tcp というプログラム群も必要になるそうですが、今回はこれはとくに使用しないことにします。

 

続いてインストールを行います。tar をつかって djbdns-1.05.tar.gz を展開して、make コマンドを実行します。

 

cd /usr/local/src
tar xvzf djbdns-1.05.tar.gz

cd djbdns-1.05

make
make setup check

これでインストールは完了です。

 

インストールが終わったら、続いて djbdns を起動できる環境を構築します。

まずは、daemontools のインストールと実行です。

mkdir -p /package
chmod 1755 /package

cd /package

というようにして、/package ディレクトリを作成してその中へと移動します。そして /package へ daemontools-0.76.tar.gz をダウンロードしたら以下の手順でインストールを行います。

tar xpvzf daemontools-0.76.tar.gz

cd admin/daemontools-0.76
package/install

 

これで、svscan が起動します。念のため、ps axu | grep svscan と入力して、svscan /service というようなプロセスが起動していることを確認しましょう。

これで、djbdns 周りの下準備は完了です。

 

tinydns の導入と起動

tinydns を起動するために必要なユーザアカウントを作成します。

groupadd djbdns

useradd -d /dev/null -g djbdns -s /bin/true tinydns
useradd -d /dev/null -g djbdns -s /bin/true dnslog

 

続いて tinydns 用のサービスディレクトリの作成を行います。

/usr/local/bin/tinydns-conf tinydns dnslog /etc/tinydns 192.168.0.2

上記の 192.168.0.2 の部分は自分自身を示す IP アドレスです。どの IP アドレスでネームサーバを提供するかによって、適宜指定します。

ここまできたら、いよいよ DNS の起動です。

ln -s /etc/tinydns /service

この命令によって、/service ディレクトリ内に /etc/tinydns へのシンボリックリンクが生成され、svscan によって、自動的に tinydns が起動されます。この tinydns が、djbdns の DNS プログラム本体となります。

 

データファイルの編集

tinydns は、有名な DNS システムである BIND の ZONE ファイルとは異なったデータファイルを持ちます。

データファイルは /service/tinydns/root/ ディレクトリに data というファイル名で保存されています。このファイル自体はテキストファイルですが、これを簡単に編集するためのツールとして次のようなものが用意されています。

  • add-alias
  • add-childns
  • add-host
  • add-mx
  • add-ns

これらを使うことで、簡単にレコードを登録することができます。

 

まずは検索対象のゾーンを登録します。

今回登録するゾーンは、ez-net.jp として、IP アドレスは 192.168.0.0/24 を想定しています。なお、上記のデータファイル編集ツールは /service/tinydns/root/ ディレクトリ内にありますので、まずはそのディレクトリへ移動する必要があります。

cd /service/tinydns/root

./add-ns ez-net.jp 192.168.0.2
./add-ns 0.0.168.192.in-addr.arpa 192.168.0.2

これで、ez-net.jp ゾーンと、192.168.0.2 というネットワークアドレスの逆引き用のゾーンの登録ができました。なお、これらは BIND でいうところの、NS, A, SOA レコードで割り当てが行われるそうです。

逆引き用の 0.168.192.in-addr.arpa は約束事のようなもので、自分のネットワークアドレス部分 192.168.0 を逆からならべて、その後ろに .in-addr.arpa をつけます。

 

続いてホスト情報の登録もしてみます。

./add-host sv1.ez-net.jp 192.168.0.1
./add-host sv2.ez-net.jp 192.168.0.2
./add-host sv3.ez-net.jp 192.168.0.3

このようにすることで、

sv1.ez-net.jp -> 192.168.0.1
sv2.ez-net.jp -> 192.168.0.2
sv3.ez-net.jp -> 192.168.0.3

という対応付けが、いわゆる A レコードと PTR レコードで行われます。

 

その他の NS レコードの登録には、add-childns を使用します。

./add-childns ez-net.jp 192.168.0.3

こうすることで、ez-net.jp の NS レコードとして 192.168.0.3 が登録されます。

 

別名を登録する場合には add-alias を使用します。

./add-alias www.ez-net.jp 192.168.0.3

これでいわゆる A レコードが設定されるそうです。

 

メール転送の設定には add-mx を使用します。

./add-mx ez-net.jp 192.168.0.3

こうすることで MX レコードが設定され、xxx@ez-net.jp 宛てのメールが 192.168.0.3 に委託されます。

 

 

設定が終わったら、設定ファイルを有効にするために以下の命令を実行します。

make

これでデータファイルを元にした data.cdb ファイルが作成され、新しいデータベースが有効になります。tinydns の再起動を改めて行う必要がなく、また data ファイルの記述不備によるエラーの場合には、すでに稼動していた data.cdb が維持されるというのも魅力的です。

 

関連ページ

EZ-NET 特集: DNS サーバ djbdns

djbdns に関するお話を、上記のページにまとめてみました。このページの内容を含め、ほかにもいろいろなことに触れてみました。