BINDのインストールメモ

Hiroshi Takekawa <sian@big.or.jp> first revision, 12 Sep 1997 この文書は、 BIND version 8.1.1 をインストールした時のメモです。導入の際のお役に立てば幸いです。関係する JF 等の文書をだいたい読んだ方向けに書かれており、細かいことまで詳しくは解説しておりません。ま

たこの文書は随時更新されます。日付が古いようならば、こちら <http://www.big.or.jp/ sian/linux/>

で最新版を入手してください。

目次

1 BIND とは何か？ 2 2 BIND のインストール 2 3 named の設定 3 4 zone の設定 4 5 named の起動 6 6 named の設定の確認 7 7 問題点 9 8 終りに 9 9 更新履歴 9 この文書の著作権は Hiroshi Takekawa が所有しております。

(C)Copyright 1997 by Hiroshi Takekawa.

この文書は、自由に配布してかまいませんが、改変しないでください。特に著作権表示を変更/削除してはいけません。

この文書は、役に立つようにと願って書かれておりますが、間違っている可能性があります。この文書によって生じたあらゆる事故等に対する責任を筆者はいっさい負わないものとします。間違いの指摘、御意見、御感想等は広く募集いたしております。

1 BIND とは何か？

私が説明するまでもなく、 Linux-HOWTO や、 JF といった優れた文書により、 BIND のことは知ることができると思いますが、簡単に言うと、ようするに、ホストネームと IP アドレスとの相互変換を行う、 DNS(Domain Name Service) を提供するものです。

BIND にはいくつかのプログラムが含まれますが、その中核をなすのが、 named です。デーモンプロセスとして動き、 IP やホストネームの問い合わせを受けつけます。この文書では、主に named のまわりの設定をすることを目的としております。

なお、個人レベルの通常の LAN では、 named は必要ありません。 /etc/hosts による運用だけで十分だと思います。 (キャッシュされるのでダイアルアップユーザにはうれしいこともあるようですが、インストールしてすぐにこれを書いているのでまだ実感しておりません) 私がインストールしたのは興味と後学のためであることをお断りしておきます。

2 BIND のインストール

まず、 BIND をインストールしましょう。バイナリパッケージなどから既にインストールされている場合は、そのバイナリの所在を確認するくらいで、 3 へ進んでください。この章ではソースコードからのインストールの仕方について説明します。

適当な ftp サイトから、

bind-src.tar.gz
bind-doc.tar.gz
bind-contrib.tar.gz (optional)

を取ってきてください。 optional になっているものは後でもかまいません。そうしたら、適当なディレクトリを作って、 src と doc を展開してください。次に src/に移り、 README や INSTALL 等のテキストをよく読んでください。

おそらくそのテキストを読むだけでインストールはできると思いますが、私はちょっとした変更を加えました。 src/port/linux/Makefile.set を書きかえて、コンパイルの時のフラグを少し変更しました。具体的には、 ’CDEBUG=-g’ を’CDEBUG=-O2 -mpentium’ に変更しました。変更しないか、みなさんの環境に合わせて変更してください。

make clean; make depend; make; make install

でだいたいうまくインストールできると思います。インストール先の変更等細かい所は付属テキストをお読みください。

3 named の設定

さて、ではいよいよ named の設定に入ります。 BIND8 からは、 /etc/named.boot ではなく、 /etc/named.conf で設定するようになりました。前のバージョンを使っていた方は、ディストリビューションに含まれる変換スクリプトを御使用ください。残念ながら私は古いバージョンに関してはまったくわかりません。

さて、 doc/html/以下のファイルや、 src/bin/named/named.conf といったファイルをながめてみてください。これらが説明/サンプルになっています。これらでよくわかった方は以降の説明を読まなくてもだいじょうぶです。 zone ファイルの設定に進んでください。

私はとりあえず、 src/bin/named/named.conf を/etc/named.conf にコピーし、自分に合わせた設定に書きかえ/コメントアウトしていきました。書きかえたところだけ、載せておきます。

