Was ist der Unterschied zwischen "dig" und "host" bei der Abfrage eines bestimmten Nameservers?

11

Ich habe diesen Befehl verwendet, um zu überprüfen, ob ich die Einstellungen bei einem DNS-Anbieter korrekt vorgenommen habe:

host hostname.example.com ns1.example-nameserver.com

Soweit ich das beurteilen kann, fragt diese ns1.example-nameserver.comnachschlagen hostname.example.comund meldet die Antwort. Ich erhielt eine Antwort, die vom Host nicht gefunden wurde, und dachte, ich hätte es falsch gemacht. Ohne Angabe des Nameservers (damit der Nameserver meines ISP nachschlagen kann) erhielt ich jedoch die richtige Antwort ( hostnameist eine, CNAMEwenn es darauf ankommt). Ich konnte das nicht verstehen, also suchte ich herum und fand den digBefehl:

dig @ns1.example-nameserver.com hostname.example.com

Soweit ich das beurteilen kann, funktioniert dies genauso wie der hostBefehl - fordert einen bestimmten Nameserver auf, einen Host nachzuschlagen. Ich komme daher zu dem Schluss, dass sie es irgendwie anders machen müssen und dass das Zwischenspeichern von Nameservern dieselbe Methode wie verwenden muss dig.

Meine Schlussfolgerung ist entweder richtig oder falsch, wenn es richtig ist:

Was ist der Unterschied zwischen diesen beiden Suchmethoden?

Wenn es falsch ist:

Was sind meine Missverständnisse über DNS und die Befehle hostund dig, die mich zu dieser Schlussfolgerung geführt haben?

Beispielausgabe:

$ host cardiff.tzmchapters.org ns1.livedns.co.uk
Using domain server:
Name: ns1.livedns.co.uk
Address: 213.171.192.250#53
Aliases: 

Host cardiff.tzmchapters.org not found: 3(NXDOMAIN)

$ dig @ns1.livedns.co.uk cardiff.tzmchapters.org

; <<>> DiG 9.8.3-P1 <<>> @ns1.livedns.co.uk cardiff.tzmchapters.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 23620
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;cardiff.tzmchapters.org.   IN  A

;; ANSWER SECTION:
cardiff.tzmchapters.org. 3600   IN  CNAME   ghs.google.com.

;; AUTHORITY SECTION:
google.com.     3600    IN  SOA ns1.livedns.co.uk. admin.google.com. 1354213742 10800 3600 604800 3600

;; Query time: 27 msec
;; SERVER: 213.171.192.250#53(213.171.192.250)
;; WHEN: Mon Apr 22 23:47:05 2013
;; MSG SIZE  rcvd: 128
Jhabbott
quelle
In diesem Fall sollten beide Befehle auf die gleiche Weise funktionieren. Können Sie die vollständige Ausgabe jedes Befehls anzeigen?
Renan
Beachten Sie, wie beide digund hostBericht NXDOMAIN. Mit digkönnen Sie es in der Kopfzeile (5. nicht leere Zeile der Ausgabe) sehen und mit ist hostes offensichtlicher. NXDOMAINbedeutet, dass die Domain nicht existiert. Im CNAMEAntwortbereich wird jedoch a zurückgegeben! Ich glaube, das ist ein Fehler im DNS-Server!
Celada
Also in diesem Fall tun digund hostbeide senden genau die gleiche Abfrage - Paket, erhält genau die gleiche Antwortpaket (abgesehen von irgendwelchen Zeitstempeln), aber es anders interpretieren? Wird hostgerettet, sobald es sieht NXDOMAIN?
Jhabbott
FWIW Ich habe das genau entgegengesetzte Problem in einer bestimmten Subdomain. Die Verwendung des Hosts für diese bestimmte Subdomain liefert den erwarteten Datensatz, aus dem hervorgeht, dass diese bestimmte Subdomain in einen erwarteten kanonischen Hostnamen aufgelöst wird. Wenn Sie jedoch dig für diese bestimmte Subdomain verwenden, erhalte ich die Antwort, dass der Datensatz nicht vorhanden ist. Das zusätzliche Navigieren zu dieser Subdomain mit einem Browser funktioniert nicht. Ich habe es mehrmals versucht und nach Rechtschreibfehlern usw. gesucht. Die Befehle funktionieren eindeutig NICHT auf die gleiche Weise.
user12345

