DNS(Domain Name System)サーバ の設定と運用

〜 bind 8.2.3 を用いて DNS サーバを運用するために 〜

文責  横畠 徳太・ 中神 雄一    タグ責  宮城洋介/横畠徳太

最新更新日:2001/07/6
email : yokohata@pspace.sci.hokudai.ac.jp

もくじ


0 DNS サーバ "yellow" 再構築ガイド

こちらをどうぞ (本文と一緒に読んで下さい)

1 DNS サーバとは

インターネットでは、すべてのコンピューターがIPアドレス (例えば 192.168.0.21)を使って通信しているが、ユーザーは 一般にホスト名(例えば www-ep.sci.hokudai.ac.jp)を使って 通信している。そこで、このホスト名とIPアドレスを対応させること のできるコンピュータが必要になる。このサービスを行うのが DNS(Domain Name System)サーバである。

DNSサーバは自分が管理すべき範囲(これをゾーンという)の すべてのホストの情報をもち、クライアントからの要求に回答する。 クライアントからの要求には、ドメイン名からIPアドレスを検索し てくれという要求、IPアドレスからドメイン名を検索してくれとい う要求がある.またDNSサーバは、電子メールの配送先の指定にも用 いられる。


2 bind 8.2.3 のインストール

まず bind を入手し、インストールする。 Linux Debian を使っている場合、 debian パッケージを用いる 方法が簡単である。debian パッケージは、 以下の ftp サイトから bind_8.2.3-0.potato.1_i386.deb を取ってきてインストールする。

ftp://security.debian.org/debian-security/dists/potato/updates/main/binary-i386/

あるいは、

ftp://ftp.isc.org/isc/bind/src/8.2.3
から以下のファイルを入手する。
bind-8.2-contrib.tar.gz
bind-8.2-doc.tar.gz
bind-8.2-src.tar.gz
patch1

3 bind 8.2.3 を使ったDNSサーバの設定

DNS サーバは通常、信頼性を確保するなどの理由から二重化構成をとり、 一つのゾーンを二つのネームサーバで管理する。これらの各々 を、優先順位によってプライマリ(一次) DNS サーバ、セカンダリ(二次) DNS サーバと呼ぶ。セカンダリ DNS サーバは常にプライマリ DNS サーバ から最新のドメイン情報をコピーし、プライマリ DNS サーバにトラブル があった場合にバックアップとしての機能を果たすことになる。

3.1 プライマリ DNS サーバの設定

プライマリ DNSサーバ を運用するにあたって設定すべきファイルは 次の5つである。

これらのファイルについて、例を用いて説明してゆく。 ただしここで例として使う架空のドメイン名、DNS サーバ名などは、 次の通りである。

ドメイン                  ep.sci.hokudai.ac.jp
プライマリ DNS サーバ     yellow.ep.sci.hokudai.ac.jp
セカンダリ DNS サーバ     blue.ep.sci.hokudai.ac.jp
サブネットアドレス        192.168.0.0

3.1.1 起動ファイル

起動ファイルとは、ネームサーバデーモンである named が最初に読みこむ 初期設定ファイルで、/etc ディレクトリに named.conf というファイル名で置いておく。

起動ファイル named.conf は、bind をインストールしたときに /etc ディレクトリにデフォルトで入っている named.boot ファイルを書き換えて、perl プログラムを用いて変換することで作成 することができる。まず、/etc/bind/named.boot ファイルを以下の ように書き換える。

 
directory                               /var/named   (1)

cache        .                          named.root   (2)

primary      ep.sci.hokudai.ac.jp       yellow.zone  (3)

primary      0.168.192.in-addr.arpa     yellow.rev   (4)

primary      0.0.127.in-addr.arpa       local.rev    (5)

このファイルの意味は次の通りである。

(1) DNS サーバ yellow の持つデータベースファイルが納められている ディレクトリ /var/named が示されている。

(2) ルートネームサーバに関する情報が記述されたファイルが /var/named/named.rootであることを示す。2項目のドット "."を忘れてはならない。

(3) ep.sci.hokudai.ac.jp ドメインに属するホストに関するデータ が書かれたファイルが/var/named/yellow.zone であることを示す。1項目の"primary"は、現在設定しようとして いるマシンがプライマリ DNS サーバであることを示す。

(4) yellow が管理しているサブネット 133.87.45 にあるマシンの IPアドレスをホスト名に関する情報が /var/named/yellow.rev ファイルにあることを示す。

(5) ループバックという、1台のマシンの中で使われる閉じたネットワークにおける 情報が/var/named/local.rev にあることを示す。 ループバックネットワークの ネットワークアドレスは127.0.0であり、localhostという自分 自身を指すホストがある。