options {
        directory "/var/etc/named";             // use directory
        named-xfer "/usr/sbin/named-xfer";      // _PATH_XFER
};
zone "sian.or.jp" {
        type master;                    // what used to be called "primary"
        file "master/sian.or.jp";
};
zone "." {
        type hint;                      // used to be specified w/ "cache"
        file "root.hint";
};
zone "0.0.127.in-addr.arpa" in {
        type master;
        file "master/127.0.0";
};
zone "1.168.192.in-addr.arpa" in {
        type master;
        file "master/192.168.1";
};
zone "localhost" in {
        type master;
        file "master/localhost";
};

options の directory のところは、相対パスの基点となるディレクトリを指定します。以後、ディレクトリは自分の設定したディレクトリに適当に読みかえてください。 named-xfer は named-xfer へのフルパスを記述します。 zone により、データベースに関する設定をしていきます。 type の master,hint 等についてはマニュアルを御覧ください。 file は、データベースのファイルを指定します。相対パスなので、 file ”master/localhost”; と書くと実際には、 /var/etc/named/master/localhost を指定したことになります。

後はマニュアルやコメントなどを参考にして、細かな設定を行なってください。私はほとんど書きかえずデフォルトを使っております。ただ一箇所、どうしても syntax error になるところがあったのでそこはコメントアウトしました。

4 zone の設定

named(8) にも説明が書いてあるので、よく読んでください。また、 src/bin/named/test/にも例があります。参考にしてください。

なお、ここでの設定は以下のような状況のもとに設定を行なっています。

domainname sian.or.jp.
network 192.168.1.0
netmask 255.255.255.0

NIS は使用しない。

+-----------------+               +-----------------+
+  Desktop(mana)  +               + Libretto(shiho) +
+                 +---- (eth0) ---+                 +
+   192.168.1.1   +               +   192.168.1.2   +
+--------+--------+               +-----------------+
         |
         |
       (ppp0)
         |
         |
     internet

…貧弱ですね。そのうちもう一台追加する予定です。それはさておき…

まず、 127.0.0.1 用に、 master/127.0.0 を作成します。

$ORIGIN 0.0.127.in-addr.arpa.
;<domain> <opt_ttl> <opt_class> <type> <resource_record_data>
@       1D      IN      SOA     localhost. root.localhost. (
                                1        ; Serial
                                360000   ; Refresh
                                300      ; Retry
                                3600000  ; Expire
                                360000 ) ; Minimum TTL
        1D      IN      NS      localhost.
1       1D      IN      PTR     localhost.

だいたいこんな感じで記述してみました。

次に、 localhost 用に master/localhost を作成します。

$ORIGIN localhost.
;<domain> <opt_ttl> <opt_class> <type> <resource_record_data>
@       1D      IN      SOA     @ root (
                                  1        ; Serial
                                  360000   ; Refresh

                                  300      ; Retry
                                  3600000  ; Expire
                                  360000 ) ; Minimum
        1D      IN      NS      @
        1D      IN      A       127.0.0.1

これらで、 localhost¡-¿127.0.0.1 が DNS 上で対応づけられることになります。

次にルートサーバのキャッシュを取ってきます。ネットワークに接続した状態で次のようにしてください。

% cd /var/etc/named
% dig @e.root-servers.net > root.hint

さていよいよ自分の指定したドメイン (ここでは sian.or.jp) の情報を master/sian.or.jp に設定します。

$ORIGIN sian.or.jp.
;<domain> <opt_ttl> <opt_class> <type> <resource_record_data>
@               1D      IN      SOA     sian.or.jp. root.sian.or.jp. (
                                          199709111 ; Serial
                                          360000    ; Refresh
                                          300       ; Retry
                                          3600000   ; Expire
                                          360000 )  ; Minimum
