Se eu resolver console.aws.amazon.com
com dig
, recebo:
; <<>> DiG 9.10.6 <<>> console.aws.amazon.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35338
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;console.aws.amazon.com. IN A
;; ANSWER SECTION:
console.aws.amazon.com. 4 IN CNAME lbr-optimized.console-l.amazonaws.com.
lbr-optimized.console-l.amazonaws.com. 4 IN CNAME us-east-1.console.aws.amazon.com.
us-east-1.console.aws.amazon.com. 4 IN CNAME gr.console-geo.us-east-1.amazonaws.com.
gr.console-geo.us-east-1.amazonaws.com. 4 IN CNAME console.us-east-1.amazonaws.com.
console.us-east-1.amazonaws.com. 59 IN A 54.239.30.25
No entanto, ao resolver, us-east-1.console.aws.amazon.com
obtém um NXDOMAIN
:
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 33652
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; ANSWER SECTION:
us-east-1.console.aws.amazon.com. 60 IN CNAME gr.console-geo.us-east-1.amazonaws.com.
;; AUTHORITY SECTION:
us-east-1.amazonaws.com. 60 IN SOA ns-912.amazon.com. root.amazon.com. 1609664924 3600 900 7776000 60
;; Received 147 bytes from 52.9.146.37#53(ns-912.amazon.com) in 270 ms
Parece que, mesmo que tenhamos um NXDOMAIN
código de resposta, ele continua resolvendo o CNAME. Porém, de acordo com a RFC (vi isso em #8020), se houver um NXDOMAIN
código de resposta como, significa que o domínio no final da cadeia não existe, então devemos continuar, já que não vamos pegue qualquer A RR...
Estou um pouco confuso aqui porque temos um NXDOMAIN
no meio da cadeia. É seguro ignorar NXDOMAIN
se tivermos um CNAME
na seção RESPOSTA e continuar a resolver a cadeia de CNAME?
Existe uma RFC que resolva esse tipo de questão?
Responder1
O tipo de resposta CNAME
(resposta) + SOA
(autoridade) + NXDOMAIN
(rcode) é válido desde que o servidor realmente conheça o status do nome canônico (o CNAME
"destino").
Neste caso parece que o servidor de nomes aws.amazon.com
está configurado para também ter uma us-east-1.amazonaws.com
zona (a zona onde este CNAME leva) onde olha e conclui que o nome canônico não existe. A questão é que esta não é a us-east-1.amazonaws.com
zona real que o mundo usa, a delegação real us-east-1.amazonaws.com
leva a servidores de nomes totalmente diferentes.
Olhando para a resposta relevante (da pergunta), observe SOA
na seção de autoridade (parte da resposta negativa) e como isso vem da us-east-1.amazonaws.com
zona "falsa" em ns-912.amazon.com
:
$ dig @ns-912.amazon.com us-east-1.console.aws.amazon.com +norec
; <<>> DiG 9.11.25-RedHat-9.11.25-2.fc33 <<>> @ns-912.amazon.com us-east-1.console.aws.amazon.com +norec
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 19359
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;us-east-1.console.aws.amazon.com. IN A
;; ANSWER SECTION:
us-east-1.console.aws.amazon.com. 60 IN CNAME gr.console-geo.us-east-1.amazonaws.com.
;; AUTHORITY SECTION:
us-east-1.amazonaws.com. 60 IN SOA ns-912.amazon.com. root.amazon.com. 1609723312 3600 900 7776000 60
;; Query time: 152 msec
;; SERVER: 52.9.146.37#53(52.9.146.37)
;; WHEN: Mon Jan 04 01:21:54 UTC 2021
;; MSG SIZE rcvd: 147
$
O "real" us-east-1.amazonaws.com
é delegado inteiramente em outro lugar (não ns-912.amazon.com
):
us-east-1.amazonaws.com. 86400 IN NS ns2.p31.dynect.net.
us-east-1.amazonaws.com. 86400 IN NS ns4.p31.dynect.net.
us-east-1.amazonaws.com. 86400 IN NS pdns5.ultradns.info.
us-east-1.amazonaws.com. 86400 IN NS pdns3.ultradns.org.
us-east-1.amazonaws.com. 86400 IN NS ns1.p31.dynect.net.
us-east-1.amazonaws.com. 86400 IN NS ns3.p31.dynect.net.
us-east-1.amazonaws.com. 86400 IN NS pdns1.ultradns.net.
us-east-1.amazonaws.com. 86400 IN NS u2.amazonaws.com.
us-east-1.amazonaws.com. 86400 IN NS u6.amazonaws.com.
us-east-1.amazonaws.com. 86400 IN NS u3.amazonaws.com.
us-east-1.amazonaws.com. 86400 IN NS u5.amazonaws.com.
us-east-1.amazonaws.com. 86400 IN NS u1.amazonaws.com.
us-east-1.amazonaws.com. 86400 IN NS u4.amazonaws.com.
e tem um SOA completamente diferente:
us-east-1.amazonaws.com. 900 IN SOA dns-external-master.amazon.com. root.amazon.com. 8548 180 60 2592000 5
Quanto às coisas que funcionam relativamente bem, apesar dessa flagrante configuração incorreta, acredito que os resolvedores simplesmente percebem isso NXDOMAIN
, já que os resolvedores geralmente são bons em confiar apenas nos dados "no bailiwick" nas respostas.
Ou seja, não confiar em dados adicionais em uma resposta que faz afirmações sobre nomes pertencentes a zonas que não estão realmente hospedadas naquele servidor de nomes.