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

10. Q & A

私にメールする前に、まずこの章を読んでください。

  1. 私の named では named.boot ファイルが必要と言われます

    読んでいる HOWTO が間違っています。この HOWTO の古い版では bind 4 のことを扱っていますので、そちらを読んでください。 http://langfeldt.net/DNS-HOWTO/ にあります。

  2. ファイアウォールの中で DNS を使うには?

    ヒント。 forward only;。また


      query-source port 53;
      
    

    named.conf ファイルの ``options'' の部分に必要になるでしょう。 キャッシュ専用のネームサーバ の節にある例でちょっと触れましたね。

  3. DNS によって、あるサービスに対するアドレスを順繰りにまわす (round-robin する) にはどうすれば良いですか? つまり例えば www.busy.site に対する負荷を 分散させるようにするにはどうすれば良いでしょうか。

    www.busy.site に対する A レコードを複数用意して、 4.9.3 以降の BIND を用いましょう。 BIND は回答を round-robin してくれます。古い版の BIND では、これは動作しません

  4. (クローズな) イントラネットで DNS を使いたいのです。 どうすれば良いですか?

    root.hints ファイルを使わないようにして、 ゾーンファイルだけを使いましょう。 root.hints ファイルをいちいち更新する必要もないわけです。

  5. セカンダリ (スレーブ) のネームサーバを設定するには?

    プライマリ (マスタ) のサーバが、アドレス 127.0.0.1 だったと して、以下のような行をセカンダリの named.conf に記述します。


      zone "linux.bogus" {
            type slave;
            file "sz/linux.bogus";
            masters { 127.0.0.1; };
      };
      
    

    zone 情報を取ってこれるマスタサーバが他にもある場合は、 masters リストに `;' (セミコロン) で区切って 追加することもできます。

  6. net から切断されているときにも BIND を 動作させておきたいんですが。

    これに関連した記事を 4 つ紹介しましょう。

    • BIND 8/9 に特化したやり方を Adam L Rice が電子メールで 教えてくれました。ダイアルアップのマシンで DNS を手間をかけずに 動作させる方法です。
      私は、最近のバージョンの BIND では、これ [編注: ファイルを切り
      替える] がもう不必要であることに気がつきました。 "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 ではそのようなソフトはないみたいですね。
      
    • 以下の記事は Ian Clard <ic@deakin.edu.au> から もらったメールです。彼のやり方を説明してくれています。
      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
      
      これは気にしなくてもかまいません。
      
      私のところではこれで全く問題なく動作しています。ネットから切断
      されているときは、ローカルマシンのネームサーバを外部のドメイン名に
      対するタイムアウトの待ち時間なしで使えますし、接続されているとき
      には外部のドメインに対する問い合わせを普通に行うことができています。
      

      しかし、Peter Denison は Ian のやり方がまだ充分でないと教えてくれました。 彼のメッセージによると:

      オンライン時) キャッシュされたエントリ (とローカルネットのエントリ) は
                    ただちに提供する。キャッシュされていないエントリについては、
                    自分の ISP のネームサーバにフォワードする。
      オフライン時) ローカルネットワーク関連の問合わせはただちに提供する。
                    その他の問合わせについては **ただちに** 失敗する。
      
      root キャッシュファイルの変更と、問合わせのフォワードとの組み合わせは
      うまく動作しません。
      
      そこで、私は二つの named を (地域 LUG で議論しながら) 以下のように
      設定しました。
              
      
      named-online:   ISP のネームサーバへフォワード
                      localnet ゾーンのマスター
                      localnet の逆引きゾーン (1.168.192.in-addr.arpa) のマスター
                      0.0.127.in-addr.arpa のマスター
                      ポート 60053 で待機
      
      named-offline:  フォワードを行わない
                      root キャッシュファイルは「にせもの」にする
                      3 つのローカルゾーンのスレーブ (マスターは 127.0.0.1:60053)
                      ポート 61053 で待機
      
      そしてこれをポートフォワードと組み合わせ、ポート 53 をオフラインの時には
      61053 に、オンラインの時には 60053 にフォワードします (私は 2.3.18 で
      新しい netfilter パッケージを使いましたが、以前の (ipchains) の機構でも
      動作するはずです。
      
      ただしこれはマシンの外側からの問合わせには動作しません。 BIND 8.2 には
      小さなバグがあって、スレーブをマスターと同じ IP アドレスでは (ポートが
      異なっても) 同時に動作できないからです (開発者には知らせました)。
      明らかなパッチなので、おそらくすぐに直るでしょう。
      

    • 切断されている時間の長いマシンにおいて、BIND がNFS や ポートマッパとどのように相互作用するのかに関する情報もいただきました。 Karl-Max Wanger からです。
      インターネットに対してモデム経由でたまにしか接続しないマシンには、
      私はすべて named を走らせていました。ネームサーバはキャッシュと
      してのみ動作し、 authority をもつ zone は保有せず、すべてを
      root.cache ファイルに書かれたネームサーバに問い合わせに行く設定に
      していました。 Slackware の流儀に従い、named は nfsd や mountd の
      前に起動していました。
      
      マシンのうちの一つ (Libretto 30 notebook) で、問題が起こりました。
      私のローカルな LAN につながっている他のマシンから、そのマシンを
      mount できなくなってしまうのです (ごくたまにできる時もありますが)。
      これは接続形式に依存せず、 PLIP でも PCMCIA のイーサネットカードでも、
      シリアル経由の PPP でも同じように起こりました。
      
      しばらく実験と考察を行った後、以下のような結論に達しました。
      nfsd と mountd が起動時に portmapper に対して行った登録動作
      (私はこれらのデーモンを、通常通りブート時にスタートしていました)
      を、 named はめちゃめちゃにしてしまうのです。 named の起動を
      nfsd と mountd のあとに行うようにしたところ、この問題は完全に
      解決しました。
      
      ブートの順序をこのように変更することによる不利はまったくありません
      から、潜在的な問題を避けるために、このようにすることをすべての
      皆さんにお薦めしたいと思います。
      

  7. キャッシュネームサーバはどこにキャッシュを保存しているの? キャッシュのサイズは制御できますか?

    キャッシュはすべてメモリに保管されています。ディスクに 書き込まれることはまったくありません。 named を kill すると、キャッシュも失われます。 キャッシュを制御する方法はありません。 named のキャッシュ管理は単純なルールに従っているからです。 キャッシュそのものも、あるいはキャッシュのサイズも、 どんな理由があれ制御できません。 この点を「修正」したければ named をハックしても良いでしょう。 おすすめはできませんが。

  8. named は再起動されるときにキャッシュを保存してくれますか? 保存するようにできますか?

    いいえ、 named は終了時にキャッシュを保存しません。 つまり named を kill して再起動するたびに、 キャッシュはゼロから再構成されます。 キャッシュをファイルに保存するように named に指示する方法はないのです。 この点を「修正」したければ named をハックしても良いでしょう。 おすすめはできませんが。

  9. ドメインを手に入れるにはどうすればいいですか? 私は (例えば) linux-rules.net というドメインを立ち上げたいのですが、 このドメインを割り当ててもらうにはどうすればいいのでしょうか。

    ネットワークサービスプロバイダに連絡してみれば、 おそらく助けてもらえるでしょう。なお世界のほとんどの地域では、 ドメインの入手にはお金が必要であるはずです。

  10. DNS サーバを安全にするにはどうすればいいでしょう? split DNS の設定のしかたは?

    両方とも高度な話題になります。 いずれも http://www.etherboy.com/dns/chrootdns.html で取り上げられています。この話題は、 これ以上ここでは扱いません。


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

[