Consultas DNS que no usan nscd para el almacenamiento en caché

10

Estoy tratando de usar nscd (Nameservices Cache Daemon) para almacenar en caché el DNS localmente para poder dejar de usar Bind para hacerlo. Comencé y ntpd parece intentar usarlo. Pero todo lo demás para los hosts parece ignorarlo. por ejemplo, si cavo apache.org 3 veces, ninguno de ellos llegará al caché. Estoy viendo las estadísticas de caché usando nscd -gpara determinar si se ha usado. También he subido el nivel de registro de depuración para ver si puedo verlo presionando y las consultas ni siquiera llegan a 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

como una nota al margen estoy usando Arch Linux.

nota: esto se ha movido dos veces, nunca he descubierto por qué las aplicaciones, excluyendo la excavación, no están llegando al caché nscd, los navegadores, IM, IRC, todo debería haber sido, pero no lo hicieron

xenoterracida
fuente
No tiene que reiniciar la máquina para ncsd, puede vaciarla o reiniciar el servicio, funciona para mí.

Respuestas:

14

La razón por la que te faltan los hits de caché es que las consultas de excavación del DNS directamente. Puede intentar ver si el caché funciona con el getentcomando:

getent hosts host.example.com

Ejecutar un DNS de almacenamiento en caché por separado es una buena idea, pero debe considerar ejecutarlo en el nivel de red si es posible. Si cada host almacena en caché los datos por separado, seguirán ejecutando múltiples consultas para los mismos hosts. El caché único funciona alrededor de este problema.

Nscd en sí es un demonio de almacenamiento en caché para funciones NSS. Por lo tanto, el enfoque es un poco diferente al de los servidores de nombres de almacenamiento en caché nativo. Entonces, si solo desea un servidor de nombres de almacenamiento en caché, use algo más que nscd. Si, en cambio, desea almacenar en caché cosas como nombres de usuario compartidos y datos de host fuera del sistema DNS normal, busque nscd.

Y para que conste, me he aficionado bastante al powerdns resolver (pdns-resolver).

Ressu
fuente
pero, ¿no deberían estarlo otras cosas además de cavar? Este es un sistema de escritorio. Sé que parte del software (como mi administrador de paquetes) no implementa su propia caché.
xenoterracide
También fuera de mi ISP, esta es la única computadora en la red;) Solo estoy tratando de evitar la latencia ya que mi conexión es lenta.
xenoterracide
2
Otro software debería llegar al caché nscd. Solo asegúrese de reiniciar el software después de iniciar nscd.
Reinicié el sistema ... el único software que aparentemente intentaba usar nscd era ntp.
xenoterracide
3

Te falta la configuración de hosts en nscd.conf. Estoy publicando el mío como ejemplo:

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

Esto romperá algunas cosas. La siguiente información es del paquete 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 <[email protected]>  Sat, 28 Apr 2007 11:10:56 +0200
jneves
fuente
2
De hecho, tengo esto, solo tienes que desplazar el archivo en la pregunta.
xenoterracide
2

No sé mucho acerca de nscd, excepto que a menudo causaba problemas con las búsquedas de DNS que siempre lo desactivaba (o al menos la parte de las búsquedas de host). Nscd le permite establecer los valores de tiempo de vida y sé que DNS espera "poseer" esos valores y que todos los resolutores los respeten. Puede terminar con resultados extraños si no se respetan los TTL en DNS. Mi recomendación es no usar nscd para almacenar DNS en caché. Parece que ya tiene un servidor de nombres en caché ejecutándose en su casilla local, por lo que no es necesario almacenar en caché las búsquedas de DNS dos veces.

Marnix A. van Ammers
fuente
Esperaba deshabilitarlo, aunque en realidad no importa (mi caja es tan poderosa que el peso del enlace para el almacenamiento en caché no es un problema). Esto es en parte una cuestión de aprender algo nuevo. No poder hacerlo funcionar es un poco molesto.
xenoterracide
1

nscd es realmente poco confiable para todo, no solo para DNS. Vale la pena evitarlo a menos que lo necesites desesperadamente por alguna razón. Debería usar un demonio de almacenamiento en caché DNS hecho a medida si desea almacenar en caché DNS localmente (¡lo cual es una buena idea!).

Dos de mis favoritos son dnsmasq y dnscache de djbdns .

Apenwarr
fuente
Para usar nscd, primero debe comprender cómo funciona, que es un sistema de caché del sistema, no un simple demonio dns cache
higuita
1

Si hay almacenamiento en caché de DNS en el infierno, es proporcionado por nscd. No lo hagas Utilizar. Eso.

Para ser diferente: pdnsd es en realidad un muy buen reemplazo. O unscd (usado por defecto al menos en openSUSE).

Janne Pikkarainen
fuente
+1 esto. Para redes pequeñas NSCD, o lugares con servidores DNS horribles, esta es una PITA seria. Esta tiene que ser una de las razones más frecuentes por las que veo a los "novatos" reiniciando los servidores Linux y Solaris en cualquier lugar donde haya trabajado.
Señal15
1
enlace a pdnsdestá abajo. Tal vez este es un buen enlace en su lugar: members.home.nl/parombouts/pdnsd
Ehtesh Choudhury