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 -g
um 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
quelle
Antworten:
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
getent
Befehl funktioniert :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.
quelle
Sie vermissen die Hosts-Konfiguration in nscd.conf. Ich poste meine als Beispiel:
Dies wird einige Dinge brechen. Die folgenden Informationen stammen aus dem Debian-Paket:
quelle
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.
quelle
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 .
quelle
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).
quelle
pdnsd
ist ausgefallen. Vielleicht ist dies stattdessen ein guter Link: members.home.nl/parombouts/pdnsdIch möchte hinzufügen, dass Ihre Statistiken nicht korrekt wiedergegeben werden, wenn Sie die Freigabe aktiviert haben:
Shared Hosts ja
http://prefetch.net/blog/index.php/2006/02/08/viewing-name-service-cache-statistics/
Ich habe niemanden gesehen, der dies erwähnte, und es dauerte einige Zeit, bis ich herausgefunden hatte, warum meine Trefferquote immer wieder 0% betrug.
quelle