前のページ 次のページ 目次

2. キャッシング専用のネームサーバ

DNS 設定の最初の難関ですが、ダイアルアップのユーザには便利で す。

キャッシング専用のネームサーバは、名前引きの結果を記憶(キャッシュ) しておき、次回の問い合わせの時にその記憶を使って答えるものです。

最初に、/etc/named.bootというファイルが必要です。これは、 named が起動する時に読み込まれます。現在の目的の場合では次のような内容 になります。



;  Boot file for nicolais caching name server

;

directory /var/named

;

; type          domain                          source file or host

cache           .                               root.cache

directory の行は named が参照するファイルの場所を指定します。 全てのファイル指定はここからの相対パスとなります。 /var/namedLinux Filesystem Standard に準拠した正 しいディレクトリ名です。

/var/named/root.cache というファイル名はここでつけられます。 /var/named/root.cache ファイルの内容は以下のようになっています。



; ---- Root hint cache dump ----

.    IN      NS      A.ROOT-SERVERS.NET

.    IN      NS      B.ROOT-SERVERS.NET

.    IN      NS      C.ROOT-SERVERS.NET

.    IN      NS      D.ROOT-SERVERS.NET

.    IN      NS      E.ROOT-SERVERS.NET

.    IN      NS      F.ROOT-SERVERS.NET

.    IN      NS      G.ROOT-SERVERS.NET

.    IN      NS      H.ROOT-SERVERS.NET

.    IN      NS      I.ROOT-SERVERS.NET

;

;  Prep the cache (hardwire the addresses).  Order does not matter

;

A.ROOT-SERVERS.NET.  IN      A       198.41.0.4

B.ROOT-SERVERS.NET.  IN      A       128.9.0.107

C.ROOT-SERVERS.NET.  IN      A       192.33.4.12

D.ROOT-SERVERS.NET.  IN      A       128.8.10.90

E.ROOT-SERVERS.NET.  IN      A       192.203.230.10

F.ROOT-SERVERS.NET.  IN      A       39.13.229.241

G.ROOT-SERVERS.NET.  IN      A       192.112.36.4

H.ROOT-SERVERS.NET.  IN      A       128.63.2.53

I.ROOT-SERVERS.NET.  IN      A       192.36.148.17

このファイルには世界中のルートネームサーバを記述します。これは常に 変わっていくものですから、更新の仕方を 「保守」の章 で確認してください。このファイル についての説明がオンラインマニュアルにもありますが、私見では[訳注:原文 では HMHO となっていたが、著者に確認したところ、IMHO = In My Humble Opinion のタイプミスとのこと]、この説明は既に named について理解している人向け のものです。

次に、以下のような形式で書かれている/etc/resolv.confが必要 です。:



search subdomain.your-domain.edu your-domain.edu

nameserver 127.0.0.1

`search' で始まっている行は、接続しようとする全てのホスト名 に対してどのドメインを探すべきかを指定します。`nameserver'で 始まる行は、どのアドレスでネームサーバに接続できるかを指定するものです。 今回のケースでは、自分のマシンでネームサーバを動かすのでローカルホスト を指定します。(注:named はこのファイルは参照しません。このファイルを 参照するのは resolver です。)

このファイルの意味を説明すると:もしクライアントがホストfoo の名前引きを行うと、最初にfoo.subdomain.your-domain.eduが調べ られ、次にfoo.your-fomain.eduが調べられ、最後にfooが 調べられます。もし、クライアントがsunsite.unc.eduの名前引きを 行うと、最初にsunsite.unc.edu.your-domain.eduが調べられ、 それからsunsite.unc.edu.your-domain.eduが、最後に sunsite.unc.eduが調べられます。search 行にあまり多くのドメ インを書くと、調べるのに時間がかかるようになるので避けておいたほうが良 いでしょう。