@               1D      IN      NS      ns
@               1D      IN      MX      10 mail
@               TXT     "Sian's Local Network"
localhost       1D      IN      A       127.0.0.1
ns                              A       192.168.1.1
                                MX      10 mail
                                HINFO   "Pentium/120" "Linux 2.0"
                                TXT     "Name Server"
mail                            A       192.168.1.1
                                MX      10 mail
                                HINFO   "Pentium/120" "Linux 2.0"
mana                            A       192.168.1.1
                                MX      10 mail
                                HINFO   "Pentium/120" "Linux 2.0"
                                TXT     "Main Desktop Machine"
www                             CNAME   mana
ftp                             CNAME   mana
news                            CNAME   mana
shiho                           A       192.168.1.2

                                MX      10 mail
                                HINFO   "486/100MHz" "Linux 2.0"
                                TXT     "Libretto"

MX レコードなどは十分考えて指定してください。ここで、 www、 ftp、 news はエイリアスです。

そして最後に逆引き用のデータを master/192.168.1 に設定します。

$ORIGIN 1.168.192.in-addr.arpa.
;<domain> <opt_ttl> <opt_class> <type> <resource_record_data>
@               1D      IN      SOA     sian.or.jp. root.sian.or.jp. (
                                        1997091101 ; Serial
                                        360000     ; Refresh
                                        300        ; Retry
                                        3600000    ; Expire
                                        360000 )   ; Minimum TTL
                1D      IN      NS      ns.sian.or.jp.
1               1D      IN      PTR     mana.sian.or.jp.
2               1D      IN      PTR     shiho.sian.or.jp.

これで設定は終りです。 named を起動をしてみましょう。

5 named の起動

named を起動すると、 /var/log/messages に

Sep 11 17:54:07 mana named[5323]: starting.  named 8.1.1 Thu Sep 11 00:21:06 JST 1997 ^Iroot@mana:/home/g640538/packages/bind/src/bin/named
Sep 11 17:54:07 mana named[5324]: Ready to answer queries.

などと表示されます。エラーメッセージなどが出た場合は、ファイルを修正して、 named.restart を実行してください。

ちゃんと動いたら resolver の設定をします。 /etc/resolv.conf を見てください。 resolver が今起動した DNS を見に行くよう次のように設定します。

nameserver 127.0.0.1

もちろん、必要に応じて、 domain や search を指定してください。私は、 domain sian.or.jp と search sian.or.jp を追加してあります。

また、 /etc/host.conf を見てください。

order hosts, bind
multi on

となっていることを確認してください。 order はホスト名を IP アドレスに変換する際に使用する方法の順序を指定します。 multi が on でなければ、 /etc/hosts しかみません。

さあ、次はいよいよ、 named を利用してみましょう。

6 named の設定の確認

さて、設定を終え、 named を起動したら、ちゃんと動いているか確認してみましょう。

nslookup を起動してください。これは、 BIND のディストリビューションに含まれます。その時まず次のように表示されることを確認してください。

% nslookup
Default Server:  localhost
Address:  127.0.0.1
>

そうでなければどこか失敗してると思われます。もう一度設定を見直してください。後は、勝手きままにアドレスを問い合わせてみます。

> mana
Server:  localhost
Address:  127.0.0.1
Name:    mana.sian.or.jp
Address:  192.168.1.1
> shiho
Server:  localhost
Address:  127.0.0.1
Name:    shiho.sian.or.jp
Address:  192.168.1.2
> www
Server:  localhost
Address:  127.0.0.1
Name:    mana.sian.or.jp
Address:  192.168.1.1
Aliases:  www.sian.or.jp

いい感じですね。ちゃんと合っています。

ただ注意しなければならないことは、 mana と入力していても表示されたのが、 mana.sian.or.jp のアドレスだということです。これは/etc/resolv.conf で search を指定したことで、 sian.or.jp が補完されて探されたためです。

さらに問い合わせてみます。

> localhost
Server:  localhost
Address:  127.0.0.1
Name:    localhost.sian.or.jp
Address:  127.0.0.1

