FreeBSD djbdnsをinstallしてみた。
起動・管理にdaemontoolsが必要なので、あらかじめinstallしておくこと。
dnscacheとdnslogとtinydnsいうユーザーを作ります。groupはdnsとします。
# vipw dnscache:*:81:81::0:0:DNS cache:/noexistent:/sbin/nologin dnslog:*:82:81::0:0:DNS log:/noexistent:/sbin/nologin tinydns:*:83:81::0:0:DNS log:/noexistent:/sbin/nologin # vi /etc/group dns:*:81:UIDとGIDは他のものと重複しないようにしておきます。
installはportsを活用させてもらいます。
# cd /usr/ports/net/djbdns # make install
DNSは複雑でわかりにくいのですが、djbdnsは
問い合わせに答える tinydns
と
問い合わせを行う dnscache
の2つで構成されます。
tinydnsとdnscacheは別々のIP addressで動かす必要があります。
ここでは以下のような方針でいきます。
192.168.0.1
----対外的DNS server-------FreeBSD BOX------LAN------clients
vr0 127.0.0.1 dc0
#!/bin/sh
#
rm -rf /var/service/tinydns
rm -rf /var/djbdns/tinydns
/usr/local/bin/tinydns-conf tinydns dnslog /var/djbdns/tinydns 127.0.0.1
cd /var/djbdns/tinydns/root
./add-ns makioka.local 192.168.0.1
./add-ns 0.168.192.in-addr.arpa 192.168.0.1
./add-host mail.makioka.local 192.168.0.1
略
./add-host dhcp220.makioka.local 192.168.0.220
make
ln -s /var/djbdns/tinydns /var/service/tinydns
#
#!/bin/sh # rm -rf /etc/dnscache rm -rf /var/service/dnscache /usr/local/bin/dnscache-conf dnscache dnslog /etc/dnscache 192.168.0.1 ln -s /etc/dnscache /var/service/dnscache touch /etc/dnscache/root/ip/192.168.0 # makioka.local と 0.0.168.192.in-addr.arpa については 127.0.0.1 に問い合わせる echo 127.0.0.1 > /etc/dnscache/root/servers/makioka.local echo 127.0.0.1 > /etc/dnscache/root/servers/0.0.168.192.in-addr.arpa #
# vi /etc/resolv.conf nameserver 192.168.0.1LAN上のクライアントはdnscacheが動いている 192.168.0.1 をnameserverとして使用します。
dnscacheとtinydnsが動作しているかの確認には svstat を使用します。
# svstat /var/service/tinydns /var/service/tinydns/: up (pid 18493) 1331 seconds # svstat /var/service/dnscache /var/service/dnscache/: up (pid 18477) 1573 seconds
/etc/resolv.conf で指定した nameserver へ問い合わせてみます。
domainからIP addressを求めるには dnsip を、
IP addressからdomainを求めるには dnsnameを使用します。
# dnsip www.freensd.org 216.136.204.21 # dnsname 216.136.204.21 freefall.freebsd.org