私にメールする前に、まずこの章を読んでください。
読んでいる HOWTO が間違っています。この HOWTO の古い版では bind 4 のことを扱っていますので、そちらを読んでください。 http://www.math.uio.no/~janl/DNS/ にあります。
ヒント。 forward only;
query-source port 53;
が named.conf
ファイルの ``options'' の部分に必要になるでしょう。
キャッシュ専用のネームサーバ
の節にある例でちょっと触れましたね。
www.busy.site
に対する負荷を
分散させるようにするにはどうすれば良いでしょうか。
www.busy.site
に対する A レコードを複数用意して、
4.9.3 以降の bind を用いましょう。 bind は回答を round-robin
してくれます。古い版の bind では、これは動作しません。
root.hints
ファイルを使わないようにして、
ゾーンファイルだけを使いましょう。
hint ファイルをいちいち更新する必要もないわけです。
プライマリ (マスタ) のサーバが、アドレス 127.0.0.1 だったと して、以下のような行をセカンダリの named.conf に記述します。
zone "linux.bogus" { type slave; file "sz/linux.bogus"; masters { 127.0.0.1; }; };
zone 情報を取ってこれるマスタサーバが他にもある場合は、
masters
リストに `;' (セミコロン) で区切って
追加することもできます。
これに関連した記事を 4 つ紹介しましょう。
私は、最近のバージョンの BIND では、この [ファイルを切り替える, -ed]
がもう不必要であることに気がつきました。 "forwarders" 指定の他に
"forward" 指定が可能になっていて、後者で前者の使われ方を制御できる
ようになっていたんです。デフォルトの設定は "forward first" で、
最初にそれぞれの forwarders に問い合わせを行い、失敗した場合に
はじめて自分自身で聞き込み調査を始めます。これがラインが切れている
時に gethostbyname() にやたらと時間がかかってしまう、おなじみの
振る舞いです。しかし "forward only" を設定しておくと、 BIND は
forwarders から反応が帰ってこないとすぐにあきらめます。したがって
gethostbyname() も速やかに帰ってくることになります。ですから
巧みな技を使って /etc のファイルを切り替え、サーバを再起動する
必要はないのです。
私の場合では、以下の行を named.conf ファイルの options { }
セクションに追加するだけでした。
forward only;
forwarders { 193.133.58.5; };
とってもうまく動作してます。この方法のただ一つの欠点は、非常に
洗練された DNS ソフトウェアを、キャッシュ動作だけしかしない
単機能なソフトにしてしまう、ということです。ただ DNS キャッシュ
だけをするソフトがあれば私は実はそっちを使いたいんですけど、
Linux ではそのようなソフトはないみたいですね。
IP マスカレードをさせている手元のマシンで named を走らせています。
root.hints ファイルを二つ用意します。一つは root.hints.real で、
本物の root サーバの名前が書かれています。もう一つは
root.hints.fake で、その内容は...
----
; root.hints.fake
; this file contains no information
----
です。切断するときには root.hints.fake ファイルを root.hints に
コピーして named を再起動します。
接続するときには root.hints.real ファイルを root.hints にコピー
して named を再起動します。
これらは ip-down と ip-up でそれぞれ自動実行させています。
オフラインの時にドメイン名に対する問い合わせを行うと、 named は
それらに付いて知りませんから、以下のようなエントリを messages に
出力します。
Jan 28 20:10:11 hazchem named[10147]: No root nameserver for class IN
これは気にしなくてもかまいません。
私のところではこれで全く問題なく動作しています。ネットから切断
されているときは、ローカルマシンのネームサーバを外部のドメイン名に
対するタイムアウトの待ち時間なしで使えますし、接続されているとき
には外部のドメインに対する問い合わせを普通に行うことができています。
インターネットに対してモデム経由でたまにしか接続しないマシンには、
私はすべて named を走らせていました。ネームサーバはキャッシュと
してのみ動作し、 authority をもつ zone は保有せず、すべてを
root.cache ファイルに書かれたネームサーバに問い合わせに行く設定に
していました。 Slackware の流儀に従い、named は nfsd や mountd の
前に起動していました。
マシンのうちの一つ (Libretto 30 notebook) で、問題が起こりました。
私のローカルな LAN につながっている他のマシンから、そのマシンを
mount できなくなってしまうのです (ごくたまにできる時もありますが)。
これは接続形式に依存せず、 PLIP でも PCMCIA のイーサネットカードでも、
シリアル経由の PPP でも同じように起こりました。
しばらく実験と考察を行った後、以下のような結論に達しました。
nfsd と mountd が起動時に portmapper に対して行った登録動作
(私はこれらのデーモンを、通常通りブート時にスタートしていました)
を、 named はめちゃめちゃにしてしまうのです。 named の起動を
nfsd と mountd のあとに行うようにしたところ、この問題は完全に
解決しました。
ブートの順序をこのように変更することによる不利はまったくありません
から、潜在的な問題を避けるために、このようにすることをすべての
皆さんにお薦めしたいと思います。
キャッシュはすべてメモリに保管されています。ディスクに 書き込まれることはまったくありません。 named を kill すると、キャッシュも失われます。 キャッシュをコントロールする方法はありません。 named のキャッシュ管理は単純なルールに従っているからです。 キャッシュそのものも、あるいはキャッシュのサイズも、 どんな理由があれコントロールすることはできません。 この点を「修正」したければ named をハックしても良いでしょう。 おすすめはできませんが。
いいえ、 named は終了時にキャッシュを保存しません。 つまり named を kill して再起動するたびに、 キャッシュはゼロから再構成されます。 キャッシュをファイルに保存するように named に指示する方法はないのです。 この点を「修正」したければ named をハックしても良いでしょう。 おすすめはできませんが。
linux-rules.net
というドメインを立ち上げたいのですが、
このドメインを割り当ててもらうにはどうすればいいのでしょうか。
ネットワークサービスプロバイダに連絡してみれば、 おそらく助けてもらえるでしょう。なお世界のほとんどの地域では、 ドメインの入手にはお金が必要であるはずですので念のため。