
Ich versuche, nscd (Nameservices Cache Daemon) zu verwenden, um DNS lokal zwischenzuspeichern, damit ich nicht mehr Bind dafür verwenden muss. Ich habe es gestartet und ntpd scheint zu versuchen, es zu verwenden. Aber alle anderen Hosts scheinen es zu ignorieren. Wenn ich z. B. 3 Mal nach apache.org suche, wird der Cache nicht erreicht. Ich schaue mir die Cache-Statistiken an, nscd -g
um festzustellen, ob es verwendet wurde. Ich habe auch die Debug-Protokollebene erhöht, um zu sehen, ob es erreicht wird, und die Abfragen erreichen nicht einmal 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
Datei „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 Randbemerkung: Ich verwende Arch Linux.
Hinweis: Dies wurde zweimal verschoben. Ich habe nie herausgefunden, warum Apps, mit Ausnahme von Dig, nicht auf den NSCD-Cache zugreifen. Browser, IM, IRC, alle hätten zugreifen sollen, aber sie taten es nicht.
Antwort1
Der Grund, warum dir die Cache-Treffer fehlen, liegt daran, dass dig den DNS direkt abfragt. Ob der Cache funktioniert, kannst du mit folgendem Befehl ausprobieren getent
:
getent hosts host.example.com
Es ist eine gute Idee, einen separaten DNS-Caching-Server auszuführen, aber Sie sollten ihn, wenn möglich, auf Netzwerkebene ausführen. Wenn jeder Host die Daten separat zwischenspeichert, werden trotzdem 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 liegt also etwas anders als bei nativen Caching-Nameservern. Wenn Sie also nur einen Caching-Nameserver möchten, verwenden Sie etwas anderes als nscd. Wenn Sie stattdessen Dinge wie gemeinsam genutzte Benutzernamen und Hostdaten außerhalb des normalen DNS-Systems zwischenspeichern möchten, verwenden Sie nscd.
Und nur zur Klarstellung: Ich habe den PowerDNS-Resolver (PDNS-Resolver) ziemlich lieb gewonnen.
Antwort2
In nscd.conf fehlt die Hosts-Konfiguration. 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
Dadurch werden einige Dinge kaputt gehen. 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 <[email protected]> Sat, 28 Apr 2007 11:10:56 +0200
Antwort3
Ich weiß nicht viel über nscd, außer dass es so oft Probleme mit DNS-Lookups verursacht hat, dass ich es immer deaktiviert habe (oder zumindest den Teil mit den Host-Lookups). Mit nscd können Sie die Time-to-Live-Werte festlegen, und ich weiß, dass DNS erwartet, diese Werte zu „besitzen“ und dass alle Resolver sie berücksichtigen. Wenn die TTLs in DNS nicht berücksichtigt werden, kann das zu seltsamen Ergebnissen führen. Ich empfehle, nscd nicht zum Zwischenspeichern von DNS zu verwenden. Es sieht so aus, als ob auf Ihrer lokalen Box bereits ein Nameserver mit Zwischenspeicherung läuft, sodass Sie DNS-Lookups nicht zweimal zwischenspeichern müssen.
Antwort4
Wenn es DNS-Caching in der Hölle gibt, wird es von nscd bereitgestellt. Verwenden Sie es nicht.
Nur um anders zu sein:Abonnierenist eigentlich ein sehr guter Ersatz. Oder unscd (wird zumindest in openSUSE standardmäßig verwendet).