Dig-Befehl: Ist die Ausgabe garantiert sortiert?

Dig-Befehl: Ist die Ausgabe garantiert sortiert?

Nehmen wir an, ich versuche, die IPs nachzuschlagen mail.yahoo.com, gmail.comundmail.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 CNAMEDatensatz sehe, der Aentsprechende Datensatz nicht vor dem CNAMEentsprechenden Datensatz einer anderen Maschine oder einem ADatensatz 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.comaufgelö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 CNAMESmich wirklich nicht interessieren, und dann einen AEintrag mit der tatsächlichen IP (die mich interessiert).

Besteht die Möglichkeit, dass die CNAMESoder ADatensä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 ADatensatz 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.

verwandte Informationen