Antworten:

13

host,, digund nslookupalle haben die gleiche Funktionalität. In dem Fall, in dem Sie nachfragen (eine bestimmte DNS-Frage an einen bestimmten Nameserver stellen) digund sich host(und tatsächlich nslookup) genau gleich verhalten.

Für die DNS-Fehlerbehebung digwird dies bevorzugt, da das Ausgabeformat "roher" ist: In der Ausgabe wird der Inhalt aller 4 Felder in der DNS-Antwort direkt angezeigt: Frage, Antwort, Berechtigung und zusätzliche Abschnitte (plus die Flags in der Kopfzeile). und es hat auch mehr Optionen. hostAuf der anderen Seite hat ein benutzerfreundlicheres Ausgabeformat.

Wenn Sie nicht zufällig eine Option benötigen, die einer der Befehle hat und die anderen nicht, oder eine Information, die einer von ihnen ausgibt und die anderen nicht, dann kommt es auf eine Frage der Präferenz an.

Celada
quelle
2
Wenn sie auf der Netzwerkseite dasselbe tun (die eigentliche Abfrage), wie kann ich dann einen Host finden, der bei der Verwendung nicht gefunden wird, hostaber bei der Verwendung die richtige Antwort dig? Selbst wenn der Server mit einer bestimmten Einstellung (entweder nach Wahl oder aus Versehen) konfiguriert ist, um dies zu verursachen, muss er in der Lage sein, die Anforderungen zu unterscheiden.
Jhabbott
Nee! Die beiden Befehle, die Sie in Ihrer Frage geben, sind gleichwertig und sollten dieselbe Antwort liefern! Sind Sie sicher, dass digSie eine tatsächliche Antwort erhalten haben und keine Aufzeichnung im Abschnitt "Zusatz" oder "Autorität"? Wie Renan vorschlägt, könnte es hilfreich sein, die Ausgabe anzuzeigen.
Celada
Ok, ich habe einige Beispielausgaben hinzugefügt. Ich bekomme das gleiche Ergebnis zu Hause und bei der Arbeit. Wenn ich keinen zu verwendenden Nameserver angegeben habe und mein ISP die Abfrage bearbeitet, hostfunktioniert dies einwandfrei. Bitte versuchen Sie es selbst und teilen Sie mir die Ergebnisse mit.
Jhabbott
Nur eine Überprüfung - Der ISP hat mir schließlich mitgeteilt, dass sein Server so konfiguriert ist, dass er nicht auf direkte Clientanfragen reagiert, sondern nur auf andere Nameserver, die nach Informationsübertragungen fragen. digWird eine Abfrage anders durchgeführt, als dies bei einem Nameserver der Fall wäre?
Jhabbott
1
dig kann sowohl reguläre Fragen (alle Typen außer AXFR) als auch Zonentransfers (Typ AXFR) ausführen, aber DNS-Operatoren beschränken Zonenübertragungen normalerweise auf autorisierte Slaves, sodass Sie höchstwahrscheinlich reguläre Fragen verwenden möchten
Celada
0

Wenn Sie den Nicht-FQDN-Hostnamen verwenden, können die Ergebnisse unterschiedlich sein, da hostdie Suchdomänen in verwendet werden resolv.conf, während digdies standardmäßig nicht der Fall ist.

Sie müssen die +searchOption verwenden, wenn Sie digsie verwenden resolv.conf(oder hinzufügen ~/.digrc) möchten .

Beispielsweise:

$ host foo
foo.myfqdn.com has address 10.1.2.3

$ dig +short foo
# (no result)

$ dig +short +search foo
10.1.2.3
wisbucky
quelle