Canonical Name (CNAME)
Was ist der Canonical Name (CNAME)?
Ein Canonical Name (CNAME) ist eine Art Datenbankeintrag im Domain Name System (DNS), der angibt, dass ein Domainname der Nickname oder Alias für einen anderen Domainnamen ist. Der CNAME wird auch als „wahrer Name“ bezeichnet und ist besonders wichtig, wenn mehrere Dienste über eine einzige IP-Adresse laufen. In der Programmierung bedeutet der Begriff canonical beziehungsweise kanonisch „den Regeln entsprechend“.
CNAME wird in der Regel anstelle eines A-Eintrags verwendet, der eine Art DNS-Eintrag ist, der die IP-Adresse einer Domäne anzeigt. CNAME-Einträge müssen auf eine Domäne und nicht auf eine IP-Adresse verweisen. Eine Domain mit einem CNAME-Eintrag kann entweder auf eine andere Domäne mit einem CNAME-Eintrag oder auf eine Domäne mit einem A-Eintrag verweisen.
Wie funktionieren Canonical Names?
Wenn die Subdomäne „www“ als Alias für den Stammdomänennamen festgelegt ist, hat eine Subdomäne wie www.samplesite.techtarget.com einen CNAME-Eintrag, der auf die Stammdomäne techtarget.com verweist.
Wenn also ein DNS-Server die DNS-Einträge für blog.samplesite.com durchsucht, löst er einen weiteren DNS-Lookup zu techtarget.com aus und startet die Abfrage erneut mit dem kanonischen Namen. Er gibt dann die IP-Adresse von techtarget.com über seinen A-Eintrag zurück. Hier ist also techtarget.com der kanonische oder wahre Name von samplesite.techtarget.com.
Wenn sich die IP-Adresse des Hosts ändert, muss nur der DNS-A-Eintrag für die Stammadresse techtarget.com aktualisiert werden. Alle CNAME-Einträge, einschließlich blog.techtarget.com, folgen automatisch allen Änderungen, die an der Stammadresse vorgenommen werden.
Die Verwendung von Canonical Name Records
Im Folgenden werden einige gängige Verwendungsmöglichkeiten für CNAME-Einträge aufgeführt:
- um mehrere Websites, die einer einzigen Einrichtung oder Organisation gehören, auf deren Hauptwebsite zu verweisen;
- um einen separaten Hostnamen für verschiedene Netzwerkdienste wie File Transfer Protocol (FTP) oder E-Mail bereitzustellen, wobei jeder Hostname auf die Root-Domäne verweist;
- Bereitstellung von Subdomänen für jeden Kunden auf der Domäne eines einzigen Dienstanbieters und Verwendung des CNAME, um die Subdomäne auf die Root-Domäne des Kunden zu verweisen; und
- die gleiche Domäne in mehreren Ländern zu registrieren und jede länderspezifische Version auf die Hauptdomäne zu verweisen.
Eine fortschrittliche Anwendung des CNAME ist die Verwendung in mehreren Content Delivery Networks (CDNs), einer Reihe von geografisch verteilten und miteinander verbundenen Servern, die Internetinhalte von einem Netzwerkstandort in der Nähe eines Benutzers aus zwischengespeichert bereitstellen, um die Bereitstellung zu beschleunigen.
CDNs werden häufig eingesetzt, indem die Adresse des CDNs als CNAME-Eintrag für den Ursprungsserver, der den Inhalt einer Website hostet, hinzugefügt wird. Auf diese Weise wird sichergestellt, dass ein Benutzer, der versucht, auf Ressourcen auf dem Server zuzugreifen, an das CDN weitergeleitet wird. Außerdem kann derselbe CNAME-Eintrag auf der Grundlage dynamischer Parameter verwendet werden, um Benutzer an eines von mehreren CDNs weiterzuleiten.
DNS-Verwaltung von CNAME-Einträgen
Nehmen wir als Beispiel die Root-Domäne techtarget.com. Mit einem CNAME-Eintrag wird ein Benutzer, der auf www.techtarget.com zugreift, auf den CNAME techtarget.com verwiesen.
In diesem Beispiel:
Name |
Typ |
Wert |
www.techtarget.com |
CNAME |
techtarget.com |
techtarget.com |
A |
187.163.121.121 |
Der DNS-Auflösungsprozess für CNAME-Einträge funktioniert folgendermaßen: Der A-Eintrag übersetzt den Domänennamen techtarget.com in eine entsprechende IP-Adresse.
- Ein Browser oder ein Netzwerkgerät (DNS-Client) fordert eine bestimmte Adresse www.techtarget.com an. Es wird also eine DNS-Anfrage erstellt.
- Diese Anfrage wird vom DNS-Resolver empfangen, der den autorisierenden Namensserver findet, der die DNS-Zonendatei mit den entsprechenden DNS-Einträgen für die Domäne techtarget.com besitzt.
- Der CNAME-Eintrag wird an den Client zurückgeliefert.
- Der DNS-Client versteht, dass www.techtarget.com ein Alias der Root-Domäne techtarget.com ist und stellt eine neue DNS-Anfrage für techtarget.com.
- Der gleiche Anfragevorgang wird wiederholt, und der Resolver liefert den A-Eintrag von techtarget.com mit seiner IP-Adresse zurück.
- Der Client stellt über die IP-Adresse eine Verbindung zu techtarget.com her.
Wie sich CNAME-Einträge von A-Einträgen und Alias-Einträgen unterscheiden
Der CNAME-Eintrag wird in der Regel zusammen mit anderen Arten von DNS-Einträgen wie A-Einträgen und Alias-Einträgen verwendet. CNAME-Einträge und die anderen beiden Typen unterscheiden sich jedoch.
Ein grundlegender Unterschied zwischen CNAME-Einträgen und A-Einträgen besteht darin, dass erstere einen Hostnamen einem anderen Hostnamen zuordnen, während letztere einen bestimmten Hostnamen einer oder mehreren IP-Adressen zuordnen.
Ein Alias-Eintrag ordnet, wie ein CNAME-Eintrag, einen Hostnamen einem anderen Hostnamen zu. Der Unterschied besteht jedoch darin, dass der Eintrag CNAME keine weiteren DNS-Einträge für denselben Hostnamen zulässt, während der Alias-Eintrag dies tut.
Außerdem gibt Alias direkt eine IP-Adresse zurück und erfordert nicht, dass der DNS-Client einen anderen Hostnamen auflöst. Im Gegensatz dazu wird bei CNAME-Einträgen eine Anfrage zur Auflösung eines anderen Hostnamens gestellt. Aus diesem Grund ist Alias in der Regel leistungsfähiger als CNAME.
Wie sich CNAME von Weiterleitungen unterscheidet
Ein weit verbreiteter Irrglaube ist, dass der CNAME-Eintrag dasselbe ist wie eine HTTP-Weiterleitung (Hypertext Transfer Protocol). Dies ist jedoch nicht richtig, da es keinen direkten Zusammenhang zwischen einem CNAME und einer HTTP-Weiterleitung (Redirect) gibt.
Außerdem führt die Konfiguration von CNAME im DNS nicht automatisch zu einer HTTP-Umleitung. Dazu muss der Server, der auf die HTTP-Anfrage antwortet, so konfiguriert werden, dass er eine entsprechende HTTP-Antwort zurückgibt. Die Verwendung von CNAME stellt dies nicht sicher.
Beschränkungen bei der Verwendung von Canonical Names
CNAME-Einträge werden im DNS verwaltet, und es gibt Einschränkungen für ihre Verwendung. Ein Grund dafür ist die gefährliche Möglichkeit, dass bei der Suche nach einem Namen eine Endlosschleife entsteht. Daher muss sichergestellt werden, dass zwei CNAME-Einträge nicht aufeinander verweisen.
Angenommen, samplesite.techtarget.com verweist auf den kanonischen Namen techtarget.com. Gleichzeitig verweist techtarget.com auch auf den kanonischen Namen samplesite.techtarget.com. In diesem Fall wird die Suche in einer Endlosschleife immer wieder den einen Namen mit dem anderen vergleichen, was die Leistung und die Benutzerfreundlichkeit beeinträchtigt.
Der Verweis auf einen CNAME-Eintrag ist sowohl bei NS- (Name Server) als auch bei MX-Einträgen (Mail Exchange) eingeschränkt. Ein NS-Eintrag, der angibt, welcher DNS-Server für diese Domäne maßgebend ist, und ein MX-Eintrag, der E-Mails an einen Mail-Server weiterleitet, können nur auf diesen verweisen:
- einen A-Eintrag für IPv4
- einen AAAA-Eintrag für IPv6
Ähnlich wie A-Einträge ermöglichen es AAAA-Einträge Client-Geräten, die IP-Adresse für einen Domänennamen zu erfahren, und das Client-Gerät stellt dann eine Verbindung mit der Website her und lädt diese.
Zu den weiteren Einschränkungen bei der Verwendung von CNAME-Einträgen gehören die folgenden:
- Er darf nur auf einen anderen Domänennamen verweisen, nicht auf eine IP-Adresse.
- Er kann nicht an der Root-Domäne platziert werden, da die Root-Domäne auf eine IP-Adresse verweisen muss. Dadurch wird verhindert, dass bei der Suche nach einem Namen eine Endlosschleife entsteht.
- E-Mail-Domänen sollten keinen CNAME-Eintrag haben.
- Ein in einem CNAME-Eintrag definierter Hostname darf keine anderen Ressourceneinträge vom Typ A, MX etc. haben.
- Er kann nicht mit einem anderen Eintrag desselben Namens koexistieren.
Schließlich ist das Verweisen eines CNAME-Eintrags auf einen anderen CNAME-Eintrag nicht eingeschränkt. Dies erfordert jedoch mehrere DNS-Abfragen, bevor die Domäne geladen wird. Da dies die Benutzerfreundlichkeit beeinträchtigt, wird es als ineffizient und unerwünscht angesehen. Um unnötige Leistungseinbußen zu vermeiden, sollte der CNAME-Eintrag so nah wie möglich am Zielnamen liegen.