Practice of Programming

プログラム とか Linuxとかの話題

djbdns(tinydns & dnscache)インストール

自宅サーバで、内側からだとプライベートIPで参照しないといけないような環境だと、外出先では/etc/hosts書き換えとかめんどくさいので、インストール。後、ローカル用に好きなドメインを持てたほうが開発の時に楽。


Bind9にしようかとも思ったんだけど、慣れてないからめんどくさくて。


下記のコマンドで/etc/apt/sources.listに追加。

% echo "deb http://fr.archive.ubuntu.com/ubuntu intrepid main universe" >> /etc/apt/sources.list

apt-get でインストール

% apt-get update
% apt-get install daemontools
% apt-get install djbdns

daemontools-runを入れないといけないのだけど、/etc/inittabがないとこける。
Ubuntuって、inittabがない。upstartというのが使われているそうだ。http://lab.urume.net/2007,0227,612.html


とりあえず、こけないようにファイルを作ってからインストール。

% touch /etc/inittab
% apt-get install daemontools-run
% mv /etc/inittab /etc/inittab.daemontools

ユーザーとグループの作成

% addgroup --system djbdns
% adduser  --system tinydns  --ingroup djbdns --no-create-home
% adduser  --system dnscache --ingroup djbdns --no-create-home
% adduser  --system dnslog   --ingroup djbdns --no-create-home

dnscache設定。IPは適当に。

% dnscache-conf dnscache dnslog /var/dnscache 192.168.0.1
% cd /var/dnscache/root
% touch ip/192.168
% echo "127.0.0.1" > servers/your.local.domain

touchしているのは、192.168からアクセスされてもOKな設定。
your.local.domain というファイルは、この名前のドメインは、127.0.0.1に投げてねっていう意味。
下で、tinydnsのIPを設定してますが、それにあわせましょう。


tinydns設定(IPは適当にだけど、dnscacheとは別のIPにしないと駄目です)

% tinydns-conf tinydns dnslog /var/tinydns 127.0.0.1
% cd /var/tinydns/root
% ./add-ns your.local.domain 127.0.0.1
% ./add-host your.local.domain 192.168.0.1
% make

your.local.domain のNSレコードが127.0.0.1で、
your.local.domain のAレコードは、192.168.0.1と指定。

サービスを登録

% sudo update-service --add /var/dnscache/ dnscahce
% sudo update-service --add /var/tinydns/ tinydns

確認

% svstat /etc/service/tinydns
% svstat /etc/service/dnscache

svc コマンドの使い方は、上から、起動、停止、再起動。

% svc -u /etc/service/NAME
% svc -d /etc/service/NAME
% svc -t /etc/service/NAME

inittabがほったらかしだったので、下記のURLを参考にファイルを作る。
http://fxp0.org.ua/2007/apr/21/svscanboot-and-upstart-ubuntu-feisty/

% cat > /etc/event.d/svscanboot
# svscanboot
#

start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5

stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec svscanboot

で、最後に、お使いのルータとかDHCPDの設定で、DNSの場所をdnscacheのIPにしてやればOK。