NXDOMAIN с записью ресурса CNAME в разделе ANSWER

NXDOMAIN с записью ресурса CNAME в разделе ANSWER

Если я решу console.aws.amazon.comс помощью dig, то получу:

; <<>> 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

Однако при разрешении us-east-1.console.aws.amazon.comон получает 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

Похоже, даже если у нас есть NXDOMAINкод ответа as, он продолжает разрешать CNAME. Однако, согласно RFC (я видел это в #8020), если есть код ответа NXDOMAINas, это означает, что домен в конце цепочки не существует, поэтому мы должны продолжать, поскольку мы не получим никаких A RR...

Я немного запутался, почему у нас есть NXDOMAINв середине цепочки. Безопасно ли игнорировать, NXDOMAINесли у нас есть CNAMEв разделе ANSWER, и продолжать разрешать цепочку CNAME?

Есть ли RFC, решающий подобные вопросы?

решение1

Тип ответа CNAME(answer) + SOA(authority) + NXDOMAIN(rcode) действителен при условии, что сервер действительно знает статус канонического имени ( CNAME«цель»).
В этом случае, похоже, сервер имен для aws.amazon.comнастроен на то, чтобы иметь также us-east-1.amazonaws.comзону (зону, куда ведет этот CNAME), где он ищет и приходит к выводу, что канонического имени не существует. Проблема в том, что это не фактическая us-east-1.amazonaws.comзона, которую использует мир, реальное делегирование для us-east-1.amazonaws.comведет к совершенно другим серверам имен.

Рассматривая соответствующий ответ (из вопроса), обратите внимание на SOAраздел «Авторитет» (часть отрицательного ответа) и на то, что он находится в us-east-1.amazonaws.comзоне «подделки» 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

$

«Реальное» us-east-1.amazonaws.comделегировано полностью в другое место (не 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.

и имеет совершенно другую SOA:

us-east-1.amazonaws.com. 900    IN      SOA     dns-external-master.amazon.com. root.amazon.com. 8548 180 60 2592000 5

Что касается того, что все работает относительно хорошо, несмотря на эту вопиющую неправильную конфигурацию, я считаю, что резолверы просто видят это насквозь NXDOMAIN, поскольку резолверы, как правило, хорошо доверяют только данным "в сфере ответственности" в ответах.
То есть, не доверяют дополнительным данным в ответе, которые утверждают об именах, принадлежащих зонам, которые на самом деле не размещены на этом сервере имен.

Связанный контент