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

разреш.конф

# 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

Причина, чому ви не вистачаєте звернень до кешу, полягає в тому, що копати запити DNS безпосередньо. Ви можете спробувати перевірити, чи кеш працює з getentкомандою:

getent hosts host.example.com

Запуск окремого кешування DNS - хороша ідея, але слід поглянути на запуск його на мережевому рівні, якщо це можливо. Якщо кожен хост кешує дані окремо, вони все одно будуть виконувати кілька запитів для одних хостів. Один кеш працює над цією проблемою.

Сам Nscd є демоном кешування для функцій NSS. Тож фокус дещо інший, ніж рідні сервери кешування імен. Тож якщо ви просто хочете сервер імен кешування, використовуйте щось інше, ніж nscd. Якщо замість цього ви хочете кешувати такі речі, як спільні імена користувачів та дані хостів за межами звичайної системи DNS, перейдіть до nscd.

І для запису я дуже полюбився powerdns resolutionver (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 насправді дуже приємна заміна. Або uncd (використовується за замовчуванням, принаймні, у openSUSE).


+1 Це. Для невеликих мереж NSCD або місць із жахливими серверами DNS це серйозний PITA. Це, мабуть, є однією з найчастіших причин, коли я бачу "новачків" перезавантаження серверів Linux і Solaris в будь-якому місці, де я працював.
Сигнал15

1
посилання на не pdnsdпрацює Можливо, це замість цього гарне посилання: members.home.nl/parombouts/pdnsd
Ехтеш Чудхурі

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.