Requêtes DNS n'utilisant pas nscd pour la mise en cache


10

J'essaie d'utiliser nscd (Nameservices Cache Daemon) pour mettre en cache DNS localement afin que je puisse arrêter d'utiliser Bind pour le faire. Je l'ai commencé et ntpd semble essayer de l'utiliser. Mais tout le reste pour les hôtes semble l'ignorer. Par exemple, si je creuse apache.org 3 fois, aucun d'entre eux n'atteindra le cache. J'affiche les statistiques du cache en utilisant nscd -gpour déterminer si elles ont été utilisées. J'ai également augmenté le niveau du journal de débogage pour voir si je peux le voir frapper et les requêtes ne frappent même pas 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

comme une sorte de note latérale j'utilise Arch Linux.

note: cela a été déplacé deux fois, je n'ai jamais compris pourquoi les applications, à l'exception de dig, ne frappent pas le cache nscd, les navigateurs, la messagerie instantanée, l'IRC, tout aurait dû l'être, mais ils ne l'ont pas fait


Vous n'avez pas à redémarrer la machine pour ncsd, vous pouvez la vider ou redémarrer le service, fonctionne pour moi.

Réponses:


14

La raison pour laquelle vous manquez les hits de cache est que dig interroge directement le DNS. Vous pouvez essayer de voir si le cache fonctionne avec la getentcommande:

getent hosts host.example.com

L'exécution d'un DNS de mise en cache distinct est une bonne idée, mais vous devriez envisager de l'exécuter au niveau du réseau si possible. Si chaque hôte met en cache les données séparément, il exécutera toujours plusieurs requêtes pour les mêmes hôtes. Le cache unique contourne ce problème.

Nscd lui-même est un démon de mise en cache pour les fonctions NSS. Le focus est donc un peu différent de celui des serveurs de noms de mise en cache native. Donc, si vous voulez juste un serveur de noms en cache, utilisez autre chose que nscd. Si à la place vous souhaitez mettre en cache des choses comme les noms d'utilisateur partagés et les données d'hôtes en dehors du système DNS normal, optez pour nscd.

Et pour mémoire, je suis devenu très friand du résolveur powerdns (pdns-resolver).


mais autre chose que creuser ne devrait-il pas sembler l'utiliser? c'est un système de bureau. Je sais que certains logiciels (comme mon gestionnaire de packages) n'implémentent pas leur propre cache.
xenoterracide

En dehors de mon FAI, c'est le seul ordinateur du réseau;) J'essaie juste d'éviter la latence car ma connexion est lente.
xenoterracide

2
D'autres logiciels devraient en effet toucher le cache nscd. Assurez-vous simplement de redémarrer le logiciel après avoir démarré nscd.

J'ai redémarré le système .... seul le logiciel pour tenter apparemment d'utiliser nscd était ntp.
xenoterracide

3

Vous manquez la configuration des hôtes dans nscd.conf. Je poste le mien à titre d'exemple:

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

Cela cassera certaines choses. Les informations suivantes proviennent du paquet 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
en fait j'ai ce que vous avez juste à faire défiler le fichier dans la question.
xenoterracide

2

Je ne sais pas grand-chose sur nscd, sauf qu'il a si souvent causé des problèmes avec les recherches DNS que je l'ai toujours désactivé (ou du moins la partie de recherche d'hôte). Nscd vous permet de définir les valeurs de durée de vie et je sais que DNS s'attend à "posséder" ces valeurs et à ce que tous les résolveurs les respectent. Vous pouvez vous retrouver avec des résultats étranges si les TTL dans DNS ne sont pas respectés. Ma recommandation est de ne pas utiliser nscd pour la mise en cache DNS. Il semble que vous ayez déjà un serveur de noms en cache en cours d'exécution sur votre boîtier local, donc pas besoin de mettre en cache les recherches DNS deux fois.


J'espérais le désactiver, même si cela n'a pas vraiment d'importance (ma boîte est si puissante que le poids de bind pour la mise en cache n'est pas un problème). Il s'agit en partie maintenant d'apprendre simplement quelque chose de nouveau. Ne pas pouvoir le faire fonctionner est un peu ennuyeux.
xenoterracide

1

nscd n'est vraiment pas fiable pour tout, pas seulement pour DNS. Cela vaut la peine d'être évité, sauf si vous en avez désespérément besoin pour une raison quelconque. Vous devez utiliser un démon de mise en cache DNS spécialement conçu si vous souhaitez mettre en cache DNS localement (ce qui est une bonne idée!).

Deux de mes favoris sont dnsmasq et dnscache de djbdns .


Pour utiliser nscd, vous devez d'abord comprendre comment cela fonctionne, qu'il s'agit d'un système de cache système, et non d'un démon de cache DNS simple
higuita

1

S'il y a une mise en cache DNS en enfer, elle est fournie par nscd. Non. Utilisation. Il.

Juste pour être différent: pdnsd est en fait un très bon remplacement. Ou unscd (utilisé par défaut au moins dans openSUSE).


+1 Ceci. Pour les petits réseaux NSCD, ou les endroits avec d'horribles serveurs DNS, c'est un PITA sérieux. Cela doit être l'une des raisons les plus fréquentes pour lesquelles je vois des "débutants" redémarrer des serveurs Linux et Solaris partout où j'ai travaillé.
Signal15

1
lien vers pdnsdest en baisse. Peut-être cela est un bon lien à la place: members.home.nl/parombouts/pdnsd
Ehtesh Choudhury

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.