Declaração do problema
Eu tenho um servidor de cache e encaminhamento de ligação que está funcionando quase conforme o esperado. Todas as consultas são encaminhadas, seu TTL é armazenado em cache. À primeira vista, tudo parecia normal até que eu observei o tempo de resposta nunca cair abaixo dos 150ms da minha VPN.
Ao executar o tcpdump, descobri que, embora o bind estivesse ciente de que o TTL era maior que 0 (TTL de 14.000 neste caso), o resolvedor ainda estava encaminhando todas as solicitações. O TTL da resposta ainda diminui conforme o esperado , mas cada solicitação ainda é encaminhada upstream, independentemente do TTL restante no registro em cache.
Se eu desabilitar o encaminhamento, esse comportamento cessa e o cache funciona conforme o esperado.
Versão
Bind 9.9.4-29 (Redhat forked)
OS: CentOS 7
Partes relevantes da configuração
allow-query { local; };
recursion yes;
allow-recursion { local; };
max-cache-size unlimited;
stacksize unlimited;
datasize unlimited;
zone "." IN {
type forward;
forward first;
forwarders { 192.168.120.3; 192.168.120.2; };
};
Eu tentei os dois forward first;
e forward only;
este resolvedor quase não tem carga e vários GB de memória disponíveis. A qualquer momento, ele nunca tem mais do que algumas centenas de registros armazenados em cache.
É provável que eu tenha uma expectativa errada de comportamento no bind? Usando o Unbound, não vi esse comportamento, mas gostaria de voltar a vincular por outros motivos.
resolvido
Havia um problema entre o teclado e a cadeira.
o que deu errado
Em minha solução de problemas, eu estava alternando meu /etc/resolv.conf entre os resolvedores locais e upstream.
Causa raiz
Apenas uma xícara de café presente. Eu pensei que tinha mudado de volta para o resolvedor local e não. Desculpas, alarme falso.