web-dev-qa-db-ja.com

DNSキャッシングを無効にするPHP

スクリプトでDNSの最新のAレコードを取得する必要があります。スクリプトはいくつかの監視操作を実行しています。 DNSレコードのデフォルトTTLは5分ですが、監視スクリプトは毎分実行されています。PHPの関数dns_get_recordを使用してAレコードを取得していますが、できる方法があるかどうか疑問に思っていました。 TTLキャッシュを無視し、キャッシュではなくDNSサーバーからレコードを取得します。

もちろん、これを強制してネットワークレベルのキャッシュを適用できず、スクリプトを実行するたびに、実際にDNSサーバーにアクセスする方法はありますか?

ありがとうSparshGupta

6
Sparsh Gupta

いいえ。通常のクライアントには、キャッシュをフラッシュして権限のあるサーバーを再クエリすることをキャッシュDNSサーバーに要求する機能はありません。これは仕様によるものです。読者の演習として、他の方法で発生する可能性のあるDDoS大混乱の量は残しておきます。

キャッシュされていないレコードが絶対に確実に必要な場合は、通常のネームサーバーにターゲットドメインのNSレコードを照会してから、権限のあるサーバーに直接照会してください。

[〜#〜] note [〜#〜]:これは一般的に失礼な振る舞いと見なされており、最後の手段として以外は実際に使用すべきではありません-正確には、非常に重要なので絶対に気付かないうちにレコードが変更された場合に備えて、毎分完全な再チェックが必要ですか?

...さらに言えば、TTLがデフォルトで5分になっているのはなぜですか?

[〜#〜] eta [〜#〜]:実際に使用されているほとんどのDNSサーバー、特に転送サーバーは、TTL)を尊重することを拒否します。 3600秒未満。運が良ければ、デフォルトで最低1時間、そうでない場合は、一般的に受け入れられているデフォルトの86400秒(24時間)にデフォルト設定されます。

7
Shadur