Por que o BIND não está tentando automaticamente todos os servidores de nomes, especialmente quando um servidor de nomes IPv6 está inacessível?

2

Estou executando um servidor de nomes local recursivo usando o BIND no Ubuntu. Eu tenho uma rede IPv4 no momento. Parece que o padrão do BIND é escutar consultas e resolver nomes recursivamente no IPv4 e no IPv6.

Estou recebendo muitos erros no syslog, como

named[1907]: error (network unreachable) resolving 'DELETED.FOR.PRIVACY.in-addr.arpa/PTR/IN': 2001:503:ba3e::2:30#53

Nesse caso, ele não pode nem mesmo entrar em contato com 2001:503:ba3e::2:30 (que é a.root-servers.net), o primeiro servidor no processo de recursão.

Às vezes (na verdade, talvez sempre, mas não tenho certeza), dig irá retornar SERVFAIL quando isso acontecer. Eu não me importo se eu obtiver essas mensagens de erro, contanto que o BIND falhe até encontrar um servidor acessível, mas esse não parece ser o caso. A minha pergunta é, desde que a rede IPv6 está atualmente inacessível, por que o BIND não reverte para outro servidor de nomes que pode encontrar? Eu pensei que era o ponto de ter vários servidores de nomes. Quantos servidores de nomes o BIND tenta quando está resolvendo uma consulta.

Estou ciente de que posso desabilitar o IPv6 no BIND, mas isso parece ser uma prática ruim, porque minha rede local não está mais automaticamente pronta para atualizar para o IPv6.

    
por user1748155 20.04.2017 / 08:11

1 resposta

2

Se você não tem claramente roteamento IPv6, é uma decisão sábia desativá-lo em qualquer daemon que o solicite; como não é incomum ter problemas com ele, também em parte porque o IPv6 tem prioridade sobre o IPv4 quando se trata de falar com nomes DNS que possuem a representação IPv4 e IPv6 ao mesmo tempo.

Mesmo sem ter endereços IP públicos, não é incomum ver daemons tentando fazer conexões IPv6 usando como fonte o endereço IPv6 Link-local, e acreditem que eu testemunhei ao longo dos anos problemas com isso pelo menos com E-mail e DNS Serviços.

O que é mais preocupante com o tipo de erros que você está vendo no IPv6 é que, com frequência, os tempos de espera são eliminados e a transação IPv4 nem poderia ocorrer.

Além disso, não há nada que impeça você de ativar o suporte a IPv6 novamente em um futuro próximo; também não seria necessário misturar as coisas; ter um DNS somente IPv4 não impede que ele resolva endereços IPv6 para que você não tenha uma máquina IPv4 / IPv6 de várias pilhas em algum lugar da sua rede em um futuro próximo.

Então, vá em frente e torne o BIND apenas IPv4; Eu correria nomeado com -4; no Debian você pode editar /etc/default/bind9 e alterá-lo para:

OPTIONS="-u bind -4"

Eu também tiraria todos os endereços AAAA do db.root como em:

grep -v "AAAA" /etc/bind/db.root > /tmp/a
mv /tmp/a /etc/bind/db.root

Também gostaria de editar /etc/gai.conf e adicionar a seguinte linha para dar prioridade ao IPv4 sobre o IPv6:

precedence ::ffff:0:0/96  100 

Eu também aconselharia a leitura da minha resposta aqui:

O primeiro e-mail é devolvido; o segundo e os e-mails subsequentes passam por

Quanto a tempos limite, quando um pedido TCP DNS expira, após x tentativas, o DNS RFC define que o mesmo pedido será tentado novamente usando UDP n tentativas novamente.

Suas solicitações de IPv6 estão expirando, obviamente, porque ainda tentam realizá-las, mas seu roteamento não leva a lugar nenhum.

Além de aproximadamente 6 tentativas e timeouts por solicitação IPv6, você ainda pode cair na próxima raiz IPv6; na lista de servidores de nomes-raiz, há tantos servidores de nomes-raiz para testar que, se falhar um endereço IPv6, ele tentará automaticamente um IPv4 - por isso, arrisco a dizer suas grandes variações de tempo para obter uma solicitação completa são praticamente o comportamento esperado neste cenário.

Aviso: este é um comportamento grosseiro, eu sei bem o comportamento do resolvedor, não tanto os detalhes sujos do código BIND.

Usando apenas tcdump e dnstracer , você pode ter uma ideia melhor do que está acontecendo. Também pode ser útil consultar named.stats .

Também é digno de nota que os tempos limite / solicitações serão adicionados em um servidor de produção ocupado.

No entanto, IMO, você está apenas pensando demais e fazendo várias suposições.

A maneira aconselhada é não tentar usar um serviço que você sabe que não está implementado ao seu lado.

Eu aconselho a execução do BIND somente no modo IPv4.

    
por 20.04.2017 / 09:56