djbdnsを試してみた

今までBINDしか使ったことがない、というかそのBINDもよく分かってなかったんですが、ふと思い立ってdjbdns自宅サーバに導入してみました。

djbdnsの大きな特徴は、

  • 権威を持つゾーン情報のアナウンスを行うtinydns
  • DNSキャッシュ(リゾルバ)として機能するdnscache

のように機能毎に別々のソフトウェアで構成されていること。

BINDでは1つのIPアドレスで上記の2つの機能を提供しますが、djbdnsは「役割が違うんだから別のIPで動かすべき」という思想を持っています。名前情報を伝える本来のDNSの役割と、DNSキャッシュサーバは(普通は)それぞれ違うIPアドレスで動作させることになります。別のサーバを立ててもいい(本来はそれを想定しているのかな)けど、IPエイリアスで動作させても問題なしです。

具体的な設定などはこのあたりを参考に。

実際の所、どちらがどうというのはよく分からないと、というか自分の使用範囲では今のところ差が出るようなことはないかなという印象。djbdnsの設定などは確かになるほどと思うところもあるけどインストールが若干面倒でちょっと特殊な雰囲気があるし、情報もBINDに比べて少ないです。

djbdnsの設定ファイルは記述が簡潔で分かりやすい、ということだけど内部向けと外部向けでゾーン情報を分ける記述が今ひとつしっくりこない。

%lan:192.168.10
%wan

+example.com:192.168.10.10::lan
+example.cpm:XXX.XXX.XXX.XX::wan

という具合にやるらしいんだけど、いちいちlanとかwanとか付けるのもあまりおいしくない感じがいます。何かまとめて書ける方法とかないのかな。BINDだとviewを2つ用意してやって、内部向けと外部向けで別々のゾーンファイルを指定出来るから切り分けは楽。

慣れの部分も大きいんだろうけど、BINDはyumでサクっと入るし、ディレクトリの管理も「まぁこういう感じだよね」というのが分かりやすい印象です。対するdjbdnsはパッケージは用意されてないし、daemontools(仮想CDのアレとは関係ない)も入れて、その上で稼働させるという特殊な形なので最初の一歩が踏み出しにくい感があります。とは言え思想がハッキリしている分、一度分かってしまえば、把握しやすいかも知れません。

まだどちらを使う方が自分にとっていいのか分かりませんが、DNSというものについて考えるいい機会にはなりました。今までDNSDNSキャッシュの違いをそこまで明確に意識していなかったので、かなり頭の中での理解は進んだ気がします。

今のところ、Xenの仮想サーバで両方別々に動かしてるけど、どちらで運用するかは悩みどころ。djbdnsが「BINDはダメだー」って盛り上がっていた頃とはBINDのバージョンも違うから、一概には比較出来ないようだし、難しいところですね。無難に行くならBINDの方が情報も見付けやすいし、誰でも(というと語弊があるかも知れないけど)使えるというのも大きなメリットかな。とにかくしばらく平行して使ってみよう。

あと、BINDの設定はこの本が分かりやすく、かつ各パラメータの内容も詳しく解説してくれていたので助かりました。ネットだと「とりあえずこうしとけ」的なサンプルは簡単に見付かるけど、その意味を理解しようとするとやっぱり書籍のまとまった情報というのはありがたいですね。

BIND9によるDNSサーバ構築

BIND9によるDNSサーバ構築