BINDのインストールメモ Hiroshi Takekawa 著 first revision, 12 Sep 1997 この文書は、BIND version 8.1.1をインストールした時のメモです。導入の際 のお役に立てば幸いです。関係するJF等の文書をだいたい読んだ方向けに書か れており、細かいことまで詳しくは解説しておりません。またこの文書は随時 更新されます。日付が古いようならば、こちら で最新版を入手してください。 ______________________________________________________________________ Table of Contents: 1. BINDとは何か? 2. BINDのインストール 3. namedの設定 4. zoneの設定 5. namedの起動 6. namedの設定の確認 7. 問題点 8. 終りに 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をインストールしましょう。バイナリパッケージなどから既にイン ストールされている場合は、そのバイナリの所在を確認するくらいで、``次の 章''へ進んでください。この章ではソースコードからのインストールの仕方に ついて説明します。 適当な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. ; @ 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. ; @ 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. ; @ 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. ; @ 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の運用です。まだ始めたばかりですが、まずはい いスタートを切れたように思います。次の目標はもう一台増やすことでしょう か… ともあれ、この文書が誰か一人の役にでも立てばうれしいと思っております。 是非、ちょっとのことでも、までよろしくお願いします。 9. 更新履歴 Last Modified: Fri Sep 12 10:20:28 1997. $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 #