Eu não acredito que exista uma declaração completa nos documentos de padrões (pelo menos não nos RFCs de DNS originais) de como lidar com esse cenário específico.
Dito isso, ao longo dos anos, o consenso tornou-se mais ou menos de que REFUSED
é a melhor opção dentre as ferramentas que temos disponíveis.
Vou descrever algumas ideias sobre algumas das diferentes opções abaixo:
As opções descritas na pergunta
Blackhole a consulta totalmente
Isso é ruim para o operador do servidor autoritativo, pois essa abordagem faria o servidor parecer inoperante, abrindo para cenários em que os servidores recursivos o observaram repetidamente, não respondendo às suas consultas e desistindo completamente, independentemente do QNAME
.
Também é ruim do ponto de vista do cliente, pois pode levar à espera até que algum tempo limite expire, em vez de ocorrer rapidamente um erro.
(Eu consideraria essa a pior opção.)
Retornar uma resposta NXDOMAIN
não autoritativa
Isso não está de acordo com a forma como NXDOMAIN
é usado. NXDOMAIN
é usado para indicar que você sabe que um nome não existe , não que você não sabe nada sobre o nome .
Retorna uma resposta não autoritativa de NOERROR
(isso é bobagem, mas eu o menciono por completo)
Em primeiro lugar, observarei que a alternativa "referência à raiz" é um caso especial desta.
O argumento contra NXDOMAIN
se aplica a NODATA
( NOERROR
+ SOA
na seção de autoridade), bem como com apenas ajustes menores; é um status que é usado para indicar que você sabe que não há tal RRset , não que você não tenha conhecimento .
Além disso, NODATA
sugere que você saiba que esse nome existe em algum formato ou forma (por exemplo, pode ter registros de outros tipos ou pode ser um não terminal vazio).
NOERROR
indica que a consulta foi considerada válida e respondível, portanto, deve haver alguma forma de resposta. Se esta for uma consulta que não pode ser respondida, NOERROR
parece ser um ajuste inadequado.
Devolve uma referência canalizada para os servidores de nomes de raiz (isto é ainda mais parvo)
Esta foi uma maneira muito comum de lidar com isso no passado. O conteúdo da resposta não é útil em si, mas é uma resposta de referência formada de forma válida que pelo menos deixa claro que o servidor consultado não sabe sobre esse nome.
(acho que esta é provavelmente a forma menos boba de NOERROR
use neste contexto.)
Outras opções
Status REFUSED
REFUSED
é geralmente considerado a melhor abordagem, indica que o servidor está configurado para não responder a essa consulta. Em geral, um bom ajuste, se não está explicitamente determinado que deve ser usado neste caso particular.
Status SERVFAIL
Também usado por algumas implementações de servidores.
Menos claro que REFUSED
em que não indica claramente que a não resposta é deliberada; SERVFAIL
é normalmente usado para erros inesperados encontrados ao processar consultas válidas.