Warum verbreiten sich unsere DNS-Einträge nicht ins Internet?

22

Wir betreiben die Nameserver für unsere Domain in unserem Netzwerk. Wir verwenden bind / named. Nennen wir die Domain example.com . Eine Sache, die mir in letzter Zeit aufgefallen ist, ist, dass ich beim Aufrufen einer Website wie http://network-tools.com und Ausführen von Abfragen zu URLs, die auf unseren Nameservern definiert sind, Änderungen sofort sehe.

Wenn ich beispielsweise einen Eintrag für die URL funny.example.com zu unserem DNS-Server hinzufüge und diese URL dann auf http://network-tools.com nachschlage, wird sofort die richtige externe statische IP- Adresse angezeigt .

Das bedeutet, dass alle DNS-Anfragen im Zusammenhang mit example.com jedes Mal direkt an unsere DNS-Server gesendet werden.

Meine Vermutungen wurden Anfang der Woche bestätigt, als unsere DNS-Server für einen sehr kurzen Zeitraum ausfielen. Und während dieser Zeit, wenn ich verwendet http://network-tools.com zu Abfrage example.com oder einer ihrer Unterdomänen, würde ich null Ergebnisse. Offensichtlich liegt es daran, dass die DNS-Server ausgefallen und nicht erreichbar waren.

Das bringt mich zu meiner Frage. Ich dachte, Änderungen an unseren DNS-Servern sollten auf andere DNS-Server im Internet übertragen werden. Auf diese Weise wissen andere Server im Internet, auf welche IP-Adresse example.com verweist , wenn unser DNS vorübergehend ausfällt .

Verstehe ich dieses DNS-Zeug falsch? Dürfen DNS-Server von Drittanbietern wie unsere keine DNS-Informationen an andere Server im Internet weitergeben?

Wo soll ich anfangen zu untersuchen, warum die Änderungen es nicht schaffen? Ich kann an unserer Firewall erkennen, dass der Datenverkehr von Port 53 ordnungsgemäß zu unseren DNS-Servern gelangt.

AKTUALISIEREN

  1. Ich weiß, dass Sie sagen, dass es unmöglich ist, Ihre DNS-Einstellungen sofort zu veröffentlichen, aber alles, was ich weiß, ist Folgendes: Wenn ich eine DNS-Änderung auf unseren DNS-Servern vornehme und sie dann sofort auf http: // network-tools überprüfe . com , ich sehe die Änderungen sofort.

  2. Wenn ich unsere DNS-Server ausschalte und dann versuche, eine der URLs mit http://network-tools.com zu überprüfen , kann die Site keine der URLs finden. Wenn ich aber die DNS-Server wieder online bringe, kann http://network-tools.com die URLs plötzlich wieder finden ... Dies zeigt mir, dass Server unsere DNS-Einstellungen NICHT zwischenspeichern. Liege ich falsch? Außerdem sind unsere TTL-Einstellungen momentan auf 900 (15 Minuten) festgelegt und unsere DNS-Server laufen seit über einem Jahr. Es ist also nicht so, als ob DNS-Server im Internet noch keine Chance hätten, sie zwischenzuspeichern. Zwischenspeichern Server die Einstellungen nicht, weil die TTL momentan so niedrig ist? Das macht irgendwie Sinn, wenn das der Grund ist.

Jake Wilson
quelle
7
Da jokerville.com echte registrierten Domain - Namen ist, es sei denn , das ist eigentlich Ihre Domäne, verwenden Sie bitte example.comstatt - es ist offiziell für diesen Zweck reserviert.
mattdm
9
Der Grund, warum network-tools.com Änderungen sofort erkennt, ist, dass es sich um ein Netzwerk-Tool handelt und Ergebnisse AUSSCHLIESSLICH nicht zwischengespeichert werden. Es ist ein Tool zum Betrachten Ihrer Nameserver, kein normaler DNS-Client, daher werden unterschiedliche Regeln befolgt.
Michael Kohne

Antworten:

42

Ja, Sie verstehen nicht, wie DNS funktioniert. Ich werde hier einige Akzente setzen, aber seien Sie bitte nicht beleidigt, da dies nicht beabsichtigt ist.

DNS-Einträge werden nicht weitergegeben. SIE SIND CACHED.

