ルートDNSサーバをつくってみる

実験環境用にルートDNSサーバをBIND9 on Debian GNU/Linux(etch)でつくってみたのでメモ。やりかたはオライリーのBINDの本に載ってるものそのまま。物理的なPCではなくて、Parallels Desktopでつくった。

インストール

OS自体はネットワークインストールのCDイメージでインストール。途中tasksel?でインストールするパッケージを選ぶところは、なんとなく全部チェックを外した。自分で必要なのだけ使うことにする。
OSインストールが終わったら、aptでbind9・dnsutilsをインストールする。
全部終わったら、IPアドレスをスタティック設定にする。やらなくてもいいと思うけど、あとでHost Only Networkに接続するので、このときに設定するIPアドレスは、Host Only Networkのものにする。うちのParallels DesktopのHost Only NetworkはDHCPで10.37.129.1〜10.37.129.254に割り当てしてしまうようになってたので、10.37.129.1〜10.37.129.127に変更しておく。変更箇所はParallelsの【Preference】-【Network】。今回は、このサーバは【10.37.129.128】に設定。設定方法はこのへん参照。

BINDの設定

/etc/bind/db.rootと/etc/bind/named.confを念のためバックアップしておく。

named.conf

まず、/etc/bind/named.confを下記のように変更。

zone "." {
  type hint;
  file "/etc/bind/db.root";
};

こうなってるところを、

zone "." {
  type master;
  file "/etc/bind/db.root";
};

に変更する。つまり、【.】のmasterにする。

db.root

/etc/bind/db.rootはこんな内容にする。

$TTL 1d
. IN SOA debian-etch-1.s0r5.jp. hostmaster.s0r5.jp. (
  1     ; Serial
  3h    ; Refresh
  1h    ; Retry
  1w    ; Expire
  1h )  ; Negative Cache TTL
  IN  NS debian-etch-1.s0r5.jp.

debian-etch-1.s0r5.jp. IN A 10.37.129.128

s0r5.jp. IN NS debian-etch-2.s0r5.jp.

debian-etch-2.s0r5.jp. IN A 10.37.129.129

129.37.10.in-addr.arpa. IN NS debian-etch-2.s0r5.jp.

debian-etch-2.s0r5.jpに関しては、あとで別につくる。
ここまで設定して、/etc/init.d/bind9 restartでDNSサーバ再起動。

このルートDNSサーバを使うDNSサーバの設定

別のDNSサーバで、さっきつくったルートDNSサーバを使うようにするには、Debian GNU/Linuxの場合、そのサーバの/etc/named/db.rootを下記のようにする。

. 9999999 IN NS debian-etch-1.s0r5.jp.
debian-etch-1.s0r5.jp. 9999999 IN A  10.37.129.128

あと、debian-etch-2.s0r5.jpは、s0r5.jp.と129.37.10.in-addr.arpa.も委任されてるので、/etc/bind/db.s0r5.jpと/etc/bind/db.10.37.129もつくる。

db.s0r5.jp

こんな感じ。このへんからはごく普通のDNSサーバと同じ。

$TTL 1d
s0r5.jp. IN SOA debian-etch-2.s0r5.jp. hostmaster.s0r5.jp. (
  1     ; Serial
  3h    ; Refresh
  1h    ; Retry
  1w    ; Expire
  1h )  ; Negative Cache TTL
s0r5.jp.  IN  NS debian-etch-2.s0r5.jp.

debian-etch-1.s0r5.jp. IN A 10.37.129.128
debian-etch-2.s0r5.jp. IN A 10.37.129.129
db.10.37.129

逆引きもとくに特殊な設定はなし。

$TTL 1d
129.37.10.in-addr.arpa. IN SOA debian-etch-2.s0r5.jp. hostmaster.s0r5.jp. (
  1     ; Serial
  3h    ; Refresh
  1h    ; Retry
  1w    ; Expire
  1h )  ; Negative Cache TTL
129.37.10.in-addr.arpa.  IN  NS debian-etch-2.s0r5.jp.

128.129.37.10.in-addr.arpa. IN PTR debian-etch-1.s0r5.jp.
129.129.37.10.in-addr.arpa. IN PTR debian-etch-2.s0r5.jp.
named.conf

named.confも忘れずに変更しておく。Debian GNU/Linuxの場合は/etc/bind/named.conf.localに追加。実は最初コレを書き換え忘れててなんで動かないんダーって悩んでた(汗

zone "s0r5.jp." {
  type master;
  file "/etc/bind/db.s0r5.jp";
};
zone "129.37.10.in-addr.arpa." {
  type master;
  file "/etc/bind/db.10.37.129";
};

ほんとは直接設定ファイルをとってきてコピペすればいいんだけど、手で書き写してしまったのでtypoがあるかも。あったら指摘してください。
そういえば、ホスト側のmacとはつながってるわけだからFTPで送ればいいのか。ここまで書いちゃったから面倒なのでこのままにする。