Eu já estava fazendo uma pergunta semelhante que era muito específica ( nomeada para uso interno e encaminhando subdomínios específicos ). Para essa pergunta, encontrei uma solução alternativa que não está OK.
Agora estou fazendo uma pergunta mais geral. A pergunta é por que resolver outras zonas depende da configuração da zona "."?
Temos um DNS que não tem acesso à internet, porque queremos que ele resolva apenas nomes de domínio locais. Queremos que ele resolva apenas um domínio externo. Vamos chamá-lo de dmz.example.com. A configuração para essa zona em /etc/named.conf é:
zone "dmz.example.com" in
{
type forward;
forwarders { 10.100.1.1; 10.100.1.2; }; // DMZ DNSes
};
Como não queremos que nossos DNSs resolvam domínios externos/de internet, fizemos isso com o arquivo root.servers vazio assim:
zone "."
{
type hint;
file "root.servers"; // root.server is empty file
};
Quando o DNS é solicitado para um domínio de internet, ele retorna imediatamente no-answer, pois root.servers está vazio. Para domínios para os quais ele é master ou slave, ele os resolve normalmente. Com essa configuração, o DNS não resolve dmz.example.com.
Então mudamos a configuração da zona "." Definimos para ser uma zona de encaminhamento para ".", mas forwarder é um IP inexistente ou inacessível. Assim:
zone "." in
{
type forward;
forwarders { 10.100.100.100; }; // non-existent IP
};
Quando usamos essa configuração para a zona ".", o DNS resolve dmz.example.com, mas não responde mais imediatamente a consultas para domínios de internet. Ele espera o timeout para que o encaminhador responda.
Não gosto disso por dois motivos:
- O DNS agora faz consultas desnecessárias a IPs inexistentes.
- Domínios da Internet não são mais resolvidos com uma resposta negativa instantânea.
Como posso fazer com que o DNS resolva dmz.example.com e responda pelos domínios da Internet como antes (instantaneamente, sem tráfego de rede desnecessário)?