Wir haben unsere DNS-Domain mit 5-Level-CNAMEs aus historischen Gründen. Einige der Dinge wurden wegen hoher Verfügbarkeit usw. ausgelagert, aber das ist hier nicht der Punkt. Meine Frage ist, ob 5 CNAME ein Overkill für den DNS-Resolver sind. Ich konnte keine berühmte Website mit mehr als 2-3 verschachtelten CNAMEs finden, die auf verschiedene DNS-Domänen verweisen.
Unsere CNAME-Hops sehen wie folgt aus: (Ich verwende xyz nur als Beispiel)
www.xyz.com -> xyz.akadns.net -> xyz.worldwide.akadns.net -> xyz.cedexis.net -> xyz.msedge.net -> host1.msedge.net (endgültiger A \ AAAA-Datensatz)
Ich sehe viele Kunden, die sich über Probleme mit der DNS-Auflösung auf unserer Website beschweren, wenn andere Websites für sie einwandfrei funktionieren, obwohl ich http://check-host.net/check-dns?host=www.xyz.com zum Testen unseres DNS verwende Auflösung.
Es scheint weltweit immer gut zu funktionieren. Mein Fazit ist, dass der DNS-Resolver des lokalen ISP-Anbieters meistens versagt, wenn einer der oben genannten Hops nicht aufgelöst werden kann. nslookup schlägt auf diesen Client-Computern nur für unsere Website fehl und das auch sporadisch.
Ist diese Art von mehrstufigem CNAME im Allgemeinen ein schlechtes Design?
quelle
Antworten:
CNAME-zu-CNAME-Ketten sind nicht verboten, aber wie Sie bereits erfahren haben, ist dies keine sehr robuste Lösung.
Jeder zusätzliche CNAME erhöht die Rekursionstiefe für den Resolver, und diese Tiefe ist nicht immer unbegrenzt. Außerdem laufen Sie Gefahr, Schleifen zu erstellen oder den Schleifenerkennungsalgorithmus auszulösen.
Führen Sie einen DNS-Trace aus, um einen Eindruck davon zu erhalten, wie viele und welche Abfragen ein Nameserver Ihres Benutzers ausführen muss:
oder unter Windows
quelle
HBrujin ist richtig, aber in Wahrheit ist die Rekursionstiefe viel schlimmer als alles,
dig +trace
was Sie zeigen werden. Die Rekursionstiefe wird oft verhöhnt und überbewertet, aber diese Leute vergessen, dass Sie nicht nur ~ 5CNAME
Datensätze auflösen . Dies liegt daran, dass beim Auflösen des Ziels einesCNAME
Datensatzes jeder Nameserver im Pfad nachgeschlagen werden muss. Dies ist häufig viel mehr, als auf den ersten Blick ersichtlich ist.Lebt das
CNAME
Ziel in einer anderen Domäne? Sie müssen in die Nameserver zurückgreifen, was nicht nurNS
Aufzeichnungssuchen erfordert, sondern auch Suchen, bei denen keinA(AAA)
Klebstoff vorhanden ist. Leben die Nameserver für diese Nameserver in einer anderen Top-Level-Domain? Wenn diese TLDs keine Nameserver gemeinsam nutzen, werden die Kleberdatensätze wahrscheinlich nicht enthalten sein, und Sie müssen auch die Nameserver der anderen TLDs durchsuchen. Und so weiter.Jeder
CNAME
der Kette hinzugefügte Datensatz kann die Anzahl der erforderlichen Suchvorgänge exponentiell erhöhen, abhängig von der Anzahl der Nameserver, die durchlaufen werden müssen. Diese Ketten vonCNAME
+NS
+A(AAA)
Datensatz-Lookups können wiederum wahnsinnig verworren sein und weit über 150 Ebenen in einem leeren Cache erreichen. Hier können Rekursionstiefenbeschränkungen extrem unangenehm werden, was zu vorübergehenden Fehlern beim Nachschlagen Ihrer Domain in einem leeren Cache führt und dies aus Gründen, die häufig nicht sofort ersichtlich sind.Kurz gesagt, Sie können dies tun, aber seien Sie vorsichtig und nehmen Sie Feedback dieser Art ernst. Sie haben keine Kontrolle darüber, wie häufig rekursive DNS-Server im Internet neu gestartet oder gelöscht werden.
quelle
Mehrebenen
CNAME
sind in der Praxis oft praktisch. Jede Umleitungsebene bietet eine Kontrollebene in einer möglicherweise unterschiedlichen Verwaltungszone oder einer völlig anderen Organisation. Dies ist zwar kaum technisch notwendig, kann jedoch organisatorische Probleme umgehen.Wie andere Leute bemerkt haben, kann dies zu Schwierigkeiten führen, aber diese können angegangen werden:
Überwachen Sie alle DNS-Server. Vielleicht funktioniert einer nicht richtig. Überwachen Sie sowohl externe als auch Ihre eigenen Server. Möglicherweise müssen Sie ein Problem Akamai oder anderen Anbietern melden.
TTL
s sollte hoch genug eingestellt sein, um das Caching zu ermöglichen, aber niedrig genug, damit Sie den Datenverkehr schnell genug für Ihre Anwendung verschieben könnenquelle