Resumo

  • NXDOMAIN afirma que o nome não existe; NODATA afirma que um nome possivelmente existente não tem o tipo solicitado. O primeiro usa nome e classe como chave; o segundo inclui o tipo.
  • O RFC 2308 manda anexar o SOA da zona à negativa autoritativa. O menor valor entre o TTL do SOA e MINIMUM diminui enquanto está em cache e, ao chegar a zero, impede novo uso.
  • Uma negativa sem SOA não deve ser armazenada. Em um ciclo de encaminhadores, cada servidor poderia reiniciar um TTL curto e manter o erro vivo indefinidamente.
  • DNSSEC ampliou a evidência com NSEC/NSEC3 e síntese de respostas em intervalos validados. A assinatura autentica dados DNS; não decide propriedade, legitimidade ou existência institucional.

O custo de perguntar por nada

Resultados positivos trazem registros que o resolvedor pode guardar. Uma busca mal digitada, uma lista de sufixos ou uma descoberta de serviço inexistente produz justamente as perguntas que voltam sem esse material. Se a ausência não puder ser lembrada, cada cliente repete o percurso até a autoridade.

Guardar qualquer falha seria pior. Timeout não é prova de inexistência. SERVFAIL relata incapacidade de concluir. Uma seção vazia pode apontar uma delegação. Para ser compartilhável, o “não” precisa identificar quem fala pela zona, o que foi negado e por quanto tempo a declaração continua útil.

O RFC 1034 já tratava o cache de respostas negativas como opcional em 1987. Uma resposta autoritativa de erro de nome poderia receber TTL. A ideia seguia a arquitetura de cache do DNS: economizar aquisições repetidas, aceitando por um período limitado o risco de desatualização.

O desenho ainda não preservava bem a negativa ao repassá-la para outro resolvedor. Segundo o RFC 2308, o servidor podia lembrar a ausência localmente, mas não entregá-la com o mesmo contexto portátil. Faltava uma idade comum à evidência.

Duas ausências com consequências diferentes

NXDOMAIN é o RCODE Name Error e nega a existência do nome efetivo. Em uma cadeia CNAME, o alvo canônico final pode ser o nome negado, embora o alias inicial exista. A entrada de cache é recuperada por nome e classe.

NODATA não é um RCODE. Ele é inferido de NOERROR, da ausência do tipo solicitado e de evidência na seção de autoridade que permite distingui-lo de uma referência. Um nome pode ter MX e TXT sem ter A.

Por isso NODATA é indexado por nome, tipo e classe. Se “não há A” virar “não há nome”, o cache apaga também o MX verdadeiro. O desempenho só é legítimo quando a chave mantém a precisão da negativa original.

O SOA transforma negação em arrendamento

Publicado em março de 1998, o RFC 2308 foi escrito por Mark Andrews quando estava afiliado ao CSIRO, colocando assim uma instituição pública australiana de pesquisa na linhagem documental dessa regra operacional do DNS. A IETF forneceu o fórum de padronização em que o contrato e os aperfeiçoamentos posteriores de DNSSEC se tornaram especificações comuns. Os papéis institucionais são distintos: o CSIRO está vinculado aqui por ser a afiliação do autor registrada na especificação decisiva; o processo da IETF transformou o texto em contrato comum da Internet.

Ao responder NXDOMAIN ou NODATA, o servidor autoritativo deve incluir o SOA da zona que contém o nome na seção de autoridade. Esse registro identifica o contexto que pode falar pela ausência e carrega o limite temporal. O TTL negativo é o menor entre o TTL do SOA e o campo MINIMUM.

O resolvedor guarda o SOA com a negativa e desconta o tempo passado quando responde a outro cliente. Ao chegar a zero, a negativa não pode mais ser usada. Não se trata de uma verdade permanente, mas de um arrendamento: para aquele escopo, a zona disse “não” recentemente; depois do prazo, consulte de novo.