次にこの named.boot ファイルを named.conf ファイルへ変換し、 /etc/named.conf を作成する。 変換には /usr/sbin にある named-bootconf という コマンドを用い、安全のため変換の作業は/tmp ディレクトリで 行なう。

# cd /etc/bind/
# cp named.boot /tmp
# cd /tmp
# named-bootconf < named.boot > named.conf
# cp named.conf /etc/bind/

以上の作業を行なうと次のような /etc/bind/named.conf が作成される。 "/* */"で囲まれた部分(2)、 行頭に"//"や"#"が付く文はコメント文である (1)

// generated by named-bootconf.pl   (1)

options {
        directory "/var/named";
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */   (2)
        // query-source address * port 53;
};

// 
// Boot file for name server
// 
// type         domain                  source          file

options {
       directory "/var/named";
};

zone "." {
        type hint;
        file "named.root";
};

zone "ep.sci.hokudai.ac.jp" {
        type master;
        file "yellow.zone";
};

zone "0.168.192.in-addr.arpa" {
        type master;
        file "yellow.rev";
};
zone "0.0.127.in-addr.arpa" {
        type master;
        file "local.rev";
};

(失敗談)
bind 4 のマニュアルを読んで、起動ファイルが /etc/named.boot だとばかり 思っていた。/etc/named.conf を書き換えることはしなかったので、 いつまでたっても bind がキャッシュサーバとしてしか 動作しなかった。

3.1.2 ルートネームサーバを参照するためのファイル

続いて、DNS サーバが参照するルートドメインのネームサーバのIPアドレスと 名前が書かれているファイルを用意する。anonymous ftp を利用して、以下の サイトから named.root ファイルを入手し、/var/named/ディレクトリに置く。

ftp://ftp.rs.internic.net/domain

3.1.3正びき用ゾーンファイル

次に、 DNS サーバ が管理しているゾーン (ドメイン "ep.sci.hokudai.ac.jp")に属するマシンの ホスト名に関する情報をもつファイル(正びき用ゾーンファイル)を用意する。 このファイルに含めることのできる情報(レコード)は次の通りである。

(Aレコード )
ゾーンに含まれるマシンの名前(ホスト名)と IP アドレスを対応づける。

(CNAMEレコード )
ゾーンに含まれるマシンの別名を定義する。

(MXレコード )
ゾーン含まれるマシンに届くメールを転送する転送先のマシンを定義する。

以上のような情報を次のような形式で /var/named/yellow.zone ファイル として作成する。

@  IN   SOA   yellow.ep.sci.hokudai.ac.jp. postmaster.ep.sci.hokudai.ac.jp. (  (1)  

               199904151             ;Serial
                604800               ;Refresh
                86400                ;Retry                   (2)  
                2419200              ;Expire
                604800 )             ;Default TTL   


                IN     NS      yellow.ep.sci.hokudai.ac.jp.   (3)  
                IN     A       192.168.0.30                   (4)  
                IN     MX      10 blue.ep.sci.hokudai.ac.jp.  (5)  

localhost       IN     A       127.0.0.1                      (6)  
yellow          IN     A       192.168.0.30
green           IN     A       192.168.0.29
white           IN     A       192.168.0.28
red             IN     A       192.168.0.27
www             IN     CNAME   red.ep.sci.hokudai.ac.jp.      (7)  
blue            IN     A       192.168.0.26
pspace          IN     A       192.168.0.25
                IN     MX      10 blue.ep.sci.hokudai.ac.jp.  (8)  

このファイルの意味は次の通りである。

(1) SOA(start of authority)の後には、 このデータのためのプライマリDNSサーバの名前、 ( yellow.ep.sci.hokudai.ac.jp.)、このデータの管理責任者の メールアドレス( postmaster.ep.sci.hokudai.ac.jp.)が書かれ ている。名前の最後に"."を付けること、メールアドレスの"@" を"."に変えることを忘れないように。

(2) セカンダリDNSサーバを設定するときに 必要となる情報である。ここではこの通り書いておく。";"以下は コメント文である。

(3) ドメイン ep.sci.hokudai.ac.jp の DNS サーバが yellow.ep.sci.hokudai.ac.jp であることを示す。

(4) ドメイン ep.sci.hokudai.ac.jp の DNS サーバの IPアドレスが 133.87.45.30 であることを示す。

(5) ドメイン ep.sci.hokudai.ac.jp 宛に 来たメールがメールサーバ blue.ep.sci.hokudai.ac.jp に届くこと を示す。

(6) ループバックネットワーク内での自分自身("localhost")のアド レスが 127.0.0.1 であることを示す。

(7) ホスト www.ep.sci.hokudai.ac.jp の 別名が red.ep.sci.hokudai.ac.jp であることを示す。

