Tenho dificuldade em entender um efeito específico na resolução de nomes DNS para nomes de subdomínios que vieram à tona ao habilitar o permite criptografar.
O contexto da minha pergunta:
Eu tenho um domínio (basjes.nl) e defini todos os nomes de host nesse domínio para resolver para o mesmo endereço IP.
Na interface do meu provedor de DNS (Transip), vejo algo assim:
@ A x.x.x.x
* CNAME @
Agora posso fazer isso para obter o endereço IP especificado.
dig blurp.basjes.nl
Recentemente, implantei a ferramenta ACME-DNS e configurei as entradas DNS apropriadas (ou seja, delegue auth.basjes.nl ao meu próprio servidor ACME-DNS) para permitir que Lets Encrypt verifique se eu possuo o nome de host especificado via DNS.
Para este nome de host específico, quero ter um certificado HTTPS de 'nome completo' (ou seja, não o curinga), então adicionei algo assim:
_acme-challenge.blurp CNAME something.auth.basjes.nl.
Depois de adicionar esta entrada, acho que fazer dig blurp.basjes.nl
não funciona mais. O estranho é que eu não recebo um erro (portanto, não há NXDOMAIN), ou não recebo nada ou apenas
;; AUTHORITY SECTION:
basjes.nl. 300 IN SOA ns0.transip.net. hostmaster.transip.nl. 2018041107 14400 1800 2419200 300
Então neste momento eu tenho algo assim:
@ A x.x.x.x
* CNAME @
_acme-challenge.blurp CNAME something.auth.basjes.nl.
Descobri que, se eu adicionar um registro DNS explícito para este nome de host, de repente ele funcionará novamente:
@ A x.x.x.x
* CNAME @
blurp CNAME @
_acme-challenge.blurp CNAME something.auth.basjes.nl.
Os efeitos que eu gostaria de entender:
Por que não resolve mais ao perguntar a um servidor DNS normal?
O registro '*' ainda está presente!
dig blurp.basjes.nl @1.1.1.1
Por que resolve ao perguntar diretamente ao servidor DNS SOA da Transip?
dig blurp.basjes.nl @ns0.transip.net
Por que resolve ao adicionar o registro explícito?
Isso é o que eu uso atualmente como uma solução alternativa para fazê-lo funcionar para mim.
PS Entrei em contato com o suporte da Transip antes de postar esta pergunta. Eles não sabiam o que deu errado aqui e/ou por que isso acontece.
O DNS é hierárquico. Quando você adicionou o nome
_acme-challenge.blurp.basjes.nl
, isso significava queblurp.basjes.nl
também foi adicionado implicitamente. A parte aqui que pode ser surpreendente é que um nome pode existir sem ter nenhum conteúdo . Quando vocêdig
perguntava porblurp.basjes.nl
, recebia uma resposta perfeitamente correta e precisa: o nome existe, mas não contém registros. Este caso, onde um nome existe apenas porque existem outros nomes abaixo dele na árvore DNS, é chamado de não-terminal vazio . Você pode pesquisar esse termo no Google se quiser saber mais.Essa é a primeira parte do seu comportamento confuso. A segunda parte é esta: um registro curinga é usado para gerar uma resposta se e somente se o nome solicitado ainda não existir. Então, primeiro você pediu
blurp.basjes.nl
e obteve uma resposta gerada a partir do curinga. Então você adicionou_acme-challenge.blurp.basjes.nl
. Quando você perguntou novamente depois disso, o nomeblurp.basjes.nl
existia (como descrito acima), então o curinga não foi usado. Mas comoblurp.basjes.nl
não havia registros nele, tudo o que você recebeu de volta foi uma resposta vazia. Depois disso, você adicionou umCNAME
registro parablurp.basjes.nl
, então, quando você perguntou novamente, foi isso que você recebeu.Isso esclarece as coisas?