HOME/ FreeBSD/ Domain Name Service (djbdns)
DNSの構築にdjbdnsを使った。
bindじゃなくてdjbdnsな理由はあんまりない。
djbdnsのページを見るといろいろ書いてあって、思想なども学ぶことができる。 ここでは作業ログを残す意味で記述をおこなう。
portsから次のソフトウェアをインストールする。
serviceというディレクトリを作成する。 ルートディレクトリに作成するので抵抗があるものの、 このディレクトリ配下にはシンボリックリンクしか作らないので容量的には問題が ないし、ルートディレクトリにある事でサービスという重要なものを扱っている感 じがよく出ているのではないか。
# mkdir /service # chmod 755 /service
このシェルスクリプトはdaemontoolが管理するサービスを監視するプログラム を起動する。
/etc/rc.localあたりに追加しておく。
----- /usr/local/bin/start-sv.sh ---- #!/bin/sh env - PATH=/usr/local/bin:/usr/sbin/:usr/bin:/bin csh -cf 'svscan /service &' -----
パーミッションを設定しとく。chmod u+xぐらいかな。
# rehash # start-sv.sh
---- /etc/resolv.conf ---- domain tokuda.net nameserver 192.168.100.2 ----
---- /etc/group ---- dns:*:9800: ----
---- /etc/passwd ---- dnscache:*:9800:9800::0:0:djbdns cache:/var/dns:/sbin/nologin dnslog:*:9801:9800::0:0:djbdns log:/var/dns:/sbin/nologin dns:*:9802:9800::0:0:djbdns:/var/dns:/sbin/nologin
クライアントから送信されるDNS Queryを192.168.100.2で起動している DNS Cacheが受け取る。
DNS Cacheは要求されているアドレスがプライベートネットワーク (192.168.100.xxx or xxx.tokuda.net) ならば 127.0.0.1で起動しているLocal DNSに名前を問い合わせ、 いわゆる外部への要求ならば外のサーバに問い合わせるという仕組みである。
内向けDNSとは、このドメイン (tokuda.net) に登録されているホストの名前解 決をするDNSである。
djbdnsではこのような用途のためのプログラムとしてtinydnsを利用する。
tinydnsを利用するためにtinydns-confを用いて設定ファイルの雛型を作る。
# mkdir /var/dns # tinydns-conf dns dnslog /var/dns/namedb 127.0.0.1
/serviceにシンボリックリンクを張る事でdaemontoolの管理下におく。
# ln -s /var/dns/namedb /service
正引き、逆引きのゾーンを作成する。
# cd /var/dns/namedb/root # ./add-ns tokuda.net 127.0.0.1 # ./add-ns 100.168.192.in-addr.arpa 127.0.0.1
作成されたゾーンのネームサーバ名が自動的に付与されるので、 自分の好みの名前に変更する (ここではa -> ns1)。
# vi data Before: .tokuda.net:127.0.0.1:a:259200 After: .tokuda.net.127.0.0.1:ns1:259200
名前解決したいホストを登録する。
# ./add-host kingg.tokuda.net 192.168.100.1 # ./add-host centaur.tokuda.net 192.168.100.2 # ./add-host jetworld.tokuda.net 192.168.100.10 # ./add-host waza.tokuda.net 192.168.100.20 # ./add-host happyman.tokuda.net 192.168.100.30 # ./add-host cutiepie.tokuda.net 192.168.100.40 # ./add-host pana.tokuda.net 192.168.100.31 # ./add-host c1vj.tokuda.net 192.168.100.32
エイリアスを登録する。
# ./add-alias www.tokuda.net 192.168.100.2
作成したデータをmakeしtinydnsに伝える。
# make
名前が引けるか確認する。djbdnsの作者によるとnslookupを使っちゃダメだそ うな。
# host waza.tokuda.net 127.0.0.1
ローカルキャッシュサーバとは、いわゆる外部のホストの名前解決を行うDNSで ある。
djbdnsではこのような用途のためのプログラムとしてdnscacheを利用する。
まず、dnscacheを利用するためにdnscache-confを用いて設定ファイルの雛型を 作る。
# dnscache-conf dnscache dnslog /var/dns/dnscache 192.168.100.2 # ln -s /var/dns/dnscache /service
ローカルキャッシュサーバに接続可能なホストを定義する。 ここでは192.168.100.xxx のホスト群を許可している。
# touch /var/dns/dnscache/root/ip/192.168.100
特定のドメインに対する要求を特定のネームサーバに問い合わせるようにする。 ここではtokuda.netを先に設定した127.0.0.1で起動している内向けDNSに向けている。
# echo 127.0.0.1 > /var/dns/dnscache/root/servers/tokuda.net # echo 127.0.0.1 > /var/dns/dnscache/root/servers/1.0.0.127.in-addr.arpa # echo 127.0.0.1 > /var/dns/dnscache/root/servers/100.168.192.in-addr.arpa
$Lastupdate: Mon Mar 18 02:30:38 2002 $