Estou tentando configurar um servidor Bind9 em minha máquina para tentar permitir que um resolvedor resolva os endereços de maneira uniforme, porque os servidores DNS na minha rede local não têm encaminhadores ou configurações de dicas de raiz para nada além da rede local 100% fora do meu controle). Em essência, na rede local, só posso resolver nomes no domínio example.com
(e seus subdomínios).
No entanto, a rede tem a capacidade de acessar a Internet por meio de servidores proxy HTTP e eu consegui configurar um servidor stub DNS-sobre-HTTPS para domínios resolvidos que estão fora da rede por meio desse proxy.
O truque é, de alguma forma, fazer com que meu resolvedor de sistemas resolva nomes, independentemente de onde suas zonas estejam localizadas.
Para piorar ainda mais, a rede local em que estou usando uma estratégia de DNS de "zona dividida", em que alguns dos subdomínios em example.com
só podem ser resolvidos a partir da rede local, e alguns deles da Internet (exigindo que eu passe pelo proxy HTTP para alcançá-los). Portanto, não acho que posso encaminhar consultas para um encaminhador com base no nome do domínio.
Eu achei que poderia configurá-lo configurando o Bind9 no modo forward-only
e fornecê-lo a dois encaminhadores (um IP para um DNS na rede interna e o outro é o servidor stub local), pensando que havia uma maneira de configurá-lo para mover o próximo encaminhador se ele não puder resolver o nome com o primeiro. No entanto, eu continuo recebendo respostas NXDOMAIN para domínios que eu sei muito bem existe em uma zona em um servidor DNS específico, levando-me a acreditar que Bind9 não está tentando ambos os encaminhadores se um entrega NXDOMAIN (ou porque Bind9 não pode fazer isso, ou Estou configurando errado).
Ok, aqui está minha configuração.
/etc/bind/named.conf
:
options {
directory "/var/cache/bind";
forwarders {
// resolved, http_dns_proxy
127.0.0.53; 127.0.0.4;
};
forward only;
listen-on port 53 {127.0.0.1;};
querylog yes;
auth-nxdomain no; # conform to RFC1035
};
/etc/resolv.conf
:
nameserver 127.0.0.1
search example.com
Eu corro http_dns_proxy
da seguinte forma:
sudo ./https_dns_proxy -t http://internal-http-proxy.example.com:3128 -a 127.0.0.4 -p 53
systemd-resolved
está ouvindo em 127.0.0.53:53 enviando consultas para os servidores DNS recebidos do DHCP.
Ok, eu sei que isso parece loucura e tudo, mas quase funciona . Quando tudo isso está em execução, posso fazer dig www.google.com
e dig internal.example.com
, o primeiro resolvendo, porém, http_dns_proxy
e o segundo, dos servidores DNS de minhas redes, mas ambos por meio do Bind9. O problema é que é muito inconsistente. Metade do tempo irá funcionar, e a outra metade começará a resolver apenas nomes usando um dos forwarders (me dando NXDOMAIN se não puder resolvê-lo), até eu liberar o cache do Bind9.
Então, minha pergunta para você é: Existe uma maneira de configurar o Bind9 para forçá-lo a selecionar o próximo encaminhador na lista no caso de um NXDOMAIN? Se não, existe uma implementação de DNS que poderia?
Observação: estou totalmente ciente do que estou tentando fazer, não se encaixa em como o DNS foi projetado (ou deveria ser usado para esse assunto).
Tags bind domain-name-system