
Nehmen wir an, ich versuche, die IPs nachzuschlagen mail.yahoo.com
, gmail.com
undmail.google.com
Wenn ich ausführe:
dig @8.8.8.8 +nocomments +noquestion \
+noauthority +noadditional +nostats +nocmd \
gmail.com mail.yahoo.com mail.google.com
Ich bekomme:
gmail.com. 299 IN A 173.194.123.21
gmail.com. 299 IN A 173.194.123.22
mail.yahoo.com. 0 IN CNAME login.yahoo.com.
login.yahoo.com. 0 IN CNAME ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com. 0 IN CNAME ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net. 0 IN CNAME any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net. 17 IN A 98.139.21.169
mail.google.com. 0 IN CNAME googlemail.l.google.com.
googlemail.l.google.com. 243 IN A 173.194.123.21
googlemail.l.google.com. 243 IN A 173.194.123.22
Kann ich sicherstellen, dass, wenn ich einen CNAME
Datensatz sehe, der A
entsprechende Datensatz nicht vor dem CNAME
entsprechenden Datensatz einer anderen Maschine oder einem A
Datensatz für einen anderen Hostnamen angezeigt wird?
Ich möchte mich beispielsweise auf Folgendes konzentrieren mail.yahoo.com
(ich möchte nur, dass die IP oder IPs mail.yahoo.com
aufgelöst werden):
Dies ist die Ausgabe:
mail.yahoo.com. 0 IN CNAME login.yahoo.com.
login.yahoo.com. 0 IN CNAME ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com. 0 IN CNAME ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net. 0 IN CNAME any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net. 17 IN A 98.139.21.169
Der Hostname, den ich suche ( mail.yahoo.com
), ist die erste Spalte des ersten Eintrags. Dann gibt es eine Reihe von Namen, die CNAMES
mich wirklich nicht interessieren, und dann einen A
Eintrag mit der tatsächlichen IP (die mich interessiert).
Besteht die Möglichkeit, dass die CNAMES
oder A
Datensätze in der falschen Reihenfolge sind? So etwas wie:
ats.login.lgg1.b.yahoo.com. 0 IN CNAME ats.member.g02.yahoodns.net. #(!)BAD
ats.member.g02.yahoodns.net. 0 IN CNAME any-ats.member.a02.yahoodns.net. #(!)BAD
mail.yahoo.com. 0 IN CNAME login.yahoo.com.
login.yahoo.com. 0 IN CNAME ats.login.lgg1.b.yahoo.com.
any-ats.member.a02.yahoodns.net. 17 IN A 98.139.21.169
Oder noch schlimmer (der eigentliche A
Datensatz ganz oben):
any-ats.member.a02.yahoodns.net. 17 IN A 98.139.21.169
mail.yahoo.com. 0 IN CNAME login.yahoo.com.
login.yahoo.com. 0 IN CNAME ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com. 0 IN CNAME ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net. 0 IN CNAME any-ats.member.a02.yahoodns.net.
Oder das Schlimmste vom Schlimmsten (in einer Ausführung mit mehreren Auflösungen dig
, wie oben im Beitrag gezeigt):
ats.member.g02.yahoodns.net. 0 IN CNAME any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net. 17 IN A 98.139.21.169
mail.google.com. 0 IN CNAME googlemail.l.google.com. # This one I want
gmail.com. 299 IN A 173.194.123.21 # This one I want
gmail.com. 299 IN A 173.194.123.22 # This one I want
mail.yahoo.com. 0 IN CNAME login.yahoo.com. # This one I want
login.yahoo.com. 0 IN CNAME ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com. 0 IN CNAME ats.member.g02.yahoodns.net.
googlemail.l.google.com. 243 IN A 173.194.123.21
googlemail.l.google.com. 243 IN A 173.194.123.22
Vielen Dank im Voraus.
Antwort1
Nein – die Reihenfolge der zurückgegebenen Ergebnisse hängt vom DNS-Server ab und Sie haben darauf keinen Einfluss. Daher würde ich mich nicht auf die Reihenfolge eines bestimmten DNS-Servers verlassen.
Ich bin davon überzeugt (und meine Tests haben dies bisher bestätigt), dass die tatsächlichen Abfragen in der richtigen Reihenfolge ausgeführt werden, in Ihrem Fall zuerst google.com und zuletzt mail.google.com. Das liegt daran, dass Dig die Abfragen in der Reihenfolge ausführt, die Sie in der Befehlszeile angeben.
Aufgrund der Art und Weise, wie die Befehlszeilensyntax aufgebaut ist, ist die Reihenfolge wichtig. Daher meine Antwort. Wenn sie nicht in der angegebenen Reihenfolge angegangen würden, würden alle nicht globalen Modifikatoren durcheinander geraten.
Aus der Manpage:
Die BIND 9-Implementierung von dig unterstützt die Angabe mehrerer Abfragen in der Befehlszeile (zusätzlich zur Unterstützung der Batchdateioption -f). Jede dieser Abfragen kann mit einem eigenen Satz von Flags, Optionen und Abfrageoptionen versehen werden.
In diesem Fall stellt jedes Abfrageargument eine einzelne Abfrage in der oben beschriebenen Befehlszeilensyntax dar. Jedes Argument besteht aus den Standardoptionen und -flags, dem nachzuschlagenden Namen, einem optionalen Abfragetyp und einer Klasse sowie allen Abfrageoptionen, die auf diese Abfrage angewendet werden sollen.