Acabamos de configurar um servidor DNS recursivo usando a versão estável mais recente do Bind 9.10
Estamos descobrindo que as pesquisas DNS recursivas são bastante lentas. Em qualquer lugar de 1 a 3 segundos. Depois que a pesquisa está no cache, o DNS é resolvido em questão de milissegundos, conforme o esperado.
Estamos utilizando dicas ROOT para as pesquisas recursivas e parece que é de onde vem a lentidão. Se configurarmos um encaminhador, a resolução do DNS diminuirá para um tempo de recursão sensato de 100 - 300ms.
Para o serviço que estamos configurando, não quero contar com encaminhadores, prefiro usar dicas de raiz.
Aqui está a principal configuração do nosso arquivo named.conf . Qualquer ponteiro para ajudar a melhorar o desempenho seria ótimo.
options{
allow-recursion { any; };
allow-query-cache { any; };
allow-query { any; };
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
zone-statistics yes;
max-cache-ttl 3600;
max-ncache-ttl 3600;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/stats/named_stats.txt";
memstatistics-file "/var/named/stats/named_mem_stats.txt";
rate-limit {
responses-per-second 10;
log-only yes;
};
prefetch 5;};
zone "." {
type hint;
file "named.ca";};
include "/var/named/conf/logging.conf";
Respostas:
Encontramos o problema. Foi um problema de transferência de hardware da NIC.
A execução
tcpdump -vvv -s 0 -l -n port 53
encontrou vários[bad udp cksum 6279!]
erros para cada consulta DNS.Uma pequena navegação no Google me apontou na direção certa. Como se vê, devido ao nosso sistema CentOS sendo executado como VM no XenServer (problemas semelhantes relatados com o VMWare etc.), o descarregamento de hardware da NIC é ativado por padrão.
A corrida
ethtool -k eth0 | grep on
mostrou o seguinteExecutando o
ethtool -K eth0 tx off rx off
TCP TCP descarregado desativado. Reiniciei o serviço de rede por uma boa medidae testado BIND. Agora estamos obtendo tempos de resposta muito rápidos do BIND
fonte
Eu tive esse mesmo problema com consultas recursivas muito lentas em um servidor físico do CentOS 7 BIND e encontrei essa resposta (TX Offloading) e muitas correções orientadas ao IPv6 em torno de vários threads, nenhum dos quais funcionou para mim.
Acontece que o local do servidor em questão tinha um firewall Cisco ASA mais antigo, que limitava o tamanho dos pacotes de resposta UDP a 512 bytes; Atualmente, parece que as respostas UDP para consultas DNS geralmente são muito maiores, até cerca de 2000 bytes. Há uma página sobre isso aqui:
Por que o DNS através do UDP tem um limite de 512 bytes?
Eu configurei o ASA para permitir pacotes de resposta UDP maiores (há um comando de correção específico para isso) que resolveu o problema:
https://supportforums.cisco.com/t5/getting-started-with-lans/dns-dropped-because-packets-to-big-for-configured-512/td-p/861718
fonte