Wenn ich console.aws.amazon.com
mit auflöse dig
, erhalte ich:
; <<>> 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
Beim Auflösen erhält man jedoch ein 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
Es sieht so aus, als ob NXDOMAIN
der CNAME auch dann weiter aufgelöst wird, wenn wir einen Antwortcode haben. Laut RFC (ich habe das in #8020 gesehen) NXDOMAIN
bedeutet ein Antwortcode jedoch, dass die Domäne am Ende der Kette nicht existiert. Wir müssen also fortfahren, da wir kein A RR erhalten werden ...
Ich bin etwas verwirrt, warum wir ein NXDOMAIN
in der Mitte der Kette haben. Ist es sicher, das zu ignorieren, NXDOMAIN
wenn wir ein CNAME
im Abschnitt ANTWORT haben, und mit der Auflösung der CNAME-Kette fortzufahren?
Gibt es ein RFC, das diese Art von Fragen löst?
Antwort1
Die Antwort vom Typ CNAME
(Antwort) + SOA
(Autorität) + (Rcode) ist gültig, vorausgesetzt, dass der Server den Status des kanonischen Namens (das „Ziel“) tatsächlich kennt. In diesem Fall scheint der Nameserver für so eingerichtet zu sein, dass er auch eine Zone hat (die Zone, zu der dieser CNAME führt), in der er nachsieht und zu dem Schluss kommt, dass der kanonische Name nicht existiert. Das Problem ist, dass dies nicht die tatsächliche Zone ist, die die Welt verwendet, die tatsächliche Delegierung für führt zu völlig anderen Nameservern.NXDOMAIN
CNAME
aws.amazon.com
us-east-1.amazonaws.com
us-east-1.amazonaws.com
us-east-1.amazonaws.com
Wenn Sie sich die entsprechende Antwort (aus der Frage) ansehen, beachten Sie den SOA
Abschnitt „Autorität“ (Teil der negativen Antwort) und dass diese aus der „gefälschten“ us-east-1.amazonaws.com
Zone stammt unter 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
$
Das „Eigentliche“ us-east-1.amazonaws.com
wird ganz woanders hin delegiert (nicht 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.
und hat eine völlig andere SOA:
us-east-1.amazonaws.com. 900 IN SOA dns-external-master.amazon.com. root.amazon.com. 8548 180 60 2592000 5
Dass die Dinge trotz dieser offensichtlichen Fehlkonfiguration relativ gut funktionieren, liegt meiner Meinung nach daran, dass Resolver diese Behauptung einfach durchschauen NXDOMAIN
, da Resolver im Allgemeinen gut darin sind, nur „in bailiwick“ Daten in Antworten zu vertrauen.
Das heißt, sie vertrauen keinen zusätzlichen Daten in einer Antwort, die Behauptungen über Namen aufstellt, die zu Zonen gehören, die tatsächlich nicht auf diesem Nameserver gehostet werden.