Wie funktioniert der DNS-Nameserver?

14

In unserem NS-Eintrag sind zwei DNS-Server aufgeführt. Letzte Nacht ist einer unserer DNS-Server ausgefallen. Wie erwartet haben einige DNS-Server unsere Hostnamen nicht aufgelöst. Ich ging davon aus, dass dies nur vorübergehend sein und funktionieren würde, sobald die TTL unserer NS-Datensätze abläuft (1 Stunde).

Eine Stunde später bekam ich immer noch DNS-Timeouts von Desktops, die Earthlink-, Verizon- und OpenDNS-Server verwendeten. Ich habe getestet, ob der andere DNS-Server antwortet:

dig @ns2.example.com www.example.com +short

Das hat funktioniert.

Meine Fragen:

  1. Hat jemand eine Antwort darauf, warum andere DNS-Server unseren anderen DNS-Server auch nach Ablauf der TTL nicht erreicht haben?
  2. Bevorzugen DNS-Server den Haupt-DNS-Server einer Domain (aus dem SOADatensatz)?
  3. Gibt es einen Algorithmus, mit dem ein Nameserver aus den verfügbaren NS-Einträgen ausgewählt wird? Ich gehe davon aus, dass dies implementierungsspezifisch ist, aber möglicherweise gelten hier einige Standards.
Belmin Fernandez
quelle
Die TTL hat nichts mit irgendetwas zu tun. Da keine Datensätze geändert wurden, hat dies keine relevanten Auswirkungen.
David Schwartz
Ah, das sehe ich jetzt. Doh.
Belmin Fernandez

Antworten:

17

Dies ist eine unglückliche Verärgerung. Mehrere DNS-Server sollen die Zuverlässigkeit erhöhen, in der Praxis hat dies jedoch häufig den umgekehrten Effekt.

Das Problem ist, dass der Client nur so lange auf eine Antwort wartet und der Server ungefähr so ​​lange wartet. Angenommen, Sie haben zwei DNS-Server, A und B. Angenommen, A funktioniert und B ist ausgefallen. Das passiert:

  1. Der Client stellt eine Verbindung zum Nameserver Z her und fragt ihn nach den Informationen. Z wählt B und sendet eine Abfrage.

  2. Der Client hat eine Zeitüberschreitung, weil der Nameserver Z nicht geantwortet hat.

  3. Der Client versucht es mit dem Nameserver Y. Y wählt B und sendet eine Abfrage.

  4. Der Nameserver Z hat eine Zeitüberschreitung und versucht es mit A. Er erhält die richtige Antwort, aber der Client wartet nicht mehr.

  5. Der Client hat eine Zeitüberschreitung, weil der Nameserver Y nicht geantwortet hat.

  6. Der Client gibt auf, da beide Nameserver nicht antworten.

  7. Der Nameserver Y hat eine Zeitüberschreitung und versucht es mit A. Er erhält die richtige Antwort, aber der Client wartet nicht mehr.

Und es gibt keine gute Lösung. Je länger Sie warten, bis ein Nameserver antwortet, desto länger müssen Sie warten, da der Nameserver, auf den Sie warten, länger wartet. Das Problem war wohl, dass Y und Z B nicht schnell genug aufgaben.

Wenn einer Ihrer Nameserver ausfällt, treten bei einigen Clients aus purem Pech Auszeiten auf, da sie nur die schlechten ausprobiert haben.

Auf der positiven Seite, wenn Sie zwei Nameserver haben und einer ausfällt, erhalten 75% der Nameserver eine Antwort anstelle von 0%.

David Schwartz
quelle
Ich verstehe was du meinst. Eek. Der Nameserver ( Z) des Clients wird also nicht zwischenspeichern, welcher Nameserver zuletzt verwendet wurde?
Belmin Fernandez
1
Einige Nameserver machen das und manchmal hilft das. Oft hängt es davon ab, wie genau der Nameserver ausgefallen ist. Sie müssen sich daran erinnern, dass dies alles auf UDP beruht, sodass das Nichterhalten einer Antwort (auch nach ein oder zwei erneuten Übertragungen) nicht beweist, dass mit dem Nameserver etwas nicht stimmt.
David Schwartz
Ich habe in meiner Kopie von DNS und BIND (Paul Albitz und Cricket Lui, O'Rielly S. 288) gelesen, dass Bind 8.2.3-Server den Server auswählen, der am schnellsten von der Liste der Weiterleitungen antwortet wird so ziemlich automatisch gelöscht. Bind 9 implementiert dies noch nicht, sondern fragt die Forward-Server in Listenreihenfolge ab. Weiß jemand, ob sich das geändert hat?
Jaydee
Nur zur Verdeutlichung: Für diejenigen, die mit DNS-Setups weniger vertraut sind (ich brauchte eine Weile, um dies zu verstehen), sind die DNS-Nameserver Z und Y in diesem Beispiel höchstwahrscheinlich rekursive Nameserver, die auf dem Netzwerk des Clients basieren, z. B. die DNS-Server, die ein ISP bereitstellt an seine Kunden über DHCP. Und das Problem tritt auf, wenn diese Server einen längeren Timeout-Wert als der Client-DNS-Resolver haben (z. B. Gerätebetriebssystem.)
Jordan Rieger