bind9 の設定

週末は飲むぞ〜!

Sarge のインストール時にネームサーバも一緒にインストールする設定にしたので、すでに bind9 が入っている。まずはローカルネットワークの DNS として設定をしておこう。ドメイン名は paraches.com だ!

bind9 で設定に必要なファイルは /etc/bind に置かれている。最初に触るのは named.conf.local。ここで zone の設定がどこにあるかを記述する。

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

zone "paraches.com" {
        type master;
        file "/etc/bind/paraches.com";
};

zone "1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/paraches.com.rev";
};

正引きと逆引きのファイルはそれぞれ paraches.com と paraches.com.rev とする。
まずは paraches.com

$TTL 86400
@               IN      SOA     debian.paraches.com. root.paraches.com. (
                20060222        ; serial
                3600            ; refresh 1hr
                900             ; retry 15min
                604800          ; expire 1w
                86500           ; negative cache TTL 24hr
)

                IN      NS      debian.paraches.com.
                IN      MX 10   debian.paraches.com.
@               IN      A       192.168.1.66
debian          IN      A       192.168.1.66    ; Server
PPCG5           IN      A       192.168.1.15    ; G5
Win2K           IN      A       192.168.1.12    ; Win
www             IN      CNAME   debian

数字はよくある数字をそのまま使った。今後のことも考えてメール転送用の MX も入れておいた。あと web 用の wwww も CNAME で debian サーバに設定。
次は逆引きのファイル paraches.com.rev

$TTL 86400
@       IN      SOA     debian.paraches.com. root.paraches.com. (
        20060221        ; serial
        3600            ; refresh 1hr
        900             ; retry 16min
        604800          ; expire 1w
        3600            ; negative cache TTL minimum
)

        IN      NS      debian.paraches.com.
66      IN      PTR     debian.paraches.com.      ; server
15      IN      PTR     PPCG5.paraches.com.       ; G5
12      IN      PTR     Win2K.paraches.com.       ; Win

良くあるお手本をそのままコピー。
これで必要なファイルは揃ったから、設定を読み込ませて動作確認。

debian:/etc/bind# /etc/init.d/bind9 restart
Stopping domain name service: named.
Starting domain name service: named.
debian:/etc/bind# cat /var/log/daemon.log
...
Feb 22 23:30:32 localhost named[8523]: shutting down: flushing changes
Feb 22 23:30:32 localhost named[8523]: stopping command channel on 127.0.0.1#953
Feb 22 23:30:32 localhost named[8523]: stopping command channel on ::1#953
Feb 22 23:30:32 localhost named[8523]: no longer listening on 127.0.0.1#53
Feb 22 23:30:32 localhost named[8523]: no longer listening on 192.168.1.66#53
Feb 22 23:30:32 localhost named[8521]: exiting
Feb 22 23:30:35 localhost named[9812]: starting BIND 9.2.4 -u bind
Feb 22 23:30:35 localhost named[9812]: using 1 CPU
Feb 22 23:30:35 localhost named[9814]: loading configuration from '/etc/bind/named.conf'
Feb 22 23:30:35 localhost named[9814]: listening on IPv4 interface lo, 127.0.0.1#53
Feb 22 23:30:35 localhost named[9814]: listening on IPv4 interface eth0, 192.168.1.66#53
Feb 22 23:30:35 localhost named[9814]: command channel listening on 127.0.0.1#953
Feb 22 23:30:35 localhost named[9814]: command channel listening on ::1#953
Feb 22 23:30:35 localhost named[9814]: zone 0.in-addr.arpa/IN: loaded serial 1
Feb 22 23:30:35 localhost named[9814]: zone 127.in-addr.arpa/IN: loaded serial 1
Feb 22 23:30:35 localhost named[9814]: zone 1.168.192.in-addr.arpa/IN: loaded serial 20060221
Feb 22 23:30:35 localhost named[9814]: zone 255.in-addr.arpa/IN: loaded serial 1
Feb 22 23:30:35 localhost named[9814]: zone paraches.com/IN: loaded serial 20060222
Feb 22 23:30:35 localhost named[9814]: zone localhost/IN: loaded serial 1
Feb 22 23:30:35 localhost named[9814]: running

daemon.log を確認しているのは設定ファイルを問題なく読めているかどうか見るため。最初、paraches.com の最初に &TTL を書かないでいたらログにワーニングが入っていた。bind9 では必ず書かなければいけないらしい。
で、ちゃんと読み込めているのを確認したら実際に問い合わせ(?)をしてみる。まずは SOA から。

debian:/etc/bind# /usr/bin/dig @localhost paraches.com soa

; <<>> DiG 9.2.4 <<>> @ localhost paraches.com soa
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20295
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;paraches.com.                   IN      SOA

