Wie genau behandeln Nameserver unbekannte Subdomains?

7

Ich besitze eine Domain econemon.com. Unten finden Sie einen Auszug aus dem DNS-Eintrag (einige Einträge wurden der Kürze halber weggelassen):

econemon.com.       1800    IN  NS  ns.stratoserver.net.
econemon.com.       1800    IN  NS  ns2.stratoserver.net.
econemon.com.       1800    IN  A   85.214.92.48

Diese Nameserver gibt es von meinem Provider, und soweit ich es verstanden habe, sind sie die maßgeblichen für meine Domain.

Wenn ich jetzt einen von ihnen nach dem Adressdatensatz einer nicht vorhandenen Subdomain frage, antwortet dieser mit der Adresse für meinen Server wie folgt:

$ host -t A nosuchdomain.econemon.com ns.stratoserver.net
Using domain server:
Name: ns.stratoserver.net
Address: 81.169.163.40#53
Aliases: 

nosuchdomain.econemon.com has address 85.214.92.48

Welches ist natürlich genau das, was ich möchte, um virtuelle Hosts usw. zu haben. Angenommen, ich habe einen Eintrag hinzugefügt

econemon.com.    IN  NS  ns.econemon.com

und der richtige A-Datensatz für ns.econemon.comdie Liste, und dieser Nameserver hatte tatsächlich unterschiedliche A-Datensätze für einige Subdomains. Was würde passieren?

  • Würde eine Anfrage subdomain.econemon.comeine andere Adresse ergeben, je nachdem, welchen Nameserver Sie gefragt haben? (Ich denke es würde.)
  • Wenn ja, kann dies tatsächlich nützlich sein, um auf einen "Hauptserver" zurückzugreifen, wenn mein DNS nicht verfügbar war. Wie kann ich den Client dazu bringen, meinen Nameserver zu verwenden, wenn er aktiv ist?
  • Würde dies das Caching auf den Clients durcheinander bringen? (Wahrscheinlich.)

(Hinweis: Dies hängt mit meinen beiden anderen Fragen zusammen. )

Hanno Fietz
quelle
" nosuchdomain.econemon.com has address 85.214.92.48". Da es keine solche Domain gibt, würde ich stattdessen " Host nosuchdomain.econemon.com not found: 3(NXDOMAIN)" erwarten .
Abdull

Antworten:

3

DNS-Lookups sind sequentiell und beginnen am Ende. Unter der Annahme leerer Caches würde die Suche nach MISSING.DOMAIN.COM ungefähr so aussehen ...

  • Der DNS-Client würde MISSING.DOMAIN.COM von einem DNS-Server anfordern.
  • Der DNS-Server fragt den "Root" -DNS nach der Domäne MISSING.DOMAIN.COM und erhält einen Nameserver für die COM-Domäne zurück.
  • Der DNS-Server fragt den COM-Nameserver nach MISSING.DOMAIN.COM und erhält einen Nameserver für die DOMAIN.COM-Domäne zurück.
  • Der DNS-Server fragt den DOMAIN.COM-Nameserver nach MISSING.DOMAIN.COM. Der DOMAIN.COM-Nameserver hat keine Antwort und meldet daher je nach Konfiguration eine Adresse für DOMAIN.COM zurück.
  • Wenn es einen NS-Eintrag für MISSING.DOMAIN.COM gäbe, würde dieser zurückgegeben und vom ursprünglichen DNS-Server als nächstes abgefragt. Wenn es einen A-Datensatz für MISSING gäbe, würde die IP darauf zurückgemeldet.

Das ist der Kern davon. In der Realität ist dies aufgrund von Caching, Lastausgleich und der Tatsache, dass Nameserver namentlich angegeben werden können und daher ebenfalls nachgeschlagen werden müssen, weitaus komplizierter.

Um Ihre Frage zusammenzufassen: Sie können mehrere Nameserver für eine Domain angeben und sie mit unterschiedlichen Informationen einrichten lassen . Die Antwort lautet ja , aber Sie müssen vorsichtig sein und wissen, was Sie tun. Sie können DNS verwenden, um den Lastenausgleich zu unterstützen , und Sie können es verwenden, um Failover Lite zu unterstützen . Aber du musst vorsichtig sein!

EDIT: In einem Kommentar wies Bortzmeyer auf einige Vereinfachungen hin, die seiner Meinung nach die Grenze zum Fehler überschreiten. Ich habe Anpassungen vorgenommen, von denen ich hoffe, dass sie die Bedenken ausräumen.

Tomjedrz
quelle
1
Falsche Erklärung. Im zweiten Schritt "fragt der Server NICHT das Root-DNS nach der COM-Domäne", sondern überträgt nur wörtlich dieselbe Frage (hier MISSING.DOMAIN.COM). Gleiches gilt für die folgenden Schritte. Aus diesem Grund ist die Verwaltung eines Root- oder TLD-Nameservers eine großartige Möglichkeit, die Benutzer auszuspionieren :-) Wenn der für DOMAIN.COM autorisierende DNS-Server antwortet, sendet er nicht immer "seine Standardhostadresse", sondern hängt davon ab, ob dies der Fall ist Platzhalter oder nicht.
Bortzmeyer
4

Dies ist eine dieser Situationen "Ich glaube nicht, dass dieses Wort bedeutet, was Sie denken, dass es bedeutet". Sie nennen Host-Datensätze innerhalb einer bestimmten Domain "Subdomains". Sie sind nicht.

So beantworten Sie alle Ihre Fragen:

