Я пытаюсь использовать nscd (Nameservices Cache Daemon) для локального кэширования DNS, чтобы я мог перестать использовать Bind для этого. Я начал, и ntpd, похоже, пытается его использовать. Но все остальное для хостов, кажется, игнорирует это. например, если я копаю apache.org 3 раза, ни один из них не попадет в кеш. Я просматриваю статистику кеша, nscd -g
чтобы определить, использовался ли он. Я также поднял уровень журнала отладки, чтобы увидеть, могу ли я увидеть, что он срабатывает, а запросы даже не попадают в nscd.
nsswitch.conf
# Begin /etc/nsswitch.conf
passwd: files
group: files
shadow: files
publickey: files
hosts: cache files dns
networks: files
protocols: files
services: files
ethers: files
rpc: files
netgroup: files
# End /etc/nsswitch.confenter code here
nscd.conf
#
# /etc/nscd.conf
#
# An example Name Service Cache config file. This file is needed by nscd.
#
# Legal entries are:
#
# logfile <file>
# debug-level <level>
# threads <initial #threads to use>
# max-threads <maximum #threads to use>
# server-user <user to run server as instead of root>
# server-user is ignored if nscd is started with -S parameters
# stat-user <user who is allowed to request statistics>
# reload-count unlimited|<number>
# paranoia <yes|no>
# restart-interval <time in seconds>
#
# enable-cache <service> <yes|no>
# positive-time-to-live <service> <time in seconds>
# negative-time-to-live <service> <time in seconds>
# suggested-size <service> <prime number>
# check-files <service> <yes|no>
# persistent <service> <yes|no>
# shared <service> <yes|no>
# max-db-size <service> <number bytes>
# auto-propagate <service> <yes|no>
#
# Currently supported cache names (services): passwd, group, hosts, services
#
logfile /var/log/nscd.log
threads 4
max-threads 32
server-user nobody
# stat-user somebody
debug-level 9
# reload-count 5
paranoia no
# restart-interval 3600
enable-cache passwd yes
positive-time-to-live passwd 600
negative-time-to-live passwd 20
suggested-size passwd 211
check-files passwd yes
persistent passwd yes
shared passwd yes
max-db-size passwd 33554432
auto-propagate passwd yes
enable-cache group yes
positive-time-to-live group 3600
negative-time-to-live group 60
suggested-size group 211
check-files group yes
persistent group yes
shared group yes
max-db-size group 33554432
auto-propagate group yes
enable-cache hosts yes
positive-time-to-live hosts 3600
negative-time-to-live hosts 20
suggested-size hosts 211
check-files hosts yes
persistent hosts yes
shared hosts yes
max-db-size hosts 33554432
enable-cache services yes
positive-time-to-live services 28800
negative-time-to-live services 20
suggested-size services 211
check-files services yes
persistent services yes
shared services yes
max-db-size services 33554432
resolv.conf
# Generated by dhcpcd from eth0
nameserver 127.0.0.1
domain westell.com
nameserver 192.168.1.1
nameserver 208.67.222.222
nameserver 208.67.220.220
В качестве дополнительного примечания я использую Arch Linux.
примечание: это было перемещено дважды, я никогда не выяснял, почему приложения, за исключением копания, не попадают в кэш nscd, браузеры, IM, IRC, все должно было быть, но они этого не сделали
источник
Ответы:
Причина, по которой вам не хватает попаданий в кеш, заключается в том, что dig запрашивает DNS напрямую. Вы можете попробовать посмотреть, работает ли кеш с помощью
getent
команды:Запускать отдельный DNS с кэшированием - хорошая идея, но вы должны рассмотреть возможность его запуска на сетевом уровне, если это возможно. Если каждый хост кеширует данные отдельно, они все равно будут выполнять несколько запросов для одних и тех же хостов. Одиночный кеш работает вокруг этой проблемы.
Сам Nscd является демоном кэширования для функций NSS. Таким образом, фокус немного отличается от нативных кэширующих серверов имен. Так что если вы просто хотите кэширующий сервер имен, используйте что-то другое, чем nscd. Если вместо этого вы хотите кэшировать такие вещи, как общие имена пользователей и данные хоста вне обычной системы DNS, перейдите к nscd.
И, к сведению, я полюбил преобразователь powerdns (pdns-resolver).
источник
Вам не хватает конфигурации хостов в nscd.conf. Я выкладываю мой в качестве примера:
Это сломает некоторые вещи. Следующая информация из пакета Debian:
источник
Я не так много знаю о nscd, за исключением того, что он так часто вызывал проблемы с поиском DNS, что я всегда отключал его (или, по крайней мере, часть поиска узлов). Nscd позволяет вам устанавливать значения времени жизни, и я знаю, что DNS ожидает «владеть» этими значениями, и все распознаватели их соблюдают. Вы можете получить странные результаты, если TTL в DNS не соблюдаются. Моя рекомендация не использовать nscd для кеширования DNS. Похоже, у вас уже есть кеширующий сервер имен, работающий на вашем локальном компьютере, поэтому нет необходимости дважды кэшировать поиск DNS.
источник
NSCD действительно ненадежен для всего, не только DNS. Этого стоит избегать, если по какой-то причине вам это не нужно. Вам следует использовать специально созданный демон кэширования DNS, если вы хотите кэшировать DNS локально (что является хорошей идеей!).
Два из моих любимых это dnsmasq и dnscache из djbdns .
источник
Если в аду есть DNS-кеширование, оно предоставляется nscd. Не. Использование. Это.
Просто чтобы быть другим: pdnsd на самом деле очень хорошая замена. Или unscd (используется по умолчанию, по крайней мере, в openSUSE).
источник
pdnsd
не работает. Может быть , это хорошая ссылка вместо: members.home.nl/parombouts/pdnsdЯ хотел бы добавить, что когда вы поделились, ваша статистика не будет отображаться правильно:
общие хосты да
http://prefetch.net/blog/index.php/2006/02/08/viewing-name-service-cache-statistics/
Я не видел, чтобы кто-то еще упоминал об этом, и мне потребовалось довольно много времени, чтобы выяснить, почему мой показатель успеха постоянно показывал 0%.
источник