TTL bei Abfrage eines Datensatzes mit dig

4244
whitenoisedb

Diese Frage kommt aus diesem Thema . Wenn ich dies tue, bekomme ich die verbleibenden Sekunden, bis der A-Datensatz im abgefragten Nameserver abläuft:

dig stackexchange.com 

Wenn ich das tue, bekomme ich jedoch die autorisierenden TTL-Werte:

dig any stackexchange.com 

Ich verstehe also nicht, warum ich dig any stackexchange.comalle TTL-Werte bekomme, als würde ich eine autorisierende Frage stellen, als ich tatsächlich eine rekursive Abfrage stellte.

4
@ Kanan Mohan, jetzt steht eine neue Frage. whitenoisedb vor 9 Jahren 0

2 Antworten auf die Frage

6
Kannan Mohan

Um es kurz zu machen: Beide Abfragen, die Sie in der Frage erwähnt haben, sind nicht autorisierende Abfragen.

DNS-Einträge für eine Domäne können von einem Cache-DNS-Server oder von einem autorisierenden DNS-Server abgefragt werden. Wenn Sie einen Cache-DNS-Server abfragen möchten, können Sie entweder die DNS-IP-Adresse angeben. Wenn Sie keine Angabe machen, wird der standardmäßig konfigurierte DNS-Server verwendet /etc/resolv.conf.

Nicht autorisierende Abfrage

$ dig stackexchange.com 

oder

$ dig stackexchange.com @8.8.8.8 

In beiden Fällen gibt die Abfrage eine nicht autorisierende Antwort zurück, da der DNS Ihres Internetdienstanbieters oder der öffentliche DNS (8.8.8.8) von Google für die stackexchange.comDomäne nicht autorisierend sind. Da Sie einen nicht autorisierenden Nameserver abgefragt haben, verringert sich der von ihm bereitgestellte TTL-Wert bei jeder Abfrage. Sobald der TTL-Wert abgelaufen ist, fordert der Caching Nameserver den autorisierenden DNS-Server erneut an.

Autorisierende Abfrage

Um eine autorisierende Antwort zu erhalten, müssen Sie den Datensatz von einem autorisierenden DNS-Server abfragen, der mit der unten angegebenen Methode gefunden werden kann.

$ dig ns stackexchange.com ... ;; ANSWER SECTION: stackexchange.com. 84894 IN NS cf-dns02.stackexchange.com. stackexchange.com. 84894 IN NS cf-dns01.stackexchange.com. ... 

Der ANSWER SECTION stellt die autorisierenden Nameserver für die Domäne bereit. stackexchange.comWenn Sie also die autorisierende Antwort benötigen, geben Sie die Antwort an

$ dig stackexchange.com @cf-dns01.stackexchange.com. 

Während wir den autorisierenden DNS-Server abfragen, werden die TTL-Werte nicht geändert, da diese Nameserver die primäre Informationsquelle sind und nicht verfallen, bis der Administrator sie ändert.

Wie JEDER Datensatz funktioniert

Jeder Datensatz ist wie ein Platzhalter. Sie können ihn verwenden, um alle Datensätze abzurufen, die auf einem DNS-Server zwischengespeichert / gespeichert werden. Zum Beispiel habe ich stackexchange.comnach JEDEM Datensatz gesucht und mein Standard-DNS-Server antwortet wie folgt.

$ dig any stackexchange.com .... ;; ANSWER SECTION: stackexchange.com. 86350 IN SOA cf-dns01.stackexchange.com. dns.cloudflare.com. 2017456480 10000 2400 604800 3600 stackexchange.com. 176 IN A 198.252.206.140 stackexchange.com. 84338 IN NS cf-dns01.stackexchange.com. stackexchange.com. 84338 IN NS cf-dns02.stackexchange.com. .... 

Hier können Sie sehen, dass die Antwort nur Informationen über enthält SOA, Aund NSAufzeichnung. Es gibt jedoch tatsächlich mehr Einträge, für stackexchange.comdie in meinem Standard-DNS-Server nicht zwischengespeichert wird, da ich nicht danach gefragt wurde.

Jetzt frage ich nach MXDatensatz an meinen Standard-DNS-Server und die Antwort lautet als

$ dig MX stackexchange.com .... ;; ANSWER SECTION: stackexchange.com. 300 IN MX 10 aspmx3.googlemail.com. stackexchange.com. 300 IN MX 5 alt2.aspmx.l.google.com. stackexchange.com. 300 IN MX 5 alt1.aspmx.l.google.com. stackexchange.com. 300 IN MX 10 aspmx2.googlemail.com. stackexchange.com. 300 IN MX 1 aspmx.l.google.com. .... 

Jetzt abfragen ich wieder für ANYAufzeichnung und jetzt können Sie diese Abfrage sehen für ANYzurückgegeben hat MXAufzeichnungen zu. Und so ANYDatensatz wird nur Aufzeichnungen zur Verfügung stellen, die auf dem Standardserver nur zwischengespeichert werden.

