Zapytania DNS, które nie używają nscd do buforowania

10

Próbuję użyć nscd (demon bufora nazw) do lokalnego buforowania DNS, aby przestać używać Bind, aby to zrobić. Zacząłem to i wydaje się, że NTTP próbuje go użyć. Ale wszystko inne dla hostów wydaje się ignorować. np. jeśli wykonam 3 apache.org 3 razy, żaden z nich nie trafi do bufora. Przeglądam statystyki pamięci podręcznej, nscd -gaby ustalić, czy została wykorzystana. Również podniosłem poziom dziennika debugowania, aby zobaczyć, czy mogę zobaczyć, jak uderza i zapytania nie trafiają nawet w 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

na marginesie używam Arch Linux.

Uwaga: zostało to przeniesione dwukrotnie, nigdy nie dowiedziałem się, dlaczego aplikacje, z wyjątkiem dig, nie uderzają w pamięć podręczną nscd, przeglądarki, komunikatory, IRC, wszystko powinno być, ale nie

ksenoterracid
źródło
Nie musisz ponownie uruchamiać komputera dla ncsd, możesz go opróżnić lub ponownie uruchomić usługę, działa dla mnie.

Odpowiedzi:

14

Powodem, dla którego brakuje Ci trafień w pamięci podręcznej, jest to, że wykopuje bezpośrednio DNS. Możesz spróbować sprawdzić, czy pamięć podręczna działa z getentpoleceniem:

getent hosts host.example.com

Uruchomienie osobnego buforowania DNS jest dobrym pomysłem, ale jeśli to możliwe, należy rozważyć uruchomienie go na poziomie sieci. Jeśli każdy host buforuje dane osobno, nadal będzie uruchamiał wiele zapytań dla tych samych hostów. Pojedyncza pamięć podręczna rozwiązuje ten problem.

Sam Nscd jest demonem buforującym dla funkcji NSS. Dlatego fokus jest nieco inny niż natywne buforowanie serwerów nazw. Więc jeśli chcesz buforować serwer nazw, użyj czegoś innego niż nscd. Jeśli zamiast tego chcesz buforować rzeczy takie jak wspólne nazwy użytkowników i dane hosta poza normalnym systemem DNS, wybierz nscd.

Dla przypomnienia, polubiłem resolvera powerdns (pdns-resolver).

Ressu
źródło
ale czy nie powinny z niego korzystać inne rzeczy oprócz kopania? to jest system stacjonarny. Wiem, że niektóre programy (takie jak mój menedżer pakietów) nie implementują własnej pamięci podręcznej.
ksenoterrakid
Również poza moim ISP jest to jedyny komputer w sieci;) Staram się tylko unikać opóźnień, ponieważ moje połączenie jest wolne.
ksenoterrakid
2
Inne oprogramowanie powinno rzeczywiście trafić do pamięci podręcznej nscd. Upewnij się, że ponownie uruchomiłeś oprogramowanie po uruchomieniu nscd.
Ponownie uruchomiłem system .... tylko oprogramowanie, które najwyraźniej próbowało użyć nscd, było ntp.
ksenoterrakid
3

Brakuje konfiguracji hostów w nscd.conf. Podaję mój jako przykład:

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

To zepsuje niektóre rzeczy. Następujące informacje pochodzą z pakietu 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 <[email protected]>  Sat, 28 Apr 2007 11:10:56 +0200
jneves
źródło
2
faktycznie mam to wystarczy przewinąć plik w pytaniu.
ksenoterracid
2

Nie wiem zbyt wiele o nscd, z wyjątkiem tego, że tak często powodował problemy z wyszukiwaniem DNS, że zawsze go wyłączałem (lub przynajmniej część wyszukiwania przez hosta). Nscd pozwala ci ustawić wartości czasu do wygaśnięcia i wiem, że DNS spodziewa się „posiadać” te wartości i pozwolić wszystkim programom tłumaczącym je honorować. Możesz skończyć z dziwnymi wynikami, jeśli TTL w DNS nie będą honorowane. Radzę nie używać nscd do buforowania DNS. Wygląda na to, że masz już buforowany serwer nazw działający na twoim lokalnym urządzeniu, więc nie musisz buforować dwukrotnie wyszukiwań DNS.

Marnix A. van Ammers
źródło
Miałem nadzieję go wyłączyć, chociaż to tak naprawdę nie ma znaczenia (moje pudełko jest tak potężne, że ciężar wiązania dla buforowania nie jest problemem). Częściowo jest to teraz kwestia uczenia się czegoś nowego. Brak możliwości uruchomienia go jest nieco denerwujący.
ksenoterracid
1

nscd jest naprawdę zawodny na wszystko, nie tylko na DNS. Warto go unikać, chyba że z jakiegoś powodu desperacko go potrzebujesz. Powinieneś użyć specjalnie zaprojektowanego demona buforującego DNS, jeśli chcesz buforować DNS lokalnie (co jest dobrym pomysłem!).

Dwa z moich ulubionych to dnsmasq i dnscache od djbdns .

apenwarr
źródło
Aby korzystać z nscd, musisz najpierw zrozumieć, jak to działa, że ​​jest to systemowy system pamięci podręcznej, a nie zwykły demon pamięci podręcznej dns
higuita
1

Jeśli w Hell jest buforowanie DNS, zapewnia je nscd. Nie rób Posługiwać się. To.

Po prostu inaczej: pdnsd jest naprawdę bardzo dobrym zamiennikiem. Lub unscd (domyślnie używany przynajmniej w openSUSE).

Janne Pikkarainen
źródło
+1 to. W przypadku małych sieci NSCD lub miejsc z okropnymi serwerami DNS jest to poważna PITA. To musi być jeden z najczęstszych powodów, dla których widzę, że „początkujący” restartują serwery Linux i Solaris w każdym miejscu, w którym pracowałem.
Signal15
1
link do pdnsdjest wyłączony. Może jest to dobre połączenie zamiast: members.home.nl/parombouts/pdnsd
Ehtesh Choudhury
1

Chciałbym dodać, że po udostępnieniu włączone statystyki nie będą poprawnie odzwierciedlać:

współdzieleni gospodarze tak

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

Nie widziałem, żeby ktokolwiek o tym wspominał i zajęło mi sporo czasu, aby dowiedzieć się, dlaczego mój współczynnik trafień wciąż wyświetla się jako 0%

Pieter de Bruin
źródło