Abgesehen davon ist hier eine vereinfachte Erklärung dessen, was passiert:

  1. Sie erstellen einen neuen DNS-Eintrag (A, CNAME usw.)

  2. Ein entfernter Benutzer (genauer gesagt ein Prozess \ eine vom Benutzer gestartete Anwendung) versucht, auf einen Dienst zuzugreifen, auf den über diesen DNS-Eintrag zugegriffen wird (ein Webbrowser, der versucht, auf die Website zuzugreifen, die auf funny.example.com ausgeführt wird).

  3. Der DNS-Client des Benutzers sendet eine DNS-Abfrage an seinen DNS-Server. Der DNS-Server findet dann Ihre Nameserver (normalerweise über eine Reihe von rekursiven DNS-Abfragen) und fragt sie nach den Informationen zu funny.example.com

  4. Ihre Nameserver antworten mit den Antworten

  5. Der DNS-Server des Benutzers sendet diese Informationen dann an den Benutzer (genauer gesagt an den DNS-Client-Resolver des Benutzers), der die Informationen an den Prozess \ die Anwendung zurückgibt. Diese Informationen werden mit einer sogenannten TTL (Time To Live) geliefert, die dem DNS-Client-Resolver mitteilt, wie lange diese Informationen im DNS-Cache (im Speicher) aufbewahrt werden dürfen und wie lange die Informationen als aktuell und genau angesehen werden können

  6. Der DNS-Client-Resolver des Benutzers löscht diese Informationen dann, wenn die TTL abläuft. Alle neuen Anforderungen für die fraglichen DNS-Einträge erfordern eine neue DNS-Suche, und der oben beschriebene Vorgang wird wiederholt.

Also das lange und kurze davon ist das:

Ihre DNS-Einträge werden nicht weitergegeben. Kein anderer DNS-Server verfügt über eine Kopie Ihrer DNS-Einträge oder -Zonen. Ein DNS-Client oder -Server speichert möglicherweise Informationen zu Ihren DNS-Einträgen oder -Zonen (basierend auf den DNS-Abfragen Ihrer DNS-Einträge und -Zonen) in ihrem DNS-Cache. Diese Informationen werden vorübergehend zwischengespeichert und nach Ablauf der TTL aus ihrem DNS-Cache entfernt.

Wenn Ihre Nameserver nicht verfügbar sind, können nur die DNS-Clients, auf denen sich DNS-Einträge in ihrem Cache befinden, diese DNS-Einträge auflösen, und zwar so lange, bis die TTL abläuft. Wenn die TTL abläuft (ein neues DNS-Lokkup erforderlich ist), können diese DNS-Clients Ihre DNS-Einträge nicht mehr auflösen.

Joeqwerty
quelle
Gute Erklärung und ich kann ein Beispiel für ein Protokoll hinzufügen, bei dem es eine Ausbreitung gibt (im Gegensatz zu DNS): BGP.
Bortzmeyer
11

Es wäre sehr hilfreich, wenn Sie uns Ihren tatsächlichen Domain-Namen mitteilen würden, dann könnten wir Ihre Frage unter Bezugnahme auf Ihre tatsächliche Einrichtung beantworten und auf Fehler hinweisen.

Ich neige dazu, http://dns.squish.net/ für die schnelle Diagnose von DNS-Problemen zu vertrauen . Das wird Ihnen mit Sicherheit sagen, wo Ihre Probleme liegen, nachdem Sie eine Änderung vorgenommen haben - im Grunde genommen, wenn Ihre Delegierung vom Upstream korrekt ist und Ihre 2-3 Nameserver alle die gleiche Antwort geben und jemand den neuen Datensatz nicht sieht. Sie müssen nur auf ihr lokales Netzwerk warten, um die Änderungen zu sehen. Wenn dieser Checker Ihnen mitteilt, dass einer Ihrer Server nicht die gleiche Antwort wie die anderen Server gibt, müssen Sie das Problem beheben.

