Где находится кэш DNS в Windows 8.1?

4115
Green

Я читаю о кеше DNS и особенно о ipconfig /flushdnsкомандах. Есть много ресурсов - QA, блоги, сайты - которые объясняют, что такое кеш DNS, но ни один из них не говорит, где кеш DNS расположен на моей машине с Windows 8.1. Если я правильно понял, это должен быть файл с сопоставлениями, что-то вроде следующего:

example.com 123.123.123.123 foo.net 123.123.0.0 

Прежде чем запустить ipconfig /flushdns, я хочу посмотреть этот файл кеша DNS. Где я могу найти это на моей машине?

1
Вероятно, в памяти. Daniel B 8 лет назад 0

3 ответа на вопрос

2
TOOGAM

If you want to see the DNS cache, recent versions of Microsoft Windows support IPConfig /displaydns

(I don't think Windows 98 supported it; neither did Win98 support ipconfig /flushdns. I would guess both options got added to the same version of Microsoft Windows.)

This is the typical/easy way to view such information.

I'm not offhand sure what file this information is stored in. I'm pretty sure that it doesn't use the HOSTS-like format that you show, because I'm sure it also keeps track of expiration time. Using Process Explorer may help to find out what file gets accessed when using IPConfig/displaydns.

Там _is_ нет "файла кеша" - кеш хранится только в памяти. Он поддерживается службой «DNS-клиент» (внутренне называется «Dnscache»), поэтому данные кэша будут находиться где-то внутри одного из процессов «svchost.exe». grawity 8 лет назад 0
1
Jonno

Just to back up what others have said, using Process Hacker to search for strings within svchost.exe you can see the entries stored in memory. Eg.

enter image description here

A far less useful output than simply using ipconfig /displaydns (Which you can always output to a file using ipconfig /displaydns>output.txt if you wanted.

0
BobH2

Кэш может храниться в памяти, а локальная служба DNS может не хранить файл кэша, но есть кое-что еще.

Мой ipconfig / displaydns сохранял записи между перезагрузками для меня. Это должно быть где-то на диске.

У меня была проблема с DNS сегодня, и при проверке со старой виртуальной машиной я обнаружил некоторые действительно старые записи в моем локальном dnscache. Это были записи из моей старой компании, и сначала я подумал, что, может быть, они взломали или я все еще каким-то образом был подключен к их сети. Но они также содержали некоторые из моих собственных записей от виртуальных машин довольно давно.

ipconfig / flushdns не будет стирать записи. Я попытался остановить и перезапустить службу DNS. Не помогло. Я отключил роутер от интернета и записи все еще остались. Потом я вспомнил, что эта ВМ давно была контроллером домена и DNS-сервером, поэтому я подозревал, что что-то не удалялось правильно.

Я использовал procman.exe и изолировал экземпляр svchost.exe, который отвечал на запросы ping. На пинге он открыл файл hosts и больше ничего. Дурак, я должен был проверить файл hosts, прежде чем начать все это. Все старые записи были в файле hosts. После того, как они были стерты там, они не показывались в ipconfig / displaydns.

Когда локальная служба DNS останавливается и перезапускается, существующие записи стираются, что подтверждает, что они хранятся только в кэш-памяти. Но да, постоянные записи ipconfig dns, используемые ping через локальный dns, находятся в каталоге c: \ windows \ system32 \ drivers \ etc \ hosts.

Надеюсь, что это помогает кому-то еще, пытаясь устранить эту проблему.