web-dev-qa-db-ja.com

「ipconfig / flushdns」がDNSを完全に消去しないのはなぜですか?

「ipconfig/flushdns」+コンピューターを再起動してもすべてのDNSレコードが削除されないという問題が一貫して発生しました。

DNSのすべてのレコードを完全にフラッシュする必要がありますか?
なぜ通常はこのようにならないのですか?
何らかの制限はありますか?

7
Howdy_McGee

ipconfig /displaydnsでフラッシュした後も、なぜ一部のエントリが/flushdnsに残っているのですか?」

  1. プログラムはドメインを繰り返し解決しているため、その情報はほぼ即座にキャッシュされます。
  2. DNSリゾルバーは、ハードコーディングされたいくつかの特別な名前(localhostなど)を処理します。
  3. DNSリゾルバーは自動的に/etc/hosts(実際には%SystemRoot%\system32\drivers\etc\hostsを読み取ります)を使用してリゾルバーキャッシュを埋めるため、これらの名前を実際にDNSで検索する必要はありません。名前を解決する必要があるたびに/ etc/hostsを再読み取りしないようにするのはいいトリックです。

「ドメインで何かを変更して/flushdnsを実行したのに、なぜ変更が表示されないのですか?」

DNSのすべてのレコードをフラッシュすることは物理的に不可能です。DNS–ドメインネームシステム–はインターネット全体の多くのサーバーでホストされており、それらすべてを破棄する必要があるためです。

ipconfigがアクセスするものコンピュータのローカルキャッシュ DNSから検索された情報。コンピューターのキャッシュをフラッシュして、任意のドメインにアクセスしようとすると、コンピューターは構成済みのDNSサーバーに再度問い合わせる必要があります。

ただし、ルーター、ISP、またはパブリック(Googleなど)のDNSサーバーには、独自のキャッシュがあります。誰かが8.8.8.8のDNSサーバーにドメインsuperuser.comについて尋ねると、それはthatサーバーにもキャッシュされます。そのため、多くの場合、3層、場合によっては4層のキャッシングレイヤーが存在する可能性があります。Windowsでは、ルーター/モデム/ゲートウェイ、ISPに、さらにISPのより深い2番目のレイヤーがあります。

18
user1686

マシンを再起動すると、A(ホスト)レコードがキャッシュに再度追加されます。

Dnscacheを停止して開始しても、これは変わりません。一部のホストレコードは自動的に再入力されます。

1
Pretzel