Eine Anfrage an einen bestimmten Nameserver gibt zurück, was seiner Meinung nach die richtige Antwort ist. Es hört sich so an, als würden Sie vorschlagen, dass Sie einen weiteren DNS-Server als autorisierend für Ihre "econemon.com" -Domain hinzufügen könnten, der einige "A" -Datensätze enthält, die die anderen nicht enthalten würden. Dies ist keine übliche oder empfohlene Konfiguration von DNS. Im Allgemeinen möchten Sie, dass alle für eine bestimmte Domain autorisierenden DNS-Server dieselben Einträge haben (es sei denn, Sie wissen, warum Sie das tun ... auch bekannt als "Split-Horizon" -DNS).

Es gibt keinen allgemein nützlichen Grund, das zu tun, was Sie beschreiben. Sie können die Auswahl des DNS-Servers durch den Client-Computer-Resolver nicht beeinflussen. Es würde das Caching nicht "durcheinander bringen" - das Caching würde so funktionieren, wie es soll. Dies würde zu inkonsistenten Ergebnissen führen, je nachdem, mit welchem ​​DNS-Server ein Client gesprochen hat, und das ist im Allgemeinen schlecht.

Eine Subdomain wäre so etwas wie eine "subdomain.example.com" -Domain, die Hostdatensätze wie "www.subdomain.example.com" enthält. Sie sprechen nur von Hosts in einer Domain.

Evan Anderson
quelle
OK, danke für die Klarstellung. Ich würde also mehrere Host-Datensätze, dh A-Datensätze für die Namen example.com, www.example.com, ftp.example.com, in eine Zonendatei einfügen, die dann entweder auf meinem Server oder dem des Anbieters oder auf beiden leben kann. Und was passiert dann mit doesntexist.example.com, wie ist das gelöst?
Hanno Fietz
+1 für Princess Bride Referenz;)
Russell Heilling
Host-Datensätze sind Subdomains. Jeder Domainname außer "." (die Wurzel) ist eine Subdomain.
Bortzmeyer
3

Es sieht so aus, als hätten Sie einen DNS-Wildcard-Eintrag für Ihre Domain.

*.econemon.com.  IN A 81.169.163.40

Dies bedeutet, dass Sie einen A-Datensatz für 81.169.163.40 erhalten, wenn eine Abfrage keine Datensätze ergibt. Eigentlich ist es komplizierter. Wenn es einen Datensatz für ein "Label" gibt (einen vollqualifizierten Domainnamen oder FQDN), wird der Platzhalterdatensatz für dieses Label deaktiviert. Wenn Sie also einen MX-Datensatz für foo.econemon.com haben, wird bei einer Abfrage nach dem A-Datensatz von foo.econemon.com nichts angezeigt.

Platzhalterdatensätze sind eher selten und können bestimmte Softwaresysteme verwirren. Ich empfehle nicht, sie zu verwenden. Ihr ISP verwendet sie jedoch, damit Sie sie nicht jedes Mal zum Aktualisieren von DNS-Einträgen stören müssen, wenn Sie eine Subdomain hinzufügen. Das macht Sinn.

Nun zu Ihrer Frage ...

Anscheinend fragen Sie: "Wenn ich einen Nameserver mit anderen Daten als die anderen habe, was passiert dann?"

Wenn Sie 2 haben, die Ihr ISP mit bestimmten Daten ausführt, und 1, die Sie mit anderen Daten ausführen, besteht eine 2: 1-Chance, Daten von Ihrem ISP-Server abzurufen. Das DNS-System sucht nicht ständig nach anderen Nameservern, wenn es die gewünschten Daten im ersten nicht findet. Mit anderen Worten, du kannst Daddy nicht fragen, ob Mama "nein" gesagt hat.

Dies ist ein wichtiges Konzept in DNS. DNS muss SCHNELL sein. Führen Sie daher niemals zwei Abfragen durch, wenn dies der Fall ist.

Aus diesem Grund sollten Sie in jedem Nameserver der Domain dieselben genauen Zonendaten für eine Domain haben. (Es sei denn, Sie haben ein lustiges Lastausgleichsschema.)

  • Würde eine Anfrage für subdomain.econemon.com eine andere Adresse ergeben, je nachdem, welchen Nameserver Sie gefragt haben? (Ich denke es würde.)

Ja

  • Wenn ja, kann dies tatsächlich nützlich sein, um auf einen "Hauptserver" zurückzugreifen, wenn mein DNS nicht verfügbar war. Wie kann ich den Client dazu bringen, meinen Nameserver zu verwenden, wenn er aktiv ist?

Die Nameserver werden in zufälliger Reihenfolge ausprobiert. Wenn der erste nicht antwortet, versucht der DNS-Client den nächsten. Wenn alle ausprobiert wurden, erhält der Client einen DNS-Fehler. Da jeder DNS-Server 1 Abfrage gesendet hat, warten wir im Allgemeinen 30 Sekunden (glaube ich) auf eine Antwort. Wenn Sie 100 Nameserver haben, warten Sie 50 Minuten, bevor der Client ausfällt. Deshalb habe ich normalerweise nicht mehr als 3 Nameserver für eine Domain. Mehr ist nicht besser.

  • Würde dies das Caching auf den Clients durcheinander bringen? (Wahrscheinlich.)

Nicht wirklich. Die Software ist sehr robust. Hier kommt das Robustheitsprinzip von Postel ins Spiel ("Sei konservativ in dem, was du sendest, liberal in dem, was du akzeptierst"). Es hat Vorteile. Fragen Sie nach www.yahoo.com, www.microsoft.com und www.google.com. Sie werden sehen, dass jeder Nameserver unterschiedliche IP-Adressen angibt, je nachdem, wo Sie sich auf der Welt befinden (und andere Faktoren). Wenn das die Kunden verwirren würde, würden diese Websites nicht überleben!

TomOnTime
quelle