ネームサーバ 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.gzcd djbdns-1.05
make
make setup checkこれでインストールは完了です。
インストールが終わったら、続いて djbdns を起動できる環境を構築します。
まずは、daemontools のインストールと実行です。
mkdir -p /package
chmod 1755 /packagecd /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 が維持されるというのも魅力的です。
関連ページ
djbdns に関するお話を、上記のページにまとめてみました。このページの内容を含め、ほかにもいろいろなことに触れてみました。