DNS-Abfragen verwenden nscd nicht zum Zwischenspeichern


10

Ich versuche, nscd (Nameservices Cache Daemon) zu verwenden, um DNS lokal zwischenzuspeichern, damit ich Bind nicht mehr verwenden kann. Ich habe es gestartet und ntpd scheint zu versuchen, es zu verwenden. Aber alles andere für Gastgeber scheint es zu ignorieren. zB wenn ich dreimal apache.org grabe, wird keiner von ihnen den Cache treffen. Ich sehe mir die Cache-Statistiken an, nscd -gum festzustellen, ob sie verwendet wurden. Ich habe auch die Debug-Protokollstufe erhöht, um zu sehen, ob ich sie treffen kann und die Abfragen nicht einmal nscd treffen.

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

Als Randnotiz verwende ich Arch Linux.

Hinweis: Dies wurde zweimal verschoben. Ich habe nie herausgefunden, warum Apps, außer dig, nicht auf den nscd-Cache treffen, Browser, IM, IRC, alles hätte sein sollen, aber sie haben es nicht getan


Sie müssen den Computer für ncsd nicht neu starten, Sie können ihn leeren oder den Dienst neu starten, funktioniert für mich.

Antworten:


14

Der Grund, warum Sie die Cache-Treffer vermissen, ist, dass dig den DNS direkt abfragt. Sie können versuchen, festzustellen, ob der Cache mit dem folgenden getentBefehl funktioniert :

getent hosts host.example.com

Das Ausführen eines separaten Caching-DNS ist eine gute Idee, Sie sollten es jedoch nach Möglichkeit auf Netzwerkebene ausführen. Wenn jeder Host die Daten separat zwischenspeichert, werden immer noch mehrere Abfragen für dieselben Hosts ausgeführt. Ein einzelner Cache umgeht dieses Problem.

Nscd selbst ist ein Caching-Daemon für NSS-Funktionen. Der Fokus unterscheidet sich also ein wenig von nativen Caching-Nameservern. Wenn Sie also nur einen Caching-Nameserver möchten, verwenden Sie etwas anderes als nscd. Wenn Sie stattdessen Dinge wie freigegebene Benutzernamen und Hostdaten außerhalb des normalen DNS-Systems zwischenspeichern möchten, wählen Sie nscd.

Und fürs Protokoll: Ich habe PowerDNS-Resolver (pdns-Resolver) sehr gemocht.


aber sollten nicht andere Sachen außer dig es benutzen? Dies ist ein Desktop-System. Ich weiß, dass ein Teil der Software (wie mein Paketmanager) keinen eigenen Cache implementiert.
Xenoterracide

Auch außerhalb meines ISP ist dies der einzige Computer im Netzwerk;) Ich versuche nur, Latenz zu vermeiden, da meine Verbindung langsam ist.
Xenoterracide

2
Andere Software sollte tatsächlich den nscd-Cache treffen. Stellen Sie einfach sicher, dass Sie die Software nach dem Start von nscd neu starten.

Ich habe das System neu gestartet ... nur Software, die scheinbar versucht, nscd zu verwenden, war ntp.
Xenoterracide

3

Sie vermissen die Hosts-Konfiguration in nscd.conf. Ich poste meine als Beispiel:

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

Dies wird einige Dinge brechen. Die folgenden Informationen stammen aus dem Debian-Paket:

  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
Eigentlich habe ich das, Sie müssen nur die Datei in der Frage scrollen.
Xenoterracide

2

Ich weiß nicht so viel über nscd, außer dass es so oft Probleme mit DNS-Lookups verursachte, dass ich es immer deaktiviert habe (oder zumindest den Teil der Host-Lookups). Mit Nscd können Sie die Time-to-Live-Werte festlegen, und ich weiß, dass DNS erwartet, diese Werte zu "besitzen" und von allen Resolvern zu berücksichtigen. Sie können seltsame Ergebnisse erzielen, wenn die TTLs in DNS nicht berücksichtigt werden. Meine Empfehlung ist, nscd nicht zum Zwischenspeichern von DNS zu verwenden. Es sieht so aus, als ob auf Ihrer lokalen Box bereits ein Caching-Nameserver ausgeführt wird, sodass Sie DNS-Lookups nicht zweimal zwischenspeichern müssen.


Ich hatte gehofft, es zu deaktivieren, obwohl es nicht wirklich wichtig ist (meine Box ist so leistungsfähig, dass das Gewicht der Bindung für das Caching kein Problem darstellt). Hier geht es teilweise nur darum, etwas Neues zu lernen. Es ist ein bisschen nervig, es nicht zum Laufen zu bringen.
Xenoterracide

1

nscd ist wirklich für alles unzuverlässig, nicht nur für DNS. Es lohnt sich zu vermeiden, es sei denn, Sie brauchen es aus irgendeinem Grund dringend. Sie sollten einen speziell entwickelten DNS-Caching-Daemon verwenden, wenn Sie DNS lokal zwischenspeichern möchten (was eine gute Idee ist!).

Zwei meiner Favoriten sind dnsmasq und dnscache von djbdns .


Um nscd verwenden zu können, müssen Sie zunächst verstehen, wie es funktioniert, dass es sich um ein System- Cache-System handelt, nicht um einen einfachen DNS-Cache-Daemon
higuita

1

Wenn es in der Hölle DNS-Caching gibt, wird es von nscd bereitgestellt. Tu es nicht. Verwenden. Es.

Nur um anders zu sein: pdnsd ist eigentlich ein sehr schöner Ersatz. Oder unscd (standardmäßig zumindest in openSUSE verwendet).


+1 Dies. Für kleine Netzwerke NSCD oder Orte mit schrecklichen DNS-Servern ist dies eine ernsthafte PITA. Dies muss einer der häufigsten Gründe sein, warum "Neulinge" Linux- und Solaris-Server an jedem Ort neu starten, an dem ich gearbeitet habe.
Signal15

1
Link zu pdnsdist ausgefallen. Vielleicht ist dies stattdessen ein guter Link: members.home.nl/parombouts/pdnsd
Ehtesh Choudhury

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.