(8) ホスト pspace.ep.sci.hokudai.ac.jp に来たメールが blue.ep.sci.hokudai.ac.jp に届くことを示す。

3.1.4逆びき用ゾーンファイル

次に DNS サーバが管理しているゾーン (サブネット " 133.87.45 ")に属するマシンの、アドレスに関する 情報を持つファイル( /var/named/yellow.rev )を用意する。

このファイルでは、ゾーンに属するホストのIPアドレスをホスト名に対応 させる(PTR レコード)。 (1) ではサブネット 133.87.45 のドメイン名が ep.sci.hokudai.ac.jp であることを示している。

@   IN   SOA   yellow.ep.sci.hokudai.ac.jp. postmaster.ep.sci.hokudai.ac.jp. ( 

                   199904151        ;Serial
                    604800          ;Refresh
                    86400           ;Retry
                    2419200         ;Expire
                    604800 )        ;Default TTL

          IN     NS        yellow.ep.sci.hokudai.ac.jp.    
          IN     PTR       ep.sci.hokudai.ac.jp.               (1)  
30        IN     PTR       yellow.ep.sci.hokudai.ac.jp.
29        IN     PTR       green.ep.sci.hokudai.ac.jp.
28        IN     PTR       white.ep.sci.hokudai.ac.jp.
27        IN     PTR       red.ep.sci.hokudai.ac.jp.
26        IN     PTR       blue.ep.sci.hokudai.ac.jp.
41        IN     PTR       pspace.ep.sci.hokudai.ac.jp.

3.1.5ループバックの逆びき用ゾーンファイル

最後に、自分自身(localhost)を127.0.0 として認識するための ファイル(/var/named/local.rev)を用意する。

@   IN   SOA   yellow.ep.sci.hokudai.ac.jp. postmaster.ep.sci.hokudai.ac.jp. (

                199904151                 ; Serial
                   604800                 ; Refresh
                    86400                 ; Retry
                  2419200                 ; Expire
                    86400 )               ; Default TTL
;
        IN      NS      yellow.ep.sci.hokudai.ac.jp.
1       IN      PTR     localhost.

3.2 プライマリ DNS サーバの運用

3.2.1 bind の起動

以上5つのファイルが用意できたら、bind を起動する。root 権限で、 以下のコマンドを打ち込む。

# /etc/init.d/bind restart
そして、以下のメッセージがすぐに出ることを確認する。
Stopping domain name service: named.
Starting domain name service: named.

bind が正常に動作しているかどうかをきちんと確認するには、 syslogファイルに出力されたメッセージを見るとよい。syslog ファイル中の named に関係のある部分を抜きだして読む。

 
# grep named /var/log/daemon.log

設定に誤りがなければ次のようなメッセージが出る。

Sep 10 13:39:07 yellow named[11289]: starting.  named 8.1.2-T3B Sun Jan  3 23:0:10 MST 1999 ^Ibdale@rover:/home/bdale/debian/bind-8.1.2/target/bin/named
Sep 10 13:39:07 yellow named[11289]: cache zone "" (IN) loaded (serial 0) (1)
Sep 10 13:39:07 yellow named[11289]: master zone "ep.sci.hokudai.ac.jp" (IN) loded (serial 199909101) (2)
Sep 10 13:39:07 yellow named[11289]: master zone "0.0.127.in-addr.arpa" (IN) loded (serial 199908111) (3)
Sep 10 13:39:07 yellow named[11289]: listening on [127.0.0.1].53 (lo)
Sep 10 13:39:07 yellow named[11289]: listening on [133.87.45.70].53 (eth0)
Sep 10 13:39:07 yellow named[11289]: Forwarding source address is [0.0.0.0].144
Sep 10 13:39:07 yellow named[11290]: Ready to answer queries.

(1) は bind が /var/named/named.root をきちんと読み込んでいることを示す。

(2) は bind が /var/named/yellow.zone をきちんと読み込んでいることを示す。

(3) は bind が /var/named/local.rev をきちんと読み込んでいることを示す。

(1)〜(3)のいずれかでエラーが出ている場合、 それぞれのファイルに何らかの間違いがあるはずである。

3.2.2 bind の動作確認

次に、設定した DNS サーバのクライアントになって bind が正常に 動作しているか確かめる。クライアントが問い合わせる DNS サーバ のリストは、/etc/resolv.conf にある。今、DNS サーバであ る yellow が自分自身のクライアントになり、yellow の上で bind が正常に動いていることを確かめる。/etc/resolv.conf を以下のように書き換える。

nameserver 127.0.0.1               (1)
nameserver 192.168.0.30             
nameserver 192.168.0.26             
domain ep.sci.hokudai.ac.jp        (2)