Es gibt keine Möglichkeit, DNS-Änderungen sofort zu veröffentlichen. Nun, Sie können sie sofort veröffentlichen, aber der Rest der Welt wird entsprechend der TTL-Einstellung jedes Datensatzes zurückbleiben. Wenn Sie z. B. einen TTL-Datensatz von 86400 Sekunden festgelegt haben ( Wenn Sie eine Änderung vornehmen, sehen andere den alten Datensatz bis zu einem ganzen Tag, da der lokale Cache Sie erst dann fragt, wenn die Kopie des Datensatzes abgelaufen ist.

Ich würde vorschlagen, dass Sie vor größeren DNS-Änderungen Ihre TTL auf 600 (10 Minuten) reduzieren, um die Caches im Internet zu ermutigen, alte Datensätze nicht sehr lange zu behalten. Einige Caches ignorieren dies jedoch oder gehen von einem Tag oder sogar einer Woche aus.

Eine weitläufige Antwort auf eine weitläufige Frage, ich hoffe, es war etwas Nützliches dabei.

Matthew Bloch
quelle
1
+1. Nur diejenigen DNS-Clients, die bereits Informationen in ihrem Cache haben, für die die TTL nicht abgelaufen ist, sind von einer Änderung betroffen. Alle neuen Anforderungen, für die sich keine Daten im Cache befinden, werden sofort aufgelöst.
Joeqwerty
fyi: dead link - squish.net/dnscheck
Aaron Esau
8

Ja, das alte Sprichwort "DNS-Änderungen können 24-48 Stunden dauern, bis sie über das Internet verbreitet werden" lautet genauer: "DNS-Änderungen können auf allen DNS-Servern zwischengespeichert werden, die diesen Datensatz innerhalb der letzten 86400 Sekunden abgefragt haben."

Wenn Sie die Redundanz Ihres DNS für den Fall sicherstellen möchten, dass Ihr Server offline geschaltet wird, sollten Sie sich den DNS-Sicherungsdienst (wie bei dyndns.com) ansehen oder Ihren eigenen sekundären NS erstellen.

Willbradley
quelle
5

Alle DNS-Server im Internet werden von "Drittanbietern kontrolliert" (ich nehme an, Sie könnten die DNS-Stammserver als "proprietär" für das Internet betrachten, aber es gibt keinen technischen Grund, warum Sie auch Ihr eigenes privates Stammverzeichnis einrichten könnten).

Ihr DNS-Server gibt in jeder Antwort eine vorgeschlagene "Time to Live" (TTL) an. Remote-Resolver (andere DNS-Server, die eine rekursive Auflösung für Clients, Client-Resolver-Bibliotheken usw. durchführen) sollen die Antwort für diese TTL zwischenspeichern, bevor sie aus ihrem Cache gelöscht werden.

Wenn Sie keine Änderungen an vorhandenen Datensätzen feststellen, die sich in realen Abfragen widerspiegeln, bedeutet dies wahrscheinlich, dass Ihre TTL-Werte so hoch sind, dass Sie nicht lange genug warten, bis die vorhandenen Antworten aus dem Resolver veraltet sind caches um das 'netz.

Hintergrundinformationen zu Serverfehlern: Warum wird DNS als "Weitergabe" bezeichnet?

Evan Anderson
quelle
2

Wenn sich jemand (oder ein Computer) im Internet mit einem Ihrer Computer verbinden möchte, fragt er seinen lokalen Nameserver nach einer IP-Adresse, die dem gewünschten Hostnamen entspricht.

Wenn Sie also jemandem sagen "Hey, schauen Sie sich meine coole Website http://www.example.com an ", fragt der Computer des anderen Mannes seinen lokalen Nameserver "Hey, was ist eine IP-Adresse für www.example.com?"

Angenommen, der lokale Nameserver hat die Antwort auf diese Frage noch nie zuvor nachgeschlagen, fordert er die Root-Nameserver auf, herauszufinden, welche Server die Suche nach ".com" verarbeiten. Wenn es diese Antwort erhält, fragt es die Server, welche Server die Suche nach "example.com" durchführen. Wenn diese Antwort angezeigt wird, werden diese Server nach einer IP-Adresse für "www.example.com" gefragt.

Wenn der oder die Server für example.com mit einer IP-Adresse für www.example.com antworten, geben sie dem anfragenden Nameserver auch einen Hinweis, wie lange er sich die Antwort auf diese Frage merken soll. Dieser Hinweis wird als "TTL" oder "time to live" bezeichnet und in Sekunden gemessen. Es gibt keine Garantie dafür, dass ein Server die TTL beachtet. Einige Nameserver sind möglicherweise so konfiguriert, dass sie sich die Antworten auf Suchanfragen nicht merken und den Vorgang immer wiederholen, selbst wenn sie mehrmals pro Sekunde gefragt werden. Andere Nameserver sind möglicherweise so konfiguriert, dass die Antwort für längere Zeit gespeichert bleibt, auch wenn Sie vorgeschlagen haben, die Daten nur für kurze Zeit zu speichern, möglicherweise, weil sie den Netzwerkverkehr minimieren möchten. Die TTL ist nur ein Vorschlag, keine Anforderung oder Garantie.

Die wörtliche Antwort auf Ihre Frage - warum verbreiten sich Ihre DNS-Einträge nicht im Internet? - ist, dass sie das nicht tun, weil sie es nicht sollen.

Wenn Sie Ihre eigenen DNS-Informationen auf einer Site anzeigen, auf der DNS-Informationen recherchiert oder debuggt werden sollen, werden die Daten auf der Site möglicherweise nicht lange oder überhaupt nicht zwischengespeichert, unabhängig davon, was Ihr TTL-Vorschlag vorsieht Das Ziel der Site ist wahrscheinlich, Informationen darüber zu liefern, was das DNS-System JETZT sagt, nicht vor 5, 50 oder 500 Sekunden. Aus diesem Grund werden Ihre Änderungen sofort übernommen und der Dienst funktioniert nicht mehr, sobald Sie die Verbindung zu Ihren Nameservern trennen.

Ich vermute, dass Ihre zugrunde liegende Frage lautet: "Wie kann ich festlegen, dass andere Personen im Internet meine Webseiten weiterhin sehen können, wenn der DNS-Server neu gestartet wird oder die Festplatte ausfällt?"

Die Antwort auf diese Frage besteht darin, mehrere Nameserver für Ihre Domain einzurichten und diese auf verschiedenen Computern ausführen zu lassen - im Idealfall nicht nur auf verschiedenen physischen Computern, sondern auch mit verschiedenen Netzwerkverbindungen, möglicherweise sogar in verschiedenen Städten, Bundesstaaten, Ländern oder Kontinenten. Die meisten dieser Nameserver werden als "Slaves" eingerichtet. Dies bedeutet, dass sie ihre Informationen von einem "Master" -Nameserver abrufen und diese Informationen dann für jeden wiederholen, der sie nach Daten fragt.

In Ihren WHOIS-Daten mit Ihrem Domainnamen-Registrar können Sie also vier Nameserver für Ihre Domain konfigurieren:

ns1.example.com ns2.example.com ns1.otherguy.com ns2.otherguy.com

Dabei ist ns1.example.com Ihr aktueller DNS-Server. ns2.example.com ist möglicherweise eine andere Maschine in Ihrem Unternehmen / Ihrer Organisation - idealerweise nicht im selben Subnetz und im selben Server-Rack (oder unter demselben Arbeitsplatz) wie ns1.example.com.

ns1.example.com wird als "Master" -Server betrachtet, und wenn Sie Ihr DNS ändern möchten, nehmen Sie Ihre Änderungen auf diesem Computer vor.

ns2.example.com wird als "Slave" -Server konfiguriert, der nur die Daten kopiert, die Sie auf ns1.example.com eingerichtet haben. Die Außenwelt kümmert sich jedoch nicht um die Unterscheidung zwischen Master und Slave, ns2.example .com wird genauso "offiziell" angesehen wie ns1.example.com.

Bei ns1.otherguy.com und ns2.otherguy.com handelt es sich um Maschinen, die an einem anderen Ort aufgestellt wurden. Vielleicht treffen Sie eine Vereinbarung mit einem Freund / Kollegen einer anderen Organisation, um Nameserver füreinander zu betreiben, oder Sie richten sich bei dyndns.com ein oder everydns.net oder einer der anderen freien oder kommerziellen DNS-Anbieter. Wenn Sie das herausfinden, werden diese Computer als Slaves konfiguriert, sodass sie die DNS-Informationen für example.com von ns1.example.com (Ihrem "Master") abrufen und diese DNS-Informationen an alle Computer auf dem Server übertragen Internet, das danach fragt.

Sobald Ihr Domain-Registrar die neuen NS-Einträge für Ihre Domain veröffentlicht (dies sollte ungefähr sofort geschehen), und wenn jemand im Internet fragt, welcher Domain-Name-Server "example.com" verarbeitet, erhält er vier Antworten:

ns1.example.com, ns2.example.com, ns1.otherguy.com, ns2.otherguy.com

Abhängig davon, wie der Nameserver des anderen Typen eingerichtet ist, werden diese vier möglicherweise als Liste behandelt und nacheinander gefragt, wie sie zu "www.example.com" gelangen Gleichzeitig und nimm einfach die Antwort von der Maschine, die zuerst antwortet. So oder so, wenn ns1.example.com nicht verfügbar ist, weil die Festplatte defekt ist oder Sie sich für einen Neustart entschieden haben oder was auch immer, dann sind die anderen 3 Computer verfügbar, um die Frage zu beantworten, und Ihre Website bleibt weiterhin sichtbar.

Der einfachste Weg, um dieses Problem zu lösen, besteht darin, sich bei einem DNS-Dienstanbieter anzumelden, der das DNS für Ihre Domain verwaltet. Der Preis dafür reicht von kostenlos bis zu Tausenden (wahrscheinlich sogar Zehntausenden oder Hunderttausenden) Dollar pro Monat Service-Level, den Sie wollen. Sie können einen einigermaßen zuverlässigen Service für etwa 30 USD pro Jahr erhalten. Die kostenlosen Dienste sind nicht schrecklich und haben daher ein ziemlich gutes Preis-Leistungs-Verhältnis. Wenn Sie jedoch darauf angewiesen sind, dass Ihre Website Geld verdient, sollten Sie in der Lage sein, 30 US-Dollar für ein Jahr DNS auszudenken .

Befolgen Sie dann die Anweisungen des DNS-Dienstanbieters, um die NS-Einträge bei Ihrem Domainnamen-Registrar zu ändern, und schon sind Sie fertig.

gbroiles
quelle
0

Das Zwischenspeichern durch andere DNS-Server hängt von der TTL ab, die der Aufzeichnung zugewiesen wurde. In Ihrem Fall kann die TTL sehr niedrig oder hoch sein. Können Sie uns weitere Informationen zu Ihrer DNS-Konfiguration geben?

Radius
quelle