;; ANSWER SECTION:
paraches.com.            86400   IN      SOA     debian.paraches.com. root.paraches.com. 20060222 3600 900 604800 86500

;; AUTHORITY SECTION:
paraches.com.            86400   IN      NS      debian.paraches.com.

;; ADDITIONAL SECTION:
debian.paraches.com.     86400   IN      A       192.168.1.66

;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(localhost)
;; WHEN: Thu Feb 23 00:01:20 2006
;; MSG SIZE  rcvd: 106

次は NS のチェック。

debian:/etc/bind# /usr/bin/dig @ localhost paraches.com ns

; <<>> DiG 9.2.4 <<>> @ localhost paraches.com ns
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26232
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;paraches.com.                   IN      NS

;; ANSWER SECTION:
paraches.com.            86400   IN      NS      debian.paraches.com.

;; ADDITIONAL SECTION:
debian.paraches.com.     86400   IN      A       192.168.1.66

;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(localhost)
;; WHEN: Thu Feb 23 00:03:55 2006
;; MSG SIZE  rcvd: 65

で、次が正引き A のチェック。とりあえず debian で確認。

debian:/etc/bind# /usr/bin/dig @localhost debian.paraches.com a

; <<>> DiG 9.2.4 <<>> @ localhost debian.paraches.com a
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19852
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;debian.paraches.com.            IN      A

;; ANSWER SECTION:
debian.paraches.com.     86400   IN      A       192.168.1.66

;; AUTHORITY SECTION:
paraches.com.            86400   IN      NS      debian.paraches.com.

;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(localhost)
;; WHEN: Thu Feb 23 00:05:18 2006
;; MSG SIZE  rcvd: 65

逆引きのチェック

debian:/etc/bind# /usr/bin/dig @localhost -x 192.168.1.66

; <<>> DiG 9.2.4 <<>> @ localhost -x 192.168.1.66
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62576
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;66.1.168.192.in-addr.arpa.     IN      PTR

;; ANSWER SECTION:
66.1.168.192.in-addr.arpa. 86400 IN     PTR     debian.paraches.com.

;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400   IN      NS      debian.paraches.com.

;; ADDITIONAL SECTION:
debian.paraches.com.    86400   IN      A       192.168.1.66

;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(localhost)
;; WHEN: Thu Feb 23 00:07:17 2006
;; MSG SIZE  rcvd: 104

最後にキャッシュのチェック? なんとなくアップルで聞いてみた。

debian:/etc/bind# /usr/bin/dig @localhost www.apple.co.jp

; <<>> DiG 9.2.4 <<>> @ localhost www.apple.co.jp
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18596
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 0

;; QUESTION SECTION:
;www.apple.co.jp.               IN      A

;; ANSWER SECTION:
www.apple.co.jp.        3600    IN      A       17.254.2.185

;; AUTHORITY SECTION:
apple.co.jp.            86400   IN      NS      nserver.apple.com.
apple.co.jp.            86400   IN      NS      nserver2.apple.com.
apple.co.jp.            86400   IN      NS      nserver.asia.apple.com.

;; Query time: 4169 msec
;; SERVER: 127.0.0.1#53(localhost)
;; WHEN: Thu Feb 23 00:08:55 2006
;; MSG SIZE  rcvd: 130

これは結果が帰ってくるまでちょっと時間がかかった。
けど、とりあえず設定はちゃんとできているよう。Safari から http://wwww.paraches.com/ とやってみたりしてもちゃんと接続できる。
で、この設定ができるまで失敗した部分が2つ。1つ目は逆引きがちゃんとできなかった。これの原因は named.conf.local での逆引きの設定部分の間違い。ローカルネットワークは 192.168.1.xx なのだけど、良くあるお手本を見ながらそのままデフォルトで入ってる named.conf.local を編集したので 192.168.0.xx になっていたのだ。これで逆引きができなかった。

zone "0.168.192.in-addr.arpa" {		<- 0 のままだった
        type master;
        file "/etc/bind/paraches.com.rev";
};

2つ目は CNAME での失敗(?)。とにかく良くあるお手本を参考に設定したのに…なぜか wwww.paraches.com がうまくいかない。で、dig @localhost www.paraches.com してみた。そしたら

;; ANSWER SECTION:
www.paraches.com.        86500   IN      CNAME   debian.paraches.com.paraches.com.

だそうだ。paraches.com が多くない? というわけで、paraches.com の CNAME している場所の余計な(?)paraches.com を消したらうまくいった。

www             IN      CNAME   debian.paraches.com    <- 最初の駄目な行
www             IN      CNAME   debian          <- うまく動作した行

これはなんでかな〜? web 上で見つかる資料ってドメイン名まで書いてあるんだけどな〜。自分の設定ファイルのどこかに typo があるのかな?

というわけで、なんとかネームサーバの設定はとりあえず形になった。