(1) では、yellow が自分のマシン上 で動いている DNS サーバ (アドレスは 127.0.0.1 )のクライアントになることを示す。 参照するネームサーバは最大で3つまで登録できる。 (2)ではデフォルトドメインが ep.sci.hokudai.ac.jp であることを示している。

次に、実際に ネームサーバ yellow が正常に動作するかどうか を nslookup というツールを用いて確かめる。

$ nslookup
yellow の管理するドメインに属するマシンの名前やそれ以外の ドメインに属するマシンの名前を聞いてみて、きちんとそのマシ ンの IP アドレスを調べることができるかを確かめる。
> red    (1)

デフォルトドメインが ep.sci.hokudai.ac.jp であるため、 red とホスト名だけ聞く(1)と、 red.ep.sci.hokudai.ac.jp の IP を以下のように返す。

Server:  localhost
Address:  127.0.0.1

Name:    red.ep.sci.hokudai.ac.jp
Address:  192.168.0.27

どんなドメインに属するホストの IP アドレスでも調べることが できることを確かめる。

> www.nasada.go.jp
Server:  localhost
Address:  127.0.0.1

Non-authoritative answer:
Name:    yyy.nasada.go.jp
Address:  192.168.99.99
Aliases:  www.nasada.go.jp

IP アドレスを入れてホスト名が返って来ることも同様に調べる。

> 192.168.0.41
Server:  localhost
Address:  127.0.0.1

Name:    blues.ep.sci.hokudai.ac.jp
Address:  192.168.0.41

つぎに NS レコード、 MX レコード、 CNAME レコードがきちんと読み込まれているかを 確かめる。

>set type=NS
>ep.sci.hokudai.ac.jp
Server:  localhost
Address:  127.0.0.1

ep.sci.hokudai.ac.jp    nameserver = yellow.ep.sci.hokudai.ac.jp
ep.sci.hokudai.ac.jp    nameserver = blue.ep.sci.hokudai.ac.jp
epns.ep.sci.hokudai.ac.jp       internet address = 192.168.0.26
nsns.ep.sci.hokudai.ac.jp     internet address = 192.168.0.30

ep.sci.hokudai.ac.jp ドメインには3つのサーバが登録されていることが分かる
> set type=MX                 
> ep.sci.hokudai.ac.jp 
Server:  localhost
Address:  127.0.0.1

ep.sci.hokudai.ac.jp    preference = 10, mail exchanger = blue.ep.sci.hokudai.ac.jp


>set type=CNAME
> www.ep.sci.hokudai.ac.jp
Server:  localhost
Address:  127.0.0.1

www.ep.sci.hokudai.ac.jp        canonical name = red.ep.sci.hokudai.ac.jp

3.3 セカンダリ DNS サーバの設定と運用

セカンダリ DNS サーバはネットワークを通じて他のネームサーバから データをもらってくることで、ネームサービスのためのデータを得る。 セカンダリ DNS サーバがデータを読み出す相手を マスタサーバといい、 セカンダリ DNS サーバがマスタサーバからデータを読み出すことを ゾーン転送という。

セカンダリ DNS サーバを設定するにはプライマリ DNS サーバと同様に 起動ファイル、ルートネームサーバを参照するためのファイル、 ループバックの逆びき用のファイル、の3つを用意する。

起動ファイルは、基本的にはプライマリ DNS サーバと同じであるが、 少しだけ書き換える。まず 以下のように /etc/named.boot ファイル を書き直す。

 
directory                                 /var/named   

cache        .                            named.root   

secondary      ep.sci.hokudai.ac.jp      192.168.0.30   yellow.zone  (1)

secondary    45.87.133.in-addr.arpa      192.168.0.30   yellow.rev   (2)

primary        0.0.127.in-addr.arpa       local.rev    

(1)(2)がプライマリのファイルを変更すべき ところである。"primary" を "secondary"にして、 セカンダリ DNS サーバのマスタサーバとなるホストのIPアドレスを書き加える。 この /etc/bind/named.boot ファイルを /named.conf ファイルに変換する方法は プライマリと全く同じである。root 権限で以下の操作を行なえばよい。

# cd /etc/bind/
# cp named.boot /tmp
# cd /tmp
# named-bootconf < named.boot > named.conf
# cp named.conf /etc/bind/

続いてプライマリ DNS サーバと全く同じ /var/named/named.root/var/named/local.rev ファイルを用意すれば、セカンダリ DNS サーバの設定は完了である。

セカンダリ DNS サーバの設定が終ったら、プライマリの場合と同様に bind を起動させ、正常に動作しているかを確認する。 この作業も プライマリの場合 と同様である。


4 参考文献