> 127.0.0.1
Server:  localhost
Address:  127.0.0.1
Name:    localhost
Address:  127.0.0.1
> 192.168.1.1
Server:  localhost
Address:  127.0.0.1
Name:    mana.sian.or.jp
Address:  192.168.1.1

合ってます。逆引きもちゃんとできてるみたいです。

では、最後に全ての情報を引きだしてみます。

> ls -d sian.or.jp
[localhost]
$ORIGIN sian.or.jp.
@                       1D IN SOA       @ root (
                                        1997091101      ; serial
                                        4d4h            ; refresh
                                        5M              ; retry
                                        5w6d16h         ; expiry
                                        4d4h )          ; minimum
                        1D IN NS        ns
                        1D IN MX        10 mail
                        4d4h IN TXT     "Sian's Local Network"
news                    4d4h IN CNAME   mana
mana                    4d4h IN MX      10 mail
                        4d4h IN HINFO   "Pentium/120" "Linux 2.0"
                        4d4h IN TXT     "Main Desktop Machine"
                        4d4h IN A       192.168.1.1
localhost               1D IN A         127.0.0.1
mail                    4d4h IN A       192.168.1.1
                        4d4h IN MX      10 mail
                        4d4h IN HINFO   "Pentium/120" "Linux 2.0"
www                     4d4h IN CNAME   mana
shiho                   4d4h IN MX      10 mail
                        4d4h IN HINFO   "486/100MHz" "Linux 2.0"
                        4d4h IN TXT     "Libretto"
                        4d4h IN A       192.168.1.2
ftp                     4d4h IN CNAME   mana
ns                      4d4h IN A       192.168.1.1
                        4d4h IN MX      10 mail
                        4d4h IN HINFO   "Pentium/120" "Linux 2.0"
                        4d4h IN TXT     "Name Server"
@                       1D IN SOA       @ root (
                                        1997091101      ; serial
                                        4d4h            ; refresh

                                        5M              ; retry
                                        5w6d16h         ; expiry
                                        4d4h )          ; minimum

いかがだったでしょうか。私はここまで来れた時、とてもうれしかったです。

7 問題点

せっかく DNS サーバをあげたので、ちゃんと使いたいのですが、いくつか問題があるようです。まだ上げてまもないので、まだまだありそうですが、わかっていることだけ書きます。

まず、 DNS が分散データベースとなっているということです。つまり、問い合わせた DNS サーバが知らないとさらに別の DNS サーバに問い合わせようとします。こうすることにより世界中のホストの情報を全て持たなくてもよくしているわけですが、ダイアルアップユーザで接続していない時に DNS サーバを使っているとどうなるでしょうか。

nslookup でやってみるとわかる通り、 DNS サーバが知らない情報を得ようとすると止まってしまいます。他のサーバを探しているからです。あきらめるまでに結構時間がかかってしまい、時には困ったことになりかねません。

DNS-HOWTO の中にダイアルアップユーザ向けの named の利用の仕方を説明した箇所があります。それによると、接続する時に、 named を上げて、切断する時に落しているようです。このために、 /etc/hosts 等のファイルを接続時と切断時の両方用意しておきます。多少面倒ですが、一度設定してしまえば普通に使用することができるでしょう。読んで参考にしてみてください。

8 終りに

せっかく LAN を組んだのだから、ネットワークまわりの勉強をしよう…そう思ってやりはじめたのが BIND の運用です。まだ始めたばかりですが、まずはいいスタートを切れたように思います。次の目標はもう一台増やすことでしょうか…

ともあれ、この文書が誰か一人の役にでも立てばうれしいと思っております。是非、ちょっとのことでも、 <sian@big.or.jp> までよろしくお願いします。

9 更新履歴

Last Modified: Sun Mar  8 18:23:35 1998.
$Id: install-bind.sgml,v 1.1 1997/09/12 00:59:05 g640538 Exp g640538 $

$Log: install-bind.sgml,v $
# Revision 1.1  1997/09/12  00:59:05  g640538
# Initial revision
#