djbdns on FreeBSD

[ Nob's Home | FreeBSD ]

FreeBSD djbdnsをinstallしてみた。
起動・管理にdaemontoolsが必要なので、あらかじめinstallしておくこと。

Information

djbdns の 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

networkの構成と設定の方針

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 

実際の作業

  • 127.0.0.1でLAN(192.168.0.0)を担当するtinydnsを作成
    以下のようなscriptで作成しました。
    #!/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
    #
    
  • 192.168.0.1でLAN(192.168.0.0)からの問い合わせに答えるキャッシュサーバーdnscacheを作成
    以下のようなscriptで作成しました。
    #!/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
    #
    
  • /etc/resolv.confの修正
    # vi /etc/resolv.conf
    	nameserver	192.168.0.1
    
    LAN上のクライアントは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
    


    [ Nob's Home | FreeBSD ]
    nob@makioka.y-min.or.jp