No DNS, a mensagem NXDOMAIN não é exatamente uma falha. É, ou pelo menos é suposto ser, informação perfeitamente válida que o domínio que você pediu não existe. Erros seriam algo como "Eu não sei" ou "Eu não tenho permissão para dizer" ou "[silêncio morto até o tempo limite]".
Em /etc/resolv.conf
, a expectativa é que todos os servidores de nomes configurados sejam iguais. Ou seja, todos devem ter o mesmo acesso às informações de DNS: todos devem conseguir resolver qualquer nome que você precisa resolver.
Se isso não for verdade, o estilo tradicional /etc/resolv.conf
do Unix será insuficiente. Muitos tentaram alcançar o que você procura alterando a ordem dos servidores DNS no arquivo, mas todos falharam: isso simplesmente não funciona dessa maneira.
Em vez disso, você normalmente precisará configurar um resolvedor / cache / proxy de DNS que possa ser configurado com algumas regras como "se o nome que você precisa resolver pertencer a um desses domínios", pergunte a um desses servidores; se o nome estiver em esse domínio, use esse servidor e, para todo o resto, use aqueles servidores. "
Por exemplo, você pode configurar dnsmasq
e escrever algo assim em dnsmasq.conf
:
no-resolv
server=/corporate-domain.com.example/10.1.2.3
rev-server=10.1.0.0/16,10.1.2.3
server=/google.com/8.8.8.8
server=9.9.9.9
Isso significaria:
- ignore
/etc/resolv.conf
(para evitar loops) - use o servidor de nomes 10.1.2.3 para resolver quaisquer nomes no
corporate-domain.com.example
domain e quaisquer consultas inversas para endereços IP na rede 10.1.0.0/16 - use 8.8.8.8 para resolver quaisquer nomes no domínio
google.com
- para todo o resto, use 9.9.9.9.
Quando você tiver o dnsmasq
configurado dessa forma, configure o /etc/resolv.conf
com nameserver 127.0.0.1
apenas para redirecionar todas as solicitações DNS locais para o local dnsmasq
.
Se o seu servidor de nomes local for BIND, você poderá fazer o mesmo usando as declarações de zona de type forward
:
zone "corporate-domain.com.example" {
type forward;
forwarders { 10.1.2.3; };
};
zone "1.10.in-addr.arpa" {
type forward;
forwarders { 10.1.2.3; };
};
zone "google.com" {
type forward;
forwarders { 8.8.8.8; 8.8.4.4; };
};
options {
forwarders { 9.9.9.9; };
forward only;
};
Isso alcança exatamente os mesmos resultados que a configuração dnsmasq
acima, mas a sintaxe de configuração do BIND é um pouco mais detalhada.