短期間のみキャッシュするローカル DNS リゾルバを構成する

短期間のみキャッシュするローカル DNS リゾルバを構成する

私は、ホスティング用にセットアップされる際に新しいドメインが正しく構成されているかどうかを確認するために使用されるアプリケーションに取り組んでいます。このアプリケーションでは、SPF、DomainKey、DKIM レコードなどの有効性をチェックします。

現在、これらのレコードのほとんどに 1 時間のデフォルト TTL を使用しています。レコードの 1 つに間違いが見つかることもありますので、更新する必要があります。現在、ドメインをテストしたばかりの場合は、システムのリゾルバのキャッシュされたレコードが期限切れになるまで待ってから、アプリケーションで正しいことを確認する必要があります (はい、手動で確認することもできますが、アプリケーションは自分で作成したので、その必要はありません)。

システムに DNS サーバーを設定して、通常のキャッシュ リゾルバーとして機能するようにしたいのですが、最大 5 分などの設定時間でレコードを期限切れにするか、まったくキャッシュしないかのどちらかにする必要があります。すべてのドメインの DNS が通常のネーム サーバーでホストされているわけではないので、このシステムでは、上流のリゾルバー (キャッシュされたレコードのみを使用する) を使用するのではなく、ドメインの権威ネーム サーバーにクエリを実行する必要があります。

このマシンは現在、いかなる種類の DNS も実行していないため、BIND または djbdns (または適切な提案があれば他の何か) をインストールできます。

答え1

皆様のご意見とご提案に感謝します。皆様のご意見とご提案により、次のような解決策が見つかりました。

  • bind9をインストールします。
  • フォワーダーが空白になるように編集します/etc/bind/named.conf.options(サーバーが別のキャッシュ サーバーのキャッシュされたレコードを使用しないようにするため)。
  • max-cache-ttlオプションをmax-ncache-ttl300 秒に設定します。(参照
  • サーバーが他のシステムによって使用されないようlisten-on-v6 { any; };に変更します。(listen-on-v6 { localhost; };参照
  • システムを編集して、サーバー上のアプリが新しいローカル サーバーを使用するように/etc/resolv.confのみ含めます。nameserver 127.0.0.1

bind9 を再起動して動作していることを確認しました:

dev:~# dig serverfault.com

; <<>> DiG 9.5.1-P2 <<>> serverfault.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63591
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:
;serverfault.com.               IN      A

;; ANSWER SECTION:
serverfault.com.        300     IN      A       69.59.196.212

;; AUTHORITY SECTION:
serverfault.com.        300     IN      NS      ns21.domaincontrol.com.
serverfault.com.        300     IN      NS      ns22.domaincontrol.com.

;; Query time: 190 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jul 18 03:06:24 2009
;; MSG SIZE  rcvd: 101

serverfault.com のレコードの公開 TTL は 3600 ですが、TTL は 300 と表示されます。

答え2

「dig」を呼び出すには、+trace を頻繁に使用してください...

Dig は DNS サーバーのように動作し、完全な再帰を実行します。キャッシュは不要で、事前に NS サーバーを知る必要はなく、委任の問題がある場合もその問題が見つかります。

Windowsプログラムの場合は、ここからBindをダウンロードできます。https://www.isc.org/download/dig.exe が含まれています。Linux では通常、dig を含む BIND ツールまたは Named ツール パッケージが利用可能です。

ルックアップを行うためだけに DNS サーバー全体をインストールするなんて... 非常識です!

$ dig www.google.com +trace +nodnssec -4

; <<>> DiG 9.11.9 <<>> www.google.com +trace +nodnssec -4
;; global options: +cmd
...

...

google.com.             172800  IN      NS      ns4.google.com.
;; Received 291 bytes from 192.48.79.30#53(j.gtld-servers.net) in 22 ms

www.google.com.         300     IN      A       172.217.10.228
;; Received 59 bytes from 216.239.32.10#53(ns1.google.com) in 30 ms

答え3

dnscache (djbdns スイートから) を使用して、5 分ごとに強制終了してみてはいかがでしょうか?

djbdns、特に dnscache を使用したことがない方のために説明すると、これはディスク上に何も保存しない再帰リゾルバです。また、djb はプログラムを自動的に監視するツール スイートを作成し、プログラムが停止した場合は監視プログラムが自動的に (そして即座に) 再起動します。

5 分ごとにそれを殺せば、おしまいです...

答え4

おっしゃるとおり、BIND オプション句、または開発サーバーにのみ適用されるビューのいずれかで、max-cache-ttlとを使用して最長 TTL を制限することができます。max-ncache-ttl

ただし、これはすべてのルックアップの TTL に影響するため、運用サーバーのネットワーク/負荷が増加し、DNS の回復力が低下します。

BIND 9.3以降では、1つのドメインのキャッシュをクリアしたい場合は、次のようにします。

rndc flushname <domain>

これにより、サブドメインではなく、正確なドメインのすべてのレコードがフラッシュされます。 の出力を参照してくださいrndc

もちろん、もしあなたが望むなら長くするTTLが何らかの理由で別の質問

関連情報