Como os tempos limite do DNS devem funcionar?

9

Recentemente tive um problema em que um serviço remoto solicitando o endereço IP do meu servidor (com um provedor de DNS hospedado) estava respondendo com:

DNS problem: SERVFAIL looking up A for mysql.xavamedia.nl

(Atualização: o serviço remoto mencionado aqui é o Let's Encrypt; arquivei um bug no rastreador de problemas, o que me levou nesse caminho.)

Durante os testes na minha rede local, pude ver que às vezes recebia uma resposta do DNS vazia do servidor DNS hospedado. Aparentemente isso é intermitente porque acontece somente quando os registros DNS não estão no cache, e é apenas um problema quando o servidor DNS está realmente ocupado.

Aqui está uma descrição do Wireshark de uma mensagem de resposta vazia:

Naturalmente, como a maioria das consultas e respostas de DNS é enviada pelo UDP, um resolvedor local apenas aguardará um pouco pela resposta e, em seguida, desistirá. O que me resta agora a pensar é, existem orientações para os tempos de resposta do DNS? Meu DNS hoster deu de ombros e disse que meu resolvedor local enviou a resposta vazia cedo demais. Eu nunca tive esse problema antes, mas estou surpreso com o modo de falha - uma resposta DNS vazia sem um código de erro.

Alguém sabe de algumas diretrizes sobre como isso deve funcionar e quando / como posso provar que minha hospedagem DNS está fazendo algo errado?

    
por djc 12.02.2016 / 13:54

2 respostas

6

A resposta vazia que você está vendo é um estado sintético conhecido como NODATA . NODATA e NXDOMAIN indicam que o nome não existe, mas NXDOMAIN se aplica a todos os nomes abaixo do registro indicado. NODATA está avisando que esse nome está associado a registros de um tipo não solicitado ou que existem outros registros abaixo do que você está solicitando. (por exemplo, example.test.xavamedia.nl. )

Seu takeaway de NODATA e NXDOMAIN é efetivamente o mesmo neste contexto: o registro do nome e do tipo solicitados não existe. Um servidor de nomes autoritativo foi alcançado para o domínio solicitado, e respondeu de volta afirmando que um registro daquele nome e tipo não existia. Este não é um erro de comunicação. O servidor autoritativo disse que não tinha os dados. Mais do que provável que o servidor com o qual você estava falando já tivesse processado essa solicitação e colocado em cache a ausência desse registro nas últimas quatro horas. (14400 segundos é o intervalo de cache negativo definido pelo registro SOA para xavamedia.nl. )

Nem NXDOMAIN ou NODATA por si próprios resultarão em um tempo limite quando encontrado nesta instância, mas a sua biblioteca de resolvedores provavelmente seguirá daqui até a anexação do sufixo de pesquisa DNS, o que pode por sua vez, aciona um tempo limite para os servidores DNS autoritativos do domínio de pesquisa.

Deve-se observar que nada disso explica por que você encontrou uma SERVFAIL de resposta ao pesquisar mysql.xavamedia.nl. . Isso aponta para um problema com o servidor recursivo recebendo a resposta dos servidores autoritativos. O servidor autoritativo respondeu com SERVFAIL , o servidor recursivo não pôde acessar nenhum dos servidores autoritativos ou o servidor recursivo determinou que os dados retornados eram inválidos. Nada disso pode ser comprovado com as informações que você forneceu.

    
por 12.02.2016 / 23:52
2

Não conheço nenhuma diretriz específica, exceto as definidas na seção "6.1.3.3 Uso eficiente de recursos" da RFC 1123 link

Existe um valor de tempo limite de "não menos que 5 segundos". O RFC também afirma que falhas temporárias devem ser armazenadas em cache. Isso é para impedir a quantidade excessiva de solicitações de DNS se os clientes violarem a seção 2.2 do RFC. Essa seção declara que os clientes devem aguardar uma quantidade "razoável" de tempo entre novas tentativas em caso de falhas temporárias.

Há também um tópico do Stackoverflow sobre esse tópico, mas ele não contém muito mais informações, exceto algumas observações do mundo real. link

Isso é tudo que posso dizer sobre esse assunto. Se alguém tem mais a acrescentar, eu estaria interessado também.

    
por 12.02.2016 / 20:25