HOME/ FreeBSD/ Domain Name Service (djbdns)

Domain Name Service (djbdns)

DNSの構築にdjbdnsを使った。

bindじゃなくてdjbdnsな理由はあんまりない。

djbdnsのページを見るといろいろ書いてあって、思想なども学ぶことができる。 ここでは作業ログを残す意味で記述をおこなう。

インストール

portsから次のソフトウェアをインストールする。

daemontoolの設定

daemontool用のディレクトリを作る

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ぐらいかな。

作成したシェルスクリプトを実行し/serviceディレクトリを監視させる

	# rehash
	# start-sv.sh

/etc/resolv.confを編集しローカルキャッシュサーバを参照するように修正する

	---- /etc/resolv.conf ----
	domain		tokuda.net
	nameserver	192.168.100.2
	----

djbdnsの設定

djbdns用のアカウントとユーザグループを作成する

	---- /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を構築する

内向け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


HOME/ FreeBSD/ DomainNameService (djbdns)

$Lastupdate: Mon Mar 18 02:30:38 2002 $