$ dig any stackexchange.com .... ;; ANSWER SECTION: stackexchange.com. 298 IN MX 5 alt1.aspmx.l.google.com. stackexchange.com. 298 IN MX 10 aspmx2.googlemail.com. stackexchange.com. 86084 IN NS cf-dns01.stackexchange.com. stackexchange.com. 298 IN MX 10 aspmx3.googlemail.com. stackexchange.com. 298 IN MX 1 aspmx.l.google.com. stackexchange.com. 298 IN MX 5 alt2.aspmx.l.google.com. stackexchange.com. 86084 IN NS cf-dns02.stackexchange.com. stackexchange.com. 243 IN A 198.252.206.140 stackexchange.com. 86343 IN SOA cf-dns01.stackexchange.com. dns.cloudflare.com. 2017456480 10000 2400 604800 3600 .... 

Und wie Sie sehen, ändern sich die TTL-Werte für nicht autorisierende Antworten.

1
TheCompWiz

Sie verstehen das TTL-Feld in DNS-Abfragen nicht. Die TTL gibt an, wie lange der Client die Ergebnisse zwischenspeichern soll, bevor er den Nameserver erneut abfragt. Wenn Sie Ihren DNS-Server nicht mit einem anderen Wert für die TTL aktualisieren, ist die Antwort immer gleich. Es ist sehr unpraktisch, Nameserver jedes Mal erneut abzufragen, wenn Sie einen Hostnamen in eine IP-Adresse auflösen müssen.

Ich verstehe, dass TTL nur bei der Abfrage der autorisierenden Server angibt, wie lange die Ergebnisse zwischengespeichert werden sollen. Bei einer rekursiven Abfrage wird jedoch die tatsächliche verbleibende Zeit in diesem DNS-Server vor dem Neustart angezeigt. whitenoisedb vor 9 Jahren 0
Warum bekomme ich bei "dig somedomain.com" beispielsweise 1645? was eigentlich nicht die TTL ist. Wenn ich dazu eine autorisierende Frage stelle, bekomme ich den korrekten TTL-Wert von 14400. whitenoisedb vor 9 Jahren 0
Möchten Sie den tatsächlichen Befehl angeben, den Sie verwenden? Ich vermute, dass einige der Parameter zu einer iterativen Abfrage wechseln, anstatt eine rekursive Abfrage zuzulassen. (+ norec + nssearch oder + trace?) TheCompWiz vor 9 Jahren 0
Sagen wir zum Beispiel, ich habe gerade 'dig stackexchange.com' und TTL war 15. Wenn ich dann 'dig + norecurse stackexchange.com @ cf-dns01.stackexchange.com' mache, erhalte ich einen TTL-Wert von 300. whitenoisedb vor 9 Jahren 0
Richtig. + Norecurse erzwingt Abfragen direkt an die autorisierenden Server. + Norecurse per Definition führt eine iterative Abfrage aus. TheCompWiz vor 9 Jahren 0
Warum bekomme ich beim Graben von 'dig any stackexchange' alle TTL-Werte, als würde ich eine iterative Abfrage durchführen? Das war meine erste Frage. whitenoisedb vor 9 Jahren 0
`dig any stackexchange` würde versuchen,` any` vom Typ `stackexchange` zu ​​suchen. (was Sie wahrscheinlich rückwärts haben) Was für ein zweites Mal war * EXACT * die Abfrage, die Sie durchgeführt haben, und was war unerwartet? TheCompWiz vor 9 Jahren 0
Ich verstehe nicht, warum ich, wenn ich StackExchange "grabe", alle TTL-Werte bekomme, als würde ich eine iterative Abfrage machen, als ich tatsächlich eine rekursive Abfrage machte! whitenoisedb vor 9 Jahren 0
Erstens weiß ich nicht, warum Sie eine intelligente Antwort von 'dig any stackexchange' erhalten, weil Ihre Parameter rückwärts sind. Es gibt keinen Datensatztyp "stackexchange". Wenn überhaupt, erhalten Sie möglicherweise zufällige, nicht zwischengespeicherte Daten, weil Sie nach einem Datensatztyp fragen, der nicht zwischengespeichert werden kann ... oder Ihre Abfrage nicht so erstellt wird, wie Sie es wünschen. TheCompWiz vor 9 Jahren 0
Oh man, ich vermisse ".com"! whitenoisedb vor 9 Jahren 0
Die Syntax für dig lautet `dig`` name` `type`. Es gibt keinen Datensatztyp `stackexchange.com`. je. TheCompWiz vor 9 Jahren 0
"dig" versteht es in beide Richtungen. `dig`` name`` type` und `dig`'typ```` whitenoisedb vor 9 Jahren 0