djbdns

最終更新日時:2011-05-31 00:00:00
djb関連

djbdns とは


djbdns は DNS サーバおよびそのツール群で、大きく分けて tinydns, axfrdns, dnscache の3つからなります。
DNS サーバといえば普通は bind ですが、bind と比べて設定が簡単で使いやすいです。
しょっちゅうセキュリティホールが発見されてアップデートを余儀なくされるような bind と比較して安全であると言われています。

インストール


djbdns-1.05 の例です。

通常djbdnsを使用する際にはdaemontoolsを使用して監視、実行するので、daemontoolsをインストールしておきます。

まず、アーカイブをdjbdns の公式サイト からダウンロードし、展開します。

 % gzip -dc djbdns-1.05.tar.gz | tar xvf -
 % cd djbdns-1.05


コンパイル・インストールは以下の通り。

 % make
 % su
 # make setup check


なお、makeの時点でerrno関係でエラーが出ることがあります。
その際には、概ねerror.hを以下のように修正することで対応可能です。

 /*extern int errno;*/ ←削除
 #include <errno.h>    ←追加


tinydns, dnscache の実行ユーザとログ書き込み用ユーザを作成します。

 # useradd tinydns -d /dev/null -s /sbin/nologin
 # useradd dnslog -d /dev/null -s /sbin/nologin
 # useradd dnscache -d /dev/null -s /sbin/nologin


tinydns の設定


tinydns は自ドメインを管理するネームサーバとなります。
djbdns で提供されている tinydns のサービスディレクトリ作成コマンドを実行します。
※下記の例では IP アドレスを 111.111.111.111 としています。

 # tinydns-conf tinydns dnslog /var/tinydns 111.111.111.111 


daemontoolsにtinydnsを登録し、正常に起動されているか確認します。

 # ln -s /var/tinydns /service/tinydns
 # svstat /service/tinydns


これでtinydnsのサービスが開始されますが、有効なドメインはまだ登録されていない状態です。
ドメインを登録するには、/var/tinydns/root/data を編集し、make する必要があります。
/var/tinydns/root/data ファイルは tinydns 固有のフォーマットなのですが、あらかじめ用意されたコマンドで編集することも可能です。
以下、設定例です。

test1.com というNSレコードを設定。

 # ./add-ns test1.com 127.0.0.1


192.168.0.x の逆引きNSレコードを設定

 # ./add-ns 0.168.192.in-addr.arpa 127.0.0.1


www.test1.com という A レコードを設定

 # ./add-host www.test1.com 192.168.0.100


コマンド実行後は、makeする必要があります。


dnscache の設定


dnscache はその名の通り、DNS 情報をキャッシュするデーモンです。
キャッシュに無い場合には設定されている DNS サーバに問い合わせを行って DNS を解決します。

djbdns で提供されている dnscacheのサービスディレクトリ作成コマンドを実行します。
※下記の例ではIPアドレスを192.168.0.1 とします

 # dnscache-conf dnscache dnslog /var/dnscache 192.168.0.1


daemontoolsにdnscacheを登録し、正常にサービスが行われているか確認します。

 # ln -s /var/dnscache /service
 # svstat /service/dnscache
 # nslookup
 > server 192.168.0.1
 > www.yahoo.com 等


他のサーバからの参照を可能にするには、/var/dnscache/root/ip に参照可能にしたい IP をファイルとして追加します。
例えば、192.168.0.x からの参照を全てOKにするには、192.168.0 というファイルを作成すればOK。

また、キャッシュに無い情報を参照する際には、/var/dnscache/root/servers 以下の設定に従います。
デフォルトでは、いわゆるルートサーバと呼ばれる DNS サーバに問い合わせていくようになっています。
これをプロバイダ等の DNS サーバを参照させるようにするには、@ ファイルの内容を参照させる DNS サーバにし、

 # echo 1 > /var/dnscache/env/FORWARDONLY


とします。

お問い合わせは 掲示板 にて。