O RFC também reorganizou MINIMUM. O RFC 1035 havia descrito um limite inferior para TTLs exportados; implementações passaram a tratá-lo como mínimo geral, valor padrão e duração negativa. O RFC 2308 depreciou o primeiro sentido, separou o padrão com $TTL e reteve MINIMUM como componente da vida negativa.

Quando dez minutos duram para sempre

O espaço de nomes é uma árvore, mas o grafo de consultas pode ter ciclos. Dois servidores configurados como encaminhadores um do outro já bastam. Delegações defeituosas criam outras formas.

Se uma resposta negativa chega sem SOA, cada servidor pode armazená-la por dez minutos. Ao entregá-la ao vizinho, porém, o vizinho abre dez minutos novos. A cópia local sempre é curta; a indicação distribuída nunca envelhece.

Por isso o RFC 2308 diz que negativas sem SOA não devem ser guardadas. O contador que acompanha o SOA não reinicia em cada fronteira. Uma restrição distribuída só existe quando o próximo participante herda o tempo já consumido.

A norma aprendeu com implementações

O apêndice histórico do RFC 2308 registra que CHIVES usava cache negativo no fim de 1987, com base no SOA MINIMUM. Caminhos de busca geravam muitas consultas fracassadas; durante congestionamento da ARPANET, evitá-las melhorou o tempo de resposta nas poucas máquinas observadas. Isso não é uma medição universal da Internet.

O mesmo apêndice relata o BIND 4.9.2 ALPHA em 1993: TTL negativo de dez minutos, distinção entre NXDOMAIN e NOERROR_NODATA e, depois, conservação do SOA. O padrão consolidou experiência operacional em chaves exatas, evidência transportável e expiração que não pudesse ser rejuvenescida.

Lembrar a ausência atrasa a criação

O ganho é direto: menor latência, menos pacotes e menos trabalho autoritativo. O custo aparece quando um operador cria o nome ou acrescenta o tipo antes ausente. Resolvedores que guardam a negativa anterior continuam respondendo “não” até o próprio prazo.

Os caches receberam a resposta em momentos diferentes e podem impor tetos locais menores. Não há um segundo global de recuperação. O RFC 2308 considera uma a três horas um padrão sensato e valores acima de um dia problemáticos, embora o campo aceite períodos muito maiores.

A aplicação pode agravar o evento. Um NXDOMAIN injetado pode devolver uma mensagem de correio imediatamente, enquanto um endereço ruim talvez a deixe em fila para tentar depois. Classificar indisponibilidade como inexistência converte uma falha reversível em uma ação que a expiração futura não desfaz.

Da negativa exata à prova de intervalo

DNSSEC introduziu negação autenticada. NSEC liga nomes existentes em ordem canônica e lista tipos presentes; as regras de validação do RFC 4035 permitem provar que um nome falta em determinado intervalo ou que um nome existente não tem um tipo.

NSEC também facilita enumerar a zona. O RFC 5155 criou NSEC3 com nomes em hash e Opt-Out. Um intervalo Opt-Out não prova a existência ou inexistência de todas as delegações não assinadas que cobre; esse limite não pode ser tratado como certeza.

O RFC 8020 formalizou o corte NXDOMAIN: se um nó não existe, seus descendentes também não existem na árvore DNS. NODATA não corta a subárvore, pois o nome pode ter outros tipos e filhos.

O RFC 8198 autorizou um resolvedor validador a sintetizar negativas para outras perguntas usando NSEC ou NSEC3 já validado em cache. Isso reduz consulta autoritativa, latência e exposição da pergunta. Também amplia o efeito de uma prova: um nome novo no intervalo pode ficar oculto até o TTL relevante acabar.

DNSSEC comprova origem e integridade dentro da cadeia DNS. Uma exclusão incorreta assinada pela chave válida ainda valida. Ela não prova que uma instituição deixou de existir nem que o operador merece controlar o nome fora do protocolo.

Fontes e limites da evidência

Esses RFCs registram desenho, requisitos e uma história parcial das implementações, não um censo de adoção. NSEC3, o corte de subárvore e a síntese agressiva são desenvolvimentos posteriores e não pertencem aos resolvedores de 1987 ou 1998.