CentOS5.0で内向けDNSサーバを作る

プライベートLAN上のホストに対して、インターネット接続のための名前解決とプライベートLAN上の名前解決を提供する。外部からの(外向けの)名前解決はダイナミックDNS環境なので不要、というか出来ない。

①必要なパッケージをインストール。なおOSの初期インスト時にServersを選んだ場合ははじめから入っているようだ。

[root@ml115 ~]#yum install bind
[root@ml115 ~]#yum install bind-libs
[root@ml115 ~]#yum install bind-chroot
[root@ml115 ~]#yum install bind-utils

今回はchrootをインストールしているので、設定ファイル類は/etcではなく/var/named/chroot/etc/におかれる。同様にゾーンファイル類は/var/namedではなく/var/named/chroot/var/namedにおかれる。

また、初期状態では/var/named/chroot/etc/named.caching-nameserver.confという設定ファイルが使われ、自ホスト専用の名前解決サーバとして動作するが、named.confを作ることによってそちらを優先して読み込むようになる。/etc/rc.d/init.d/namedを参照。

②設定ファイルを作る。

[root@ml115 ~]# vi /var/named/chroot/etc/named.conf
acl "privatenet" {
        127.0.0.1;
        192.168/16;
};

options {
        directory "/var/named";
        allow-query{privatenet;};
};

controls {
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};

include "/etc/rndc.key";

view "internal" {
        match-clients { localhost; privatenet; };
        recursion yes;
        include "/etc/named.rfc1912.zones";
        zone "grandarbre.net" {
                type master;
                file "grandarbre.net.lan";
                allow-update { none; };
        };
        zone "0.168.192.in-addr.arpa" {
                type master;
                file "0.168.192.in-addr.arpa.db";
                allow-update { none; };
        };
};

③正引きのための設定

[root@ml115 ~]# cat /var/named/chroot/var/named/grandarbre.net.lan
$TTL    86400
@       IN      SOA     grandarbre.net. root.grandarbre.net.(
                        2007102900      ; serial
                        3600            ; refresh (1 hour)
                        900             ; retry (15 minutes)
                        604800          ; expire (1 week)
                        86400           ; negative (1 day)
)
        IN      NS              grandarbre.net.
        IN      MX      10      grandarbre.net.
        IN      A               192.168.0.2
r60e    IN      A               192.168.0.3
www1    IN      A               192.168.0.18
ns1     IN      A               192.168.0.20
storage1 IN     A               192.168.0.24
www     IN      CNAME           www1
[root@ml115 ~]#

④逆引きのための設定

[root@ml115 ~]# cat /var/named/chroot/var/named/0.168.192.in-addr.arpa.db
$TTL    86400
@       IN      SOA     grandarbre.net. root.grandarbre.net.(
                        2007102900      ; serial
                        3600            ; refresh (1 hour)
                        900             ; retry (15 minutes)
                        604800          ; expire (1 week)
                        86400           ; negative (1 day)
)
        IN      NS              grandarbre.net.
2       IN      PTR             grandarbre.net.
18      IN      PTR             www1.grandarbre.net.
20      IN      PTR             ns1.grandarbre.net.
24      IN      PTR             storage1.grandarbre.net.
[root@ml115 ~]#

⑤namedの設定ファイル再読み込み

[root@ml115 ~]#service named reload
Reloading named:                                           [  OK  ]

⑥DNSサーバ上で動作確認

[root@ml115 ~]# dig @localhost www.grandarbre.net

; <<>> DiG 9.3.3rc2 <<>> @localhost www.grandarbre.net
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64496
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.grandarbre.net.            IN      A

;; ANSWER SECTION:
www.grandarbre.net.     86400   IN      CNAME   www1.grandarbre.net.
www1.grandarbre.net.    86400   IN      A       192.168.0.18

;; AUTHORITY SECTION:
grandarbre.net.         86400   IN      NS      grandarbre.net.

;; ADDITIONAL SECTION:
grandarbre.net.         86400   IN      A       192.168.0.2

;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Oct 30 18:59:51 2007
;; MSG SIZE  rcvd: 101

[root@ml115 ~]#

⑦クライアントから動作確認

[root@www1 ~]# dig www.grandarbre.net

; <<>> DiG 9.3.3rc2 <<>> www.grandarbre.net
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55587
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.grandarbre.net.            IN      A

;; ANSWER SECTION:
www.grandarbre.net.     86400   IN      CNAME   www1.grandarbre.net.
www1.grandarbre.net.    86400   IN      A       192.168.0.18

;; AUTHORITY SECTION:
grandarbre.net.         86400   IN      NS      grandarbre.net.

;; ADDITIONAL SECTION:
grandarbre.net.         86400   IN      A       192.168.0.2

;; Query time: 3 msec
;; SERVER: 192.168.0.2#53(192.168.0.2)
;; WHEN: Tue Oct 30 19:00:37 2007
;; MSG SIZE  rcvd: 101

[root@www1 ~]#

各サーバの/etc/resolv.confには今回設定したDNSサーバを書く。

[root@www1 ~]# cat /etc/resolv.conf
nameserver 192.168.0.2
search grandarbre.net

これで各サーバの/etc/hostsからlocalhost以外は消すことが出来る。

なお、設定を変更してnamedをreloadしても反映されるまでしばらくかかった。キャッシュか何かが残っているのかもしれない。