私はいくつかのLinuxおよびFreeBSDサーバーの管理者であり、ここに私が抱えている問題があります。
サーバーは、ネットワーク全体に対して毎分多くのDNSクエリを実行するツールを実行します。クエリを実行すると、結果はシステム全体にキャッシュされます。 DNSエントリが変更された場合、その変更はかなり後で取得されます。
DNSキャッシュをフラッシュする方法は何でしょうか?上司は私にソフトウェアをipconfig /flushdns
呼び出し。私は上司に週末にこの問題を解決し、月曜日にすべてのLinuxとFreeBSDがキャッシュをフラッシュすることを伝えました。そうしないと、彼は私にWindowsサーバーを作ってソフトウェアを実行させます。
LinuxおよびFreeBSDでDNSキャッシュをフラッシュする方法は?
ナンセンスなことを言っているので、質問はしません。
「named/bind/other」というDNSサーバーを実行していないLinux/Unixシステムを使用している場合、システムはDNSクエリをキャッシュしません。アプリケーション(DNSクライアント)は、キャッシュせずに毎回DNSサーバーに照会するだけで、毎回DNSサーバーに照会します。 「named/bind」というDNSサーバーを使用していて、キャッシュをクリアしたい場合は、このサービスを再起動するだけです(Freebsd:/etc/rc.d/named restart
)しかし、これには意味がありません。
DNSエントリが変更された場合、その変更はかなり後で取得されます。
これはどのようになりますか? DNSサーバーを実行していますか?セカンダリDNSサーバーを実行している場合は、プライマリサーバーからゾーンのコピーを取得するだけで、キャッシュをフラッシュする意味はありません。ゾーンファイルを削除してDNSサービスを再起動することにより、プライマリサーバーからサーバー更新ゾーンをプッシュできます。プライマリDNSを実行していて、ゾーン情報を更新する場合は、シリアルインゾーンを変更してサービスを再起動します。
# /etc/rc.d/named restart (for named)
# rndc (for bind9)
ゾーン情報を更新します。正しいDNS回答が得られるかどうかを確認するには、次のコマンドを使用します。
# Dig @dns_server example.com
ipconfig/flushdnsがインストールされているWindowsにソフトウェアを移動するように要求する
何のために?
ネームサービスキャッシングデーモンを実行していると仮定して、「nscd -i hosts」をrootとして実行します。
あなたがしたいかもしれないことは、以下の組み合わせです。
DNSゾーンのさまざまなエントリの変更がすぐに変わることがわかっている場合は、TTLをゾーンのより小さい値に設定します。
通常、標準リリースのLinux(FreeBSDについては不明)で実行されるNameServerCacheDaemon(nscd)プロセスがあります。キャッシュをクリアする簡単な方法は、このデーモンを再起動することです。
最後に、ホストでキャッシングDNSサーバーを実行している場合は、dnsサービスを簡単に再起動すると、キャッシュがクリアされます。 dns制御コマンドを使用すると、キャッシュがクリアされることもあると思います。