Edit
djbdnsとは

djbdnsとは、Daniel J. Bernstein氏が開発した、BINDに比べて非常にシンプルで過去セキュリティホールが過去に見つかったことがない、非常に堅牢なDNSシステムである。現在はパブリックドメイン化している。ちなみに、CentOS 5 以上のインストールでは、glibcが2.3.1以上なので、すべてパッチ処理も実行することが必要である。

※今となってはDNSSECにも対応していないので、ほとんど使われていない可能性が高い。代替として unbound が人気が高く今も更新されている)

Edit
Install

原則的には、作者のポリシーとしてバイナリー提供を行っていないので、自分でソースからコンパイルするしか方法はない。基本的には、daemontools, ucspi-tcp, djbdns の順でインストールを行いインストールする。

Edit
daemontools Install

このツールは、/service フォルダに起動プログラムのリンクを置くだけで、自動的にプログラムを起動してくれるツールであり、MacOSのシステムフォルダのような振る舞いをする。

# cd /usr/local/src
# mkdir djbtools
# cd djbtools
# wget http://tools.qmail.jp/daemontools/daemontools-0.76.tar.gz
# cd admin/daemontools-0.76

glibcのバージョンが2.3.1以降の場合は次のパッチを当てる。

# wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
# patch -s -p1 <./daemontools-0.76.errno.patch

インストール処理

# package/install

※なぜかdaemontoolsを展開すると、adminが作成された後、その直下にdaemon~のフォルダが作成されるので注意。
※この手順の場合、daemontoolsは「package/admin」で動作する事になる。

Edit
ucspi-tcpの導入

UNIX Client-Server Program Interface - Transmission Control Protocolの略名

# cd /usr/local/src/djbtools/admin
# wget http://tools.qmail.jp/ucspi-tcp/ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88

glibcのバージョンが2.3.1以降の場合は次のパッチを当てる。

# wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch
# wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.a_record.patch
# wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.nobase.patch
# patch -s -p1 <./ucspi-tcp-0.88.errno.patch
# patch -s -p1 <./ucspi-tcp-0.88.a_record.patch
# patch -s -p1 <./ucspi-tcp-0.88.nobase.patch

コンパイル

# make
# make setup check

Edit
djbdns本体の導入

上記の2つのツールがインストール完了後、本体のインストールに入る。

# cd /usr/local/src/djbtools
# wget ftp://ftp.jp.qmail.org/qmail/djbdns-1.05.tar.gz
# tar zxvf djbdns-1.05.tar.gz
# cd djbdns-1.05

glibcのバージョンが2.3.1以降の場合は次のパッチを当てる。

# wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/djbdns-1.05.errno.patch
# patch -p1 <./djbdns-1.05.errno.patch

コンパイル&インストール(/usr/local/bin にインストールされる)

# make
# make setup check

Edit
起動と設定

djbdnsとは大きく分けて、dnscacheプログラムと、tinydnsプログラムの2つのプログラムだけで構成されるシンプルなものである。dnscacheは単純に他のDNSサーバーが持っているレコード情報をキャッシュするだけであり、tinydnsはローカルに保存されているレコード情報を応える機能しかない。

通常、キャッシュのみの利用が一般的だが最近は廉価なルーターにもキャッシュ機能は付いており、非常にアクセスが多いような場合意外は、会社でも家庭でも必要としないだろう。逆にtinydnsの場合は個人でサーバーを立ち上げた場合などには活躍できると思われるので、ここではtinydnsの起動と設定に特化して説明する。

Edit
起動の為の初期設定

セキュリティを上げるために、デーモン起動は専用のユーザーを作成する。

# groupadd djbdns
# useradd -g djbdns -d /noexsistent -s /bin/false djbdns

DNS設定領域の作成

# tinydns-conf djbdns djbdns /usr/local/djbdns 192.168.0.100

さきほどのdaemontoolsにサービスを登録

# ln -s /usr/local/djbdns /service/djbdns
# ps aux | grep djbdns                       <- 起動チェック

自分のドメインのホストを登録する。

# cd /usr/local/djbdns/root
# ./add-host server1.yourdomain.com 192.168.1.100
# ./add-host server2.yourdomain.com 192.168.1.101
# make

※基本的にはこのadd-hostで十分だと思われる。設定の最後にmakeを実行することを忘れないように


また、レコードファイルを直接修正して追加や削除も可能である。

# emacs /usr/local/djbdns/root/data
 =server1.yourdomain.com:192.168.1.100
 =server2.yourdomain.com:192.168.1.101
 +www.yourdomain.com:192.168.1.100

最初の記号が、レコードの意味を表し「=」がhost record (A record)で、「+」がalias recordを示している。