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 -g
para 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
fuente
Respuestas:
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
getent
comando: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).
fuente
Te falta la configuración de hosts en nscd.conf. Estoy publicando el mío como ejemplo:
Esto romperá algunas cosas. La siguiente información es del paquete Debian:
fuente
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.
fuente
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 .
fuente
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).
fuente
pdnsd
está abajo. Tal vez este es un buen enlace en su lugar: members.home.nl/parombouts/pdnsdMe gustaría agregar que cuando haya compartido habilitado sus estadísticas no se reflejarán correctamente:
hosts compartidos si
http://prefetch.net/blog/index.php/2006/02/08/viewing-name-service-cache-statistics/
No vi a nadie más mencionar esto y me llevó bastante tiempo descubrir por qué mi índice de aciertos seguía mostrándose como 0%
fuente