トップ > 興味のあること > コンピュータ > ソフトウェア

djbdns

http://djbdns.qmail.jp/

djbdnsはDNSサーバー実装の一つ。 qmailの作者が作成した。 キャッシュサーバーとコンテンツサーバーを別のプログラムにしている。 設定はひとつのファイルで行うのではなく、 複数のファイルやディレクトリに分散している。 IPアドレスなどを羅列していくだけなので、 bindよりも楽かもしれない。 daemontoolsとの組み合わせを前提としているようだが、 FreeBSDならインストールはports一発である。

2004年8月14日

dnscache

まずはキャッシュサーバー。

 $ dnscache-conf account logaccount /usr/local/var/dnscache 192.168.0.1

accountはdnscacheを動かすアカウント。 dns関係で一つ用意しておけばよさそう。

logaccountはロギング用のアカウント。 daemontoolsに入っているmultilogというプログラムを動かすアカウントである。 これもdns関係でまとめて一つ用意しておく。

/usr/local/var/dnscacheはワーク用ディレクトリ。 起動用スクリプトやログ、設定ファイルが配置される。

最後に自分のIPアドレス。 省略可能だが、 複数のネットワークインターフェイスを持っているときには指定した方が無難である。

/usr/local/var/dnscache/root/servers/@には、 ルートサーバーが列挙してある。 最新のものかどうか確認すること。 BとかJとかの変更は反映されていないようである。

/usr/local/var/dnscache/root/ip以下には、 アクセスを許可するIPアドレスと同じ名前のファイルを作っておく。 中身は空でかまわないので、

 $ touch 192.168.1

とかでいい。 ドキュメントによれば、 キャッシュを一つにまとめるのと、 個々のマシンがキャッシュをもつのと、 どちらが効率いいのか、 ケースバイケースで一概には決められないそうだ。 しかし、LAN内のマシンがWindowsばっかりだったりすると、 キャッシュはひとつにしたほうが楽だろう。

tinydns

ついでコンテンツサーバー。

 $ tinydns-conf account logaccount /usr/local/var/ldns 127.0.0.1
 $ tinydns-conf account logaccount /usr/local/var/gdns [グローバルIPアドレス]

ここで問題なのが、 コンテンツサーバーとキャッシュサーバーは同じポートで待ち受けるので、 IPアドレスを変える必要があること。 *Windowsマシンからの問い合わせに答えるためにはキャッシュサーバーがプライベートIPアドレスな必要がある。

  • 外部向けのコンテンツサーバーはグローバルIPアドレスに割り当てればいい。
  • 内部向けのコンテンツサーバーは……。

でしばらく悩んで試行錯誤してから、

内部向けコンテンツサーバー 127.0.0.1
外部向けコンテンツサーバー [グローバルIPアドレス]
キャッシュサーバー 192.168.0.1

で動かし、 キャッシュサーバーたるdnscacheにakiyama.nu関係の問い合わせが来たら、 127.0.0.1に聞くように設定した。 具体的には /usr/local/var/dnscache/root/servers/akiyama.nu に127.0.0.1と書き込んでおいた。 後は /usr/local/var/gdns/root/data に

 .akiyama.nu:221.116.88.186:a:259200
 .186.88.116.221.in-addr.arpa:221.116.88.186:a:259200
 .akiyama.nu:221.116.88.187:b:259200
 .187.88.116.221.in-addr.arpa:221.116.88.187:b:259200
 @akiyama.nu::aspmx.l.google.com:1:86400
 @akiyama.nu::alt1.aspmx.l.google.com:5:86400
 @akiyama.nu::alt2.aspmx.l.google.com:5:86400
 @akiyama.nu::aspmx2.googlemail.com:10:86400
 @akiyama.nu::aspmx3.googlemail.com:10:86400
 @akiyama.nu::aspmx4.googlemail.com:10:86400
 @akiyama.nu::aspmx5.googlemail.com:10:86400
 =a.ns.akiyama.nu:221.116.88.186:86400
 =b.ns.akiyama.nu:221.116.88.187:86400
 =share.akiyama.nu:221.116.88.188:86400
 +sun.akiyama.nu:221.116.88.186:86400
 +mercury.akiyama.nu:221.116.88.187:86400
 +www.akiyama.nu:221.116.88.186:86400
 +news.akiyama.nu:221.116.88.186:86400
 +tomoaki.akiyama.nu:221.116.88.186:86400

とか書き込んで、makeを実行すればOK。

2009年2月20日

いつの間にかFreeBSDのportsでIPv6対応パッチが取り込まれたようだ。 make configでIPv6対応にチェックを入れてmake; make install。 さて、テスト用のアドレスはどうしようか。