Как прочитать содержимое локального кеша DNS?

31

Я знаю, что в Windows я могу выдавать ipconfig /displaydnsи вижу содержимое кэша локального DNS.

Как я могу перечислить содержимое кэша DNS в Linux?

Я хотел бы получить как можно больше кросс-дистрибутивных решений.

Ханан Н.
источник
4
Насколько мне известно, DNS-кеш не поддерживается на клиенте в Linux (resolver), если только система не использует локальную службу кэширования dns на клиенте.
Nikhil Mulley
У вас всегда есть /etc/hostsфайл, который может содержать записи, созданные службами черного списка DNS.

Ответы:

15

До systemdэтого практически не было кеширования DNS на уровне ОС

До systemdне было кэширование DNS уровня ОС на Linux (и , вероятно , большинство Unix), если nscdи dnsmasqне была установлена и запущена.

Даже тогда функция кэширования DNS nscdбыла отключена по умолчанию в Debian по крайней мере просто потому, что она не работает .

Что касается dnsmasq, то кэширование , кажется, происходит в оперативной памяти по умолчанию.

Серж Строобандт
источник
2
Многие системы в настоящее время используют dnsmasqпо умолчанию, поэтому может быть полезен unix.stackexchange.com/q/162973/79839 .
птенцы
1
И в наши дни все, что использует systemd, вероятно, будет systemd-resolvedработать по умолчанию, что будет кэшировать результаты DNS на основе их TTL
Дрю
9

nscdэто демон кэширования службы имен. Это утилита, которую Linux, Solaris и другие используют для кэширования поиска службы имен. Служба имен в данном случае - это общий термин, который не ограничивается разрешением хоста, но также пользователи, группы и т. Д.

Я не знаю, как увидеть фактическое содержимое кэша, хотя вы можете отображать статистику с помощью /usr/sbin/nscd -g.

Это может, по крайней мере, показать вам, насколько эффективен ваш кеш, но не совсем то, что он разрешает.

У вас могут быть другие варианты, если вы используете альтернативный инструмент кеширования, например DNSMASQ.

Тим Кеннеди
источник
3

Если вы используете nscd, вы можете просмотреть содержимое (и, возможно, какой-то другой мусор), показывая строки ASCII из файла двоичного кэша. В Debian / Ubuntu этот файл предназначен /var/cache/nscd/hostsдля кэша хостов / DNS, поэтому вы можете запустить, strings /var/cache/nscd/hostsчтобы увидеть хосты в кэше.

Обратите внимание, что это полный взлом, поскольку, похоже, нет правильного способа проверить nscdкэш без декодирования двоичного формата.

SteveK
источник