djbdns
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
とします。