bind9: o encaminhamento para o servidor de nomes local não funciona quando a conexão com a Internet está inoperante

bind9: o encaminhamento para o servidor de nomes local não funciona quando a conexão com a Internet está inoperante

Eu tenho a seguinte configuração:

Uma instância bind9 (referida como L abaixo) em hardware muito limitado para resolver os nomes em minhas redes locais. É um mestre autorizado para a zona home.mydomain.com. As consultas a este servidor funcionam e retornam homedns.home.mydomian.com como NS e o IP 192.168.1.77 dele como um registro adicional.

Uma instância bind9 (referida como M abaixo) para resolver nomes locais e da Internet. Nenhuma opção de encaminhamento global é usada aqui. Há uma zona direta configurada:

zone "home.mydomain.com" in {
        type forward;
        forward only;
        forwarders { 192.168.1.77; };
};

Nota 1: meudominio.com é um domínio registrado existente, mas não há registro para home.meudominio.com

Nota2: A versão bind9 do M é muito antiga: 9.8.1-P1

Esta configuração funciona enquanto a conexão com a Internet estiver ativa, mas as consultas de nomes locais não serão respondidas quando a conexão estiver inoperante. Log é syslog é

Aug 30 09:05:42 M named[1611]: error (no valid DS) resolving 'xxx.home.mydomain.com/A/IN': 192.168.1.77#53

Capturar a rede para uma resolução bem-sucedida quando a conexão estiver ativa revela que M consulta meudominio.com na internet após receber a resposta de L. Na resposta de M para o cliente, a SEÇÃO DE AUTORIDADE é alterada:

cavar para L:

;; ANSWER SECTION:
syslog.home.mydomain.com. 3600  IN      A       192.168.1.99

;; AUTHORITY SECTION:
home.mydomain.com.        3600  IN      NS      homedns.home.mydomain.com.

;; ADDITIONAL SECTION:
homedns.home.mydomain.com. 3600 IN      A       192.168.1.77

cavar para M:

;; ANSWER SECTION:
syslog.home.mydomain.com. 2134  IN      A       192.168.1.99

;; AUTHORITY SECTION:
net.                    171334  IN      NS      j.gtld-servers.net.
net.                    171334  IN      NS      m.gtld-servers.net.
net.                    171334  IN      NS      i.gtld-servers.net.
net.                    171334  IN      NS      k.gtld-servers.net.
net.                    171334  IN      NS      g.gtld-servers.net.
net.                    171334  IN      NS      e.gtld-servers.net.
net.                    171334  IN      NS      h.gtld-servers.net.
net.                    171334  IN      NS      a.gtld-servers.net.
net.                    171334  IN      NS      d.gtld-servers.net.
net.                    171334  IN      NS      f.gtld-servers.net.
net.                    171334  IN      NS      b.gtld-servers.net.
net.                    171334  IN      NS      c.gtld-servers.net.
net.                    171334  IN      NS      l.gtld-servers.net.

Não entendo porque M não está apenas retornando a resposta de L para o cliente e não tenho mais ideias, o que poderia tentar evitar a consulta à internet pela zona encaminhada.

Responder1

A entrada de log citada na pergunta sugere que o erro está vinculado à falha na validação do DNSSEC quando não há conectividade com a Internet.

Observe a parte "nenhum DS válido" da mensagem de erro:

Aug 30 09:05:42 M named[1611]: error (no valid DS) resolving 'xxx.home.example.com/A/IN': 192.168.1.77#53

Presumivelmente, as respostas para consultas que atingem esta zona de encaminhamento são normalmente aceitas apenas porque a example.comzona pública existe como uma zona não assinada (ou seja, há prova de não DScomo parte da delegação da example.comzona adequada), mas quando esta prova não puder mais ser obtida como não há conectividade com a Internet, as respostas não podem mais ser aceitas, pois não é mais possível verificar se/como devem ser assinadas.

Uma opção seria assinar a home.example.comzona e adicionar um estáticoâncora de confiançaespecificamente para esta zona.

Outra seria desabilitar seletivamente a validação; O BIND atual tem umvalidate-exceptopção que permite especificar uma lista de nomes de domínio onde nenhuma validação deve ser realizada, conforme:

validate-except

Isto especifica uma lista de nomes de domínio nos quais e abaixo dos quais a validação DNSSEC não deve ser realizada, independentemente da presença de uma âncora de confiança nesses nomes ou acima deles. Isto pode ser usado, por exemplo, ao configurar um domínio de nível superior destinado apenas ao uso local, para que a falta de uma delegação segura para esse domínio na zona raiz não cause falhas de validação. (Isso é semelhante a definir uma âncora de confiança negativa, exceto que é uma configuração permanente, enquanto as âncoras de confiança negativas expiram e são removidas após um determinado período de tempo.)

Existe também a possibilidade de desabilitar totalmente a validação usando odnssec-validationopção, o que eu não recomendaria se esta instância BIND tivesse uso mais amplo do que este encaminhamento específico.

(Observe que substituí o nome de domínio usado na pergunta porque example.comparece improvável que a pergunta tenha qualquer relação com o nome de domínio a que faz referência ou com a empresa que a possui.)

informação relacionada