djbdns で簡単に安全な DNS 環境を構築

djbdns とは?

D.J.Bernsitein さんが開発した DNS パッケージです.キャッシュ ( リゾルバ ) とDNS サーバが分かれているのが特徴です.
各プログラムが単純な構成をしているので,動作が軽いのも特徴の一つです.

djbdns のインストール

まずは,djbdns をインストールするにあたり,ユーザ,グループを作成します.作成されたユーザで djbdns のソフトウェア達は動作します.
pw groupadd dns -g 65200
pw useradd dnscache -u 65200 -g dns -c "DJB dnscache" -d /var/dns -s /sbin/nologin
pw useradd dnslog -u 65201 -g dns -c "DJB dnscache" -d /var/dns -s /sbin/nologin
pw useradd dns -u 65202 -g dns -c "DJB dnscache" -d /var/dns -s /sbin/nologin

daemontools をインストールします.daemontools とは UNIX でのサービス(デーモン)を管理する為のツール集です.
daemontools のダウンロードはhttp://cr.yp.to/daemontools/daemontools-0.76.tar.gzからダウンロードして下さい.
ダウンロードした tarball を展開すると,「admin」というディレクトリが作成され,この中に「daemontools-0.76」というディレクトリがあります.
このディレクトリを 「/usr/local」にコピーして,コンパイル,インストールを行います.
インストール後,リブートもしくは,「/etc/rc.local」を手で実行すると,daemontools のサービスが起動します.
tar zxvf daemontools-0.76.tar.gz
cp -R admin/daemontools-0.76 /usr/local
cd /usr/local/daemontools-0.76
./package/install
sh /etc/rc.local

djbdns をインストールします. djbdns のダウンロードはhttp://cr.yp.to/daemontools/daemontools-0.76.tar.gzからダウンロードして下さい.
djbdns のコンパイル,インストールは「make」を利用します.
tar zxvf djbdns-1.05.tar.gz
cd djbdns-1.05
make
make setup check
mkdir /var/dns

キャッシュ(リゾルバ)サーバを動かす

一番多い dns サーバの利用として,キャッシュ(リゾルバ)サーバがあると思います.
キャッシュサーバとは,ホスト名「www.wakhok.ac.jp」の IP アドレスは「202.11.100.3」と検索して,その結果を自分が保持し,クライアントにその結果を渡すサーバの事です.
検索結果はキャッシュされ,キャッシュにあったものは自分が答え,無いものはネームサーバに問い合わせに行きます.
djbdns はキャッシュサーバとネームサーバは完全に分離しているので,動作させるまではとても簡単です.
dnscache-conf プログラムを実行し,dnscache の必要な設定及び,作業領域を作成します.
その後,/service ( daemontoolsの監視領域 ) へ symlink を作成します.
dnscache-conf dnscache dnslog /var/dns/dnscache
ln -s /var/dns/dnscache /service/dnscache

約5秒程で,dnscache プログラムが動作するはずです.
/etc/resolv.conf を書き換えて,dnscache が正常に動作しているか確認してみます.
以下の例では,「www.google.com」を host コマンドで調べています.
vi /etc/resolv.conf
nameserver 127.0.0.1

host www.google.com
www.google.com is a nickname for www.google.akadns.net
www.google.akadns.net has address 64.233.167.104
www.google.akadns.net has address 64.233.167.99

自ネットワーク用にキャッシュ(リゾルバ)サーバを動かす

上の場合,自ホストのみがキャッシュサーバを利用できます.
これは,dnscache-conf プログラムの実行の際に,インターフェースを指定しなかった為,デフォルト値 (127.0.0.1) が使用される為です.
UNIX 系の OS の場合は,各ホストに上の設定を行えば良いのですが,Windows 等では,キャッシュサーバを動作出来ないので,Windows向けのキャッシュサーバとして用意する必要があります
dnscache プログラムで Windows 向けにキャッシュサーバを動作させる場合は,次の様な作業を行ってください.
dnscache-conf dnscache dnslog /var/dns/dnscache IPアドレス

dnscache の利用を許可したいネットワーク,ホストを /var/dns/dnscache/root/ip 以下にファイルとして用意します.
touch コマンドでファイルを作ってあげるだけで良いです.
以下の場合,192.168.0 のネットワークに dnscache の利用を許可します.
touch /var/dns/dnscache/root/ip/192.168.0

許可するネットワーク,ホストのファイルを作成したら,dnscache を動作させます.
ln -s /var/dns/dnscache /service/dnscache

約5秒程で,dnscache プログラムが動作するはずです.
/etc/resolv.conf を書き換えて,dnscache が正常に動作しているか確認してみます.
vi /etc/resolv.conf
nameserver IPアドレス

また,Windows 等で,ネームサーバのIPアドレスを dnscache の動作しているマシンの IPアドレスに書き換えて,ping,nslookup 等でテストしてみます.

Index に戻る


http://www.seichan.org/ 02/22/2005