Um resolvedor de DNS recursivo requer que as informações que ele adquire recursivamente sejam autoritativas para retorná-lo como uma resposta a uma consulta; não faz inferências.
A autoridade é estabelecida no DNS usando registros SOA e NS. O primeiro é usado para estabelecer autoridade entre servidores autoritativos e é servido de dentro da zona. Por exemplo, o registro SOA indica qual cópia dos dados da zona é mais recente quando os servidores DNS autoritativos de alguma zona estão fazendo uma transferência de zona. Este último é usado para estabelecer autoridade ao consultar.
Quando um registro NS de um subdomínio está em um domínio e o servidor que o possui não é um servidor autoritativo para o nome que está sendo consultado, esse registro NS é um registro de delegação. Portanto, o resolvedor recursivo consultará os registros de delegação começando com a raiz .
. No seu caso, ele sobe a cadeia em direção a essa resposta de dns2.stabletransit.com.
:
subdomain.codecrab.org. 300 IN NS ns1.macmonster.co.uk.
Este é um registro de delegação, porque esses dados não existem:
subdomain.codecrab.org. 300 IN NS dns2.stabletransit.com
O que realmente existiu foi isto:
codecrab.org. 86400 IN NS dns2.stabletransit.com.
Portanto, o servidor em dns2.stabletransit.com.
pode fornecer respostas autoritativas para codecrab.org.
, porque o resolvedor anterior delegou essa zona a ele. Mas não é autoritativo para subdomain.codecrab.org.
, portanto, não pode responder à consulta; só pode delegar.
Os resolvedores de DNS podem, é claro, ser configurados como autorizados para qualquer nome que o administrador desejar. No entanto, se eles estiverem configurados para serem autoritativos para as zonas que estão tentando delegar, eles fornecerão respostas (sem os dados), portanto, isso obviamente não é feito.
A maneira como a recursão funciona é simples, se não inicialmente intuitiva. O resolvedor recursivo envia a consulta completa para os servidores de nomes para .
(que tem em seu arquivo de dicas para a zona raiz). O servidor de nomes .
envia uma resposta, mas uma resposta tem dois componentes que nos interessam para essa finalidade: a seção de autoridade e a seção de resposta (há também a seção adicional e a seção de perguntas). A resposta conterá registros como:
org. 172800 IN NS b0.org.afilias-nst.org.
Isso diz ao resolvedor recursivo para repetir sua consulta por lá, porque a zona é delegada. Ele também inclui "cola" na seção adicional, fornecendo os endereços IP dos servidores de nomes na seção de autoridade, porque sabe que você não conseguirá encontrar o servidor de nomes para consultá-lo de outra forma. Esta é uma decisão administrativa no gerenciamento do DNS; se os registros de cola não estiverem presentes, o resolvedor recursivo consultará os registros AAAA
ou A
de um dos servidores autoritativos antes de prosseguir.
Então, você pode perceber que quando você envia sua consulta IN NS subdomain.codecrab.org.
para a última delegação, dns2.stabletransit.com.
, a resposta é assim:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35461
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;subdomain.codecrab.org. IN NS
;; AUTHORITY SECTION:
subdomain.codecrab.org. 300 IN NS ns2.macmonster.co.uk.
subdomain.codecrab.org. 300 IN NS ns1.macmonster.co.uk.
;; Query time: 104 msec
;; SERVER: 65.61.188.4#53(65.61.188.4)
;; WHEN: Sat Sep 28 14:50:45 MDT 2013
Observe como você não obtém nem uma seção adicional nem uma seção de resposta (mas também NOERROR
para o status de retorno). Isso ocorre porque o registro é uma delegação para ns2.macmonster.co.uk.
para subdomain.codecrab.org.
, para o qual dns2.stabletransit.com.
sabe que não é autoritativo. Não há seção adicional porque os namesevers estão em co.uk.
e administrativamente não foi necessário incluir cola porque eles são resolvíveis por lá (embora, certamente, a cola possa ter sido incluída). Então, para responder sua consulta, porque a resposta tem que vir de uma seção de resposta (significando que ela é identificada pelo servidor respondente como resposta, vindo da autoridade), seu resolvedor recursivo tentará encontrar ns1.macmonster.co.uk.
, e encontrá-lo em 1.1.1.1
, enviará sua consulta para lá.
Claro que (como este endereço está em um prefixo de debogon) não há nenhum servidor de nomes lá (ainda). Quanto a ns2.macmonster.co.uk.
at 2.2.2.2
, se alguém da Wanadoo France decidisse que deveria haver um servidor de nomes com registros de autoridade para subdomain.codecrab.org.
e, em particular:
subdomain.codecrab.org 99999999 IN NS now.go.away.or.i.will.taunt.you.a.second.time.
metade do tempo (sempre que esse servidor de nomes for escolhido), a consulta retornará now.go.away.or.i.will.taunt.you.a.second.time.
como o servidor de nomes da sua zona, embora o senso comum sugira que seja ns2.macmonster.co.uk.
(e mesmo que tenha sido esse último servidor de nomes que autoritativamente deu essa resposta).