DNS のキャッシュについてもう少し

年末を迎えての備忘録モードです。 前回の記事に関連して BIND 9 の主にキャッシュ関連についてメモしておきます。 この辺はしょっちゅう触っているわけではないので、書いておかないとすぐ忘れてしまうのです。

  • 実際の DNS 環境ではキャッシュサーバでキャッシュされるし、DNS クライアントでもキャッシュされ、多段のキャッシュが起こっている。 このように多段でキャッシュが行われる環境でも、キャッシュサーバはオリジナルの TTL を返すのではなく経過時間だけ減らした TTL を DNS クライアントに返すので、コンテンツサーバ (=ゾーンを管理するサーバ) で設定した TTL よりキャッシュの存在期間が延びることはない。
  • SOA レコードの TTL はネガティブキャッシュの生存期間となる
  • bind を使用したキャッシュサーバにおいて TTL の制御に以下のオプションを使うことができる。

    max-cache-ttl
    max-ncache-ttl
    

    これらは TTL を伸ばすものではなく、それを超えた TTL が返って来たときに設定されたその値に縮めるもの。 特に SOA の TTL は、昔と意味が変わっているので、メンテナンスされず不適切に大きな値のままのものがあるかも知れず、この設定は重要。

  • セキュリティ上の理由よりキャッシュサーバとコンテンツサーバは分けるべき。

    1. コンテンツサーバ上でキャッシュ汚染が生じないようにするため。
    2. 外部向けコンテンツサーバは公開しなければならないが、公開されたキャッシュは DDoS 攻撃 に用いられてしまうから。
  • キャッシュをダンプするには "rndc dumpdb"。rndc は最初に "rndc-confgen -a" を実行しないと使えないかも。

参考までに先の記事でも紹介した「DNS & BIND クックブック」の関連する項を挙げておきます。

レシピ 3.2  ネームサーバが rndc と協調動作するように設定する
レシピ 3.20 キャッシュを抑制する
レシピ 3.21 メモリ使用量を制限する
レシピ 5.3  キャッシュの中身を見る