DNS-запросы не используют nscd для кеширования


10

Я пытаюсь использовать 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, все должно было быть, но они этого не сделали


Вам не нужно перезагружать машину для ncsd, вы можете сбросить ее или перезапустить службу, у меня работает.

Ответы:


14

Причина, по которой вам не хватает попаданий в кеш, заключается в том, что dig запрашивает DNS напрямую. Вы можете попробовать посмотреть, работает ли кеш с помощью getentкоманды:

getent hosts host.example.com

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

Сам Nscd является демоном кэширования для функций NSS. Таким образом, фокус немного отличается от нативных кэширующих серверов имен. Так что если вы просто хотите кэширующий сервер имен, используйте что-то другое, чем nscd. Если вместо этого вы хотите кэшировать такие вещи, как общие имена пользователей и данные хоста вне обычной системы DNS, перейдите к nscd.

И, к сведению, я полюбил преобразователь powerdns (pdns-resolver).


но разве другие вещи, кроме копания, не должны его использовать? это настольная система. Я знаю, что некоторые из программ (например, мой менеджер пакетов) не имеют своего собственного кеша.
ксенотеррацид

Кроме того, за пределами моего интернет-провайдера, это единственный компьютер в сети;) Я просто пытаюсь избежать задержки, так как мое соединение медленное.
ксенотеррацид

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

Я перезагрузил систему .... единственным программным обеспечением, по-видимому, попытка использовать nscd был ntp.
ксенотеррацид

3

Вам не хватает конфигурации хостов в nscd.conf. Я выкладываю мой в качестве примера:

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

Это сломает некоторые вещи. Следующая информация из пакета Debian:

  Since this release, hosts caching in nscd is off by default: for some of the
  libc calls (gethostby* calls) nscd does not respect the DNS TTLs.  It can
  lead to system lockups (e.g. if you are using pam-ldap and change the IP of
  your authentication server) hence is not considered safe.

  See debian bug #335476 and how upstream answered to that in
  http://sourceware.org/bugzilla/show_bug.cgi?id=4428.

 -- Pierre Habouzit <madcoder@debian.org>  Sat, 28 Apr 2007 11:10:56 +0200

2
на самом деле у меня есть это, вам просто нужно прокрутить файл в вопросе.
ксенотеррацид

2

Я не так много знаю о nscd, за исключением того, что он так часто вызывал проблемы с поиском DNS, что я всегда отключал его (или, по крайней мере, часть поиска узлов). Nscd позволяет вам устанавливать значения времени жизни, и я знаю, что DNS ожидает «владеть» этими значениями, и все распознаватели их соблюдают. Вы можете получить странные результаты, если TTL в DNS не соблюдаются. Моя рекомендация не использовать nscd для кеширования DNS. Похоже, у вас уже есть кеширующий сервер имен, работающий на вашем локальном компьютере, поэтому нет необходимости дважды кэшировать поиск DNS.


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

1

NSCD действительно ненадежен для всего, не только DNS. Этого стоит избегать, если по какой-то причине вам это не нужно. Вам следует использовать специально созданный демон кэширования DNS, если вы хотите кэшировать DNS локально (что является хорошей идеей!).

Два из моих любимых это dnsmasq и dnscache из djbdns .


Чтобы использовать nscd, вам нужно сначала понять, как это работает, что это система системного кеша, а не простой демон DNS-кеша
higuita

1

Если в аду есть DNS-кеширование, оно предоставляется nscd. Не. Использование. Это.

Просто чтобы быть другим: pdnsd на самом деле очень хорошая замена. Или unscd (используется по умолчанию, по крайней мере, в openSUSE).


+1 это. Для небольших сетей NSCD или мест с ужасными DNS-серверами это серьезная PITA. Это должно быть одной из самых частых причин, по которым я вижу, как «новички» перезагружают серверы Linux и Solaris в любом месте, где я работал.
Сигнал15

1
ссылка на pdnsdне работает. Может быть , это хорошая ссылка вместо: members.home.nl/parombouts/pdnsd
Ehtesh Чоудхури

1

Я хотел бы добавить, что когда вы поделились, ваша статистика не будет отображаться правильно:

общие хосты да

http://prefetch.net/blog/index.php/2006/02/08/viewing-name-service-cache-statistics/

Я не видел, чтобы кто-то еще упоминал об этом, и мне потребовалось довольно много времени, чтобы выяснить, почему мой показатель успеха постоянно показывал 0%.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.