Ist eine CNAME-zu-CNAME-Kette zulässig?

68

Darf in DNS ein CNAME-Eintrag vorhanden sein, der auf einen anderen CNAME-Eintrag verweist?

Der Grund dafür ist, dass wir einen Hostnamen haben, der nach der IP-Adresse unseres Webserver-Computers durchsucht werden soll. Wir haben auch einen anderen Webserver, der aktiviert werden könnte, falls der erste sterben sollte. In einem solchen Fall müssten wir den Hostnamen schnell auf die IP-Adresse des Standby-Webserver-Computers verweisen.

Leider befindet sich der Hostname in einer DNS-Domäne, in der Änderungen aufgrund manueller Vorgänge, die von anderen Sysadmins abhängig sind, sehr lange dauern würden. Wir haben jedoch eine andere DNS-Domäne, in der wir die Änderungen schnell selbst durchführen können. Eine CNAME-zu-CNAME-Kette scheint eine mögliche Lösung zu sein. Aber ist es erlaubt? Werden Webbrowser das verstehen?

Erik Sjölund
quelle

Antworten:

81

Aus RFC 1034 - Domainnamen - Konzepte und Einrichtungen :

Domainnamen in RRs, die auf einen anderen Namen verweisen, sollten immer auf den primären Namen und nicht auf den Alias ​​verweisen. Dies vermeidet zusätzliche Indirektionen beim Zugriff auf Informationen. Die Adresse für den Namen RR für den obigen Host sollte beispielsweise lauten:

52.0.0.10.IN-ADDR.ARPA  IN      PTR     C.ISI.EDU

anstatt auf USC-ISIC.ARPA zu verweisen. Aufgrund des Robustheitsprinzips sollte Domänensoftware natürlich nicht versagen, wenn CNAME-Ketten oder -Schleifen vorhanden sind. CNAME-Ketten sollten befolgt und CNAME-Schleifen als Fehler gemeldet werden.

Also ja, es ist erlaubt und richtig geschriebene Software wird es einfach OK behandeln. CNAME-Ketten werden jedoch nicht als bewährte Verfahren angesehen und verursachen einen Mehraufwand für die Infrastruktur.

Paweł Brodacki
quelle
3
+1 für die RFC-Referenz
Alnitak
16
Obwohl ich das die ganze Zeit mache, ist das obige Zitat aus dem Zusammenhang geraten. Genau über diesem Absatz steht ..Domain names in RRs which point at another name should always point at the primary name and not the alias. This avoids extra indirections in accessing information.
Molomby
3
CNAME-Verkettung wird vom Microsoft Azure-Netzwerkbetreiber erwähnt und ist wichtig für den AnyCast-Lastenausgleich.
Paul Lan
26

Sicher ist es möglich.

Im Allgemeinen wird jedoch aus dem offensichtlichen Grund, dass mehr DNS-Ressourcen verwendet werden, davon abgeraten . Zum Beispiel:

foo   IN      CNAME  someserver.somehost.com.
bar   IN      CNAME  foo

Das Abfragen von "bar" würde dazu führen, dass CNAME fooabgefragt und dann someserver.somehost.com.abgefragt wird, was zu einer zusätzlichen Abfrage führt.

Für jedes Element in der Kette, die Sie hinzufügen, ist eine weitere Abfrage erforderlich.

Ein weiterer Grund, der davon abgeraten wird, ist, dass durch das Erstellen von Ketten wie diesen die Chancen erhöht werden, dass Sie CNAME-Schleifen erstellen . Diese sollten von aktuellen DNS-Servern automatisch erkannt werden, würden die Server jedoch weiterhin stark belasten.

Aron Rotteveel
quelle
5

Ja, es ist erlaubt und wird funktionieren, aber es wird nicht als gute Praxis angesehen. Die mehreren Suchvorgänge beanspruchen mehr Ressourcen und es besteht die Gefahr, dass versehentlich eine Schleife erstellt wird.

Mike Scott
quelle