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/named
はLinux 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 の最小限の設定を行うことができるようになったは ずです。