この例ではあなたのマシンがsubdomain.your-domain.edu内にあ ると仮定していますので、あなたのマシンの名前はおそらく your-machine.subdomain.your-domain.eduとなるでしょう。 search 行にはあなたのトップレベルドメイン(Tpo Level Domain=TLD, この場 合は `edu'です。)を含めてはいけません。もし、頻繁に特定のドメイン に接続する必要があるならば、search行にそのドメインを加えてもいいでしょ う。



search subdomain.your-domain.edu. your-domain.edu. other-domain.com.

もちろん、実際には本当のドメイン名を書く必要があります。

修正する必要がある最後のファイルは/etc/host.confです。これ はほんの数行のファイルで、order の語で始まります。以下に例を挙げ ます。



order hosts,bind

もし`order'行がない場合には、これを一行は入れてやらなければな りません。上の例では、名前引きルーチンに対して、最初に /etc/hostsを参照し、次にネームサーバ(resolve.conf)で、 127.0.0.1と指定しました)に問い合わせるように指定しています。最後の2つ のファイルについては、resolv(8)のオンラインマニュアルに説明があります。 このオンラインマニュアルは(IMHO?)読めますから、皆さん、特にDNS管理者は 読むべきです。「あとでいいや」なんて考えると、そのままになってしまいま すから、今すぐに読んでしまいましょう。

これらの準備が済んだのならば、named を立ち上げましょう。 `/usr/sbin/named'と入力しましょう。オプション指定はありません。 もしダイアルアップ接続をする場合には、最初に接続の方を行います。ここで あなたの設定をテストしてみましょう。syslog のメッセージファイル(普通は /var/adm/messages)を見ると (tail -f /var/adm/messages等とします)、以下のような感じの出力 が得られるはずです:


Mar  6 23:44:21 roke named[31426]: starting.  named 4.9.3-P1 Sat Jan 27 00:36:2

9 MET 1996       janl@roke.slip.ifi.uio.no:/home/janl/bind-4.9.3/named

Mar  6 23:44:21 roke named[31426]: cache zone "" loaded (serial 0)

Mar  6 23:44:21 roke named[31427]: Ready to answer queries.

もしエラーに関する出力があれば、named に見つけられないファイルを間 違って指定しているのでしょう(named.boot か root.cache のどちらかだと思 いますう :-)named を kill して、named 関係のファイルを再確認しましょう。

ここで、分岐点が一つあります。もしあなたがごく最近のbindパッケージ を使っている場合には、この設定ではまだ完全には動作しないかもしれません。 これは名前引きをしてみればわかります。これを行うためのプログラムが nslookup です。`nslookup' というコマンドを入力してみましょう:


$ nslookup

Default Server:  localhost

Address:  127.0.0.1



>

これは、うまく動作している場合です。そうでなければ以下のような出力 になります:


$ nslookup

*** Can't find server name for address 127.0.0.1: Non-existent host/domain

*** Default servers are not available

このような場合には、 `単純なドメイン'の章へ進 んで、named.boot の `primary' 行とpz/127.0.0及び pz/localhostという名前のファイルについての説明を読んでくださ い。それからここに戻ってきてください。

さて、問い合わせをしてみましょう。あなたの近くにあるマシンの名前を 引いてみましょう。私の近く(オスロ大学)には、pat.uio.noというマシンがあ ります。


> pat.uio.no

Server:  localhost

Address:  127.0.0.1



Name:    pat.uio.no

Address:  129.240.2.50

nslookup はあなたのマシンで動いているnamed にpat.uio.noに ついて問い合わせをします。named は自分のroot.cacheファイルに 書かれているネームサーバの一つに接続して、そこに問い合わせをします。 /etc/resolve.confに書かれているドメイン全てについて調べている ときには、結果が得られるまでに少し時間がかかるかもしれません。 もし、もう一度同じ問い合わせを行うと、次のような結果になるでしょう。


> pat.uio.no

Server:  localhost

Address:  127.0.0.1



Non-authoritative answer:

Name:    pat.uio.no

Address:  129.240.2.50

今度は'Non-authoritative answer:'という行があること注目してください。 これはnamedが今回はネットワーク経由で調べたのではなく、キャッシュを調 べて結果を得たことを意味しています。ですから、この`Non-authorative answer:'という結果には(ほんのわずかですが)危険があることを知っていてく ださい。あるホストについての2回目の問い合わせでnslookup がこの結 果を出した時には、namedが動作していて情報をキャッシュしていることのし るしです。`exit' コマンドを入力することで`nslookup' を終了し ます。

もし、あなたがダイアルアップ(PPP, slip)のユーザであれば、 「ダイアルアップ接続」の章を参照してください。 参考になることをいくつか書いてあります。

これで、あなたは named の最小限の設定を行うことができるようになったは ずです。


前のページ 次のページ 目次