Estou tentando usar o nscd (Daemon de cache de serviços de nomes) para armazenar em cache o DNS localmente, para que eu possa parar de usar o Bind para fazer isso. Eu comecei e o ntpd parece tentar usá-lo. Mas tudo o mais para os hosts parece ignorá-lo. por exemplo, se eu cavar o apache.org 3 vezes, nenhum deles atingirá o cache. Estou visualizando as estatísticas de cache nscd -g
para determinar se elas foram usadas. Também subi o nível do log de depuração para ver se consigo vê-lo atingindo e as consultas nem sequer atingem o 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 uma nota lateral, estou usando o Arch Linux.
nota: isso foi movido duas vezes, eu nunca descobri por que os aplicativos, excluindo dig, não estão atingindo o cache nscd, navegadores, mensagens instantâneas, IRC, todos deveriam ter sido, mas não o fizeram
fonte
Respostas:
A razão pela qual você está perdendo as ocorrências do cache é que a escavação consulta o DNS diretamente. Você pode tentar e ver se o cache funciona com o
getent
comando:A execução de um DNS de cache separado é uma boa ideia, mas considere executá-lo no nível da rede, se possível. Se cada host armazenar em cache os dados separadamente, eles ainda executarão várias consultas para os mesmos hosts. O cache único soluciona esse problema.
O próprio Nscd é um daemon de armazenamento em cache para funções do NSS. Portanto, o foco é um pouco diferente dos servidores de nomes com cache nativo. Portanto, se você deseja apenas um servidor de nomes em cache, use algo diferente de nscd. Se você deseja armazenar em cache coisas como nomes de usuário e dados do host compartilhados fora do sistema DNS normal, vá para nscd.
E, para que conste, gostei bastante do powerdns resolver (pdns-resolv).
fonte
Está faltando a configuração de hosts no nscd.conf. Estou postando o meu como um exemplo:
Isso vai quebrar algumas coisas. A seguinte informação é do pacote Debian:
fonte
Não sei muito sobre o nscd, exceto que muitas vezes causava problemas nas pesquisas de DNS que eu sempre o desabilitava (ou pelo menos as pesquisas de host fazem parte dele). O Nscd permite que você defina os valores de tempo de vida útil e sei que o DNS espera "possuir" esses valores e que todos os resolvedores os honrem. Você pode obter resultados estranhos se os TTLs no DNS não forem respeitados. Minha recomendação é não usar o nscd para armazenar em cache o DNS. Parece que você já possui um servidor de nomes em cache em execução na sua caixa local, portanto, não há necessidade de armazenar em cache as pesquisas de DNS duas vezes.
fonte
O nscd não é realmente confiável para tudo, não apenas para o DNS. Vale a pena evitar, a menos que você precise desesperadamente por algum motivo. Você deve usar um daemon de cache DNS específico para o objetivo, se desejar armazenar em cache o DNS localmente (o que é uma boa ideia!).
Dois dos meus favoritos são dnsmasq e dnscache de djbdns .
fonte
Se houver cache de DNS no inferno, ele será fornecido pelo nscd. Não. Usar. Isto.
Apenas para ser diferente: o pdnsd é realmente um substituto muito bom. Ou unscd (usado por padrão pelo menos no openSUSE).
fonte
pdnsd
está inoperante. Talvez esta seja uma boa ligação em vez disso: members.home.nl/parombouts/pdnsdGostaria de acrescentar que, quando você tiver compartilhado ativado, suas estatísticas não refletirão corretamente:
hosts compartilhados sim
http://prefetch.net/blog/index.php/2006/02/08/viewing-name-service-cache-statistics/
Eu não vi mais ninguém mencionar isso e levei algum tempo para descobrir por que minha taxa de acertos continuava aparecendo como 0%
fonte