Query DNS che non utilizzano nscd per la memorizzazione nella cache


10

Sto cercando di utilizzare nscd (Nameservices Cache Daemon) per memorizzare nella cache DNS localmente in modo da poter smettere di usare Bind per farlo. Ho iniziato e ntpd sembra tentare di usarlo. Ma tutto il resto per gli host sembra ignorarlo. ad es. se scavo apache.org 3 volte nessuno di loro colpirà la cache. Sto visualizzando le statistiche della cache utilizzando nscd -gper determinare se è stato utilizzato. Ho anche alzato il livello del registro di debug per vedere se riesco a vederlo colpire e le query non hanno nemmeno colpito 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

come una specie di nota a margine sto usando Arch Linux.

nota: questo è stato spostato due volte, non ho mai capito perché le app, escluso lo scavo, non stiano colpendo la cache nscd, i browser, la messaggistica istantanea, l'IRC, tutto avrebbe dovuto essere, ma non lo hanno fatto


Non è necessario riavviare il computer per ncsd, è possibile scaricarlo o riavviare il servizio, funziona per me.

Risposte:


14

Il motivo per cui mancano gli accessi alla cache è che lo scavo interroga direttamente il DNS. Puoi provare a vedere se la cache funziona con il getentcomando:

getent hosts host.example.com

L'esecuzione di un DNS di memorizzazione nella cache separato è una buona idea, ma dovresti considerare di eseguirlo a livello di rete, se possibile. Se ciascun host memorizza nella cache i dati separatamente, eseguiranno comunque più query per gli stessi host. La cache singola risolve questo problema.

Nscd stesso è un demone di memorizzazione nella cache per le funzioni NSS. Quindi il focus è un po 'diverso dai nameserver della cache nativa. Quindi, se vuoi solo un nameserver con memorizzazione nella cache, usa qualcosa di diverso da nscd. Se invece desideri memorizzare nella cache elementi come nomi utente condivisi e hostdata al di fuori del normale sistema DNS, scegli nscd.

E per la cronaca, mi sono appassionato al risolutore powerdns (risolutore pdns).


ma non dovrebbero apparire altre cose oltre a scavare? questo è un sistema desktop. So che alcuni software (come il mio gestore di pacchetti) non implementano la propria cache.
xenoterracide,

Anche al di fuori del mio ISP questo è l'unico computer in rete;) Sto solo cercando di evitare la latenza poiché la mia connessione è lenta.
xenoterracide,

2
Altri software dovrebbero effettivamente colpire la cache nscd. Assicurati di riavviare il software dopo aver avviato nscd.

Ho riavviato il sistema .... solo il software per tentare apparentemente di usare nscd era ntp.
xenoterracide il

3

Manca la configurazione degli host in nscd.conf. Sto postando il mio come esempio:

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

Questo romperà alcune cose. Le seguenti informazioni provengono dal pacchetto 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
in realtà ho questo devi solo scorrere il file nella domanda.
xenoterracide,

2

Non so molto di nscd, tranne per il fatto che spesso ha causato problemi con le ricerche DNS che l'ho sempre disabilitato (o almeno le ricerche degli host ne fanno parte). Nscd ti consente di impostare i valori di time-to-live e so che DNS si aspetta di "possedere" quei valori e che tutti i resolver li rispettino. Puoi ottenere risultati strani se i TTL nel DNS non vengono rispettati. La mia raccomandazione è di non usare nscd per memorizzare nella cache DNS. Sembra che tu abbia già un server dei nomi di cache in esecuzione sulla tua casella locale, quindi non è necessario memorizzare due volte nella cache le ricerche DNS.


Speravo di disabilitarlo, anche se non ha molta importanza (la mia casella è così potente che il peso del bind per la cache non è un problema). Questo in parte ora è solo questione di imparare qualcosa di nuovo. Non riuscire a farlo funzionare è un po 'fastidioso.
xenoterracide

1

nscd è davvero inaffidabile per tutto, non solo per DNS. Vale la pena evitarlo a meno che tu non ne abbia disperatamente bisogno per qualche motivo. Dovresti usare un demone di cache DNS appositamente creato se vuoi memorizzare nella cache DNS localmente (che è una buona idea!).

Due dei miei preferiti sono dnsmasq e dnscache di djbdns .


Per usare nscd, devi prima capire come funziona, che è un sistema cache di sistema, non un semplice demone cache dns
higuita

1

Se è presente la memorizzazione nella cache DNS in Hell, viene fornita da nscd. Non farlo. Uso. Si.

Solo per essere diversi: pdnsd è in realtà un sostituto molto bello. O unscd (usato di default almeno in openSUSE).


+1 questo. Per piccole reti NSCD o luoghi con orribili server DNS, questa è una PITA seria. Questo deve essere uno dei motivi più frequenti per cui vedo "principianti" riavviare i server Linux e Solaris in qualsiasi posto in cui ho lavorato.
Signal15,

1
il link a pdnsdè inattivo. Forse questo è un buon collegamento invece: members.home.nl/parombouts/pdnsd
Ehtesh Choudhury

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.