Ein CNAME Resource Record (CNAME RR) ist im Domain Name System(DNS) dazu vorgesehen, einer Domäne einen weiteren Namen zuzuordnen. Die Abkürzung„CNAME“ steht für canonical name (englischcanonical = „anerkannt“, deshalb: „normalisiert“) und bezeichnet daher den primären, quasi echten Namen.
Im einfachsten Fall verweist der von einemCNAME Resource Record definierte weitere Domänenname („Alias“) auf den Domänennamensteil in einem A Resource Record (oder einem AAAA Resource Record). Dieser Resource Record wiederum verbindet dann den ursprünglichen Domänennamen mit einer IP-Adresse. Beim Wechsel einer IP-Adresse muss folglich nur noch dieser Resource Record geändert werden, und alle per CNAME Resource Record definierten Aliase verweisen ebenfalls auf die neue IP-Adresse. Im Gegenzug ist die Namensauflösung über den CNAME Resource Record aufwendiger.
CNAME Resource Records sind in den Internetstandards RFC1034[1] und RFC1035[2] von1987 definiert und im RFC2181[3] von1997 nochmals klargestellt, weil diesbezügliche Leistungsanforderungen der Standards ignoriert wurden.
Der Begriff des canonical name wurde vielfach als Einschränkung interpretiert, einen letztlich offiziellen Namen festlegen zu müssen. Daraus wurde wiederum abgeleitet, weitere Namen dürften nur solche vonCNAME Resource Records sein, auf die andereCNAME Resource Records aber nicht verweisen dürften.
Tatsächlich ist aber gemeint, dass es kein Name eines anderen Resource Records sein muss, sondern dass der Name auch nur irgendwo außerhalb vom Domain Name System anerkannt sein kann.[3]
Syntax
[Bearbeiten | Quelltext bearbeiten]<Name> IN CNAME <Ziel>
Der Begriff„CNAME“ (Kanonischer Name) bezieht sich auf die rechte Seite desCNAMERR und bezeichnet den eigentlichen bzw. ursprünglichen Namen der Domäne. Der linke Teil stellt den Alias dar.[4]
Beispiele
[Bearbeiten | Quelltext bearbeiten]Im folgenden Beispiel wird mit einemA-Record sowie einemAAAA-Record zuerst ein Hostname mit einerIP-Adresse angelegt:
www.example.com. IN A 192.0.2.42 IN AAAA 2001:db8::42
und anschließend mit einem CNAMERR auf diesen CNAME verwiesen:
www.example.net. IN CNAME www.example.com.
Mehrere CNAME Resource Records können auf dasselbe Ziel verweisen, aber auch verschachtelt werden:
www.example.com. IN A 192.0.2.42 IN AAAA 2001:db8::42 www.example.org. IN A 192.0.2.42 IN AAAA 2001:db8::42 www.example.net. IN CNAME www.example.com. en.example.net. IN CNAME www.example.net. de.example.net. IN CNAME www.example.net.
Namensauflösung
[Bearbeiten | Quelltext bearbeiten]Wenn ein Nameserver eine Anfrage empfängt, für die einCNAMERR existiert, folgt er im Regelfall dem Verweis und wiederholt den Auflösungsversuch für den kanonischen Namen.[5] Im Beispiel erkennt der Nameserver, dass der angefragte Name www.example.net einen Alias darstellt, der aufwww.example.com verweist. Ein autoritativer Nameserver schlägt in einem solchen Fall nach, ob er fürwww.example.com zuständig ist; ein rekursiver Resolver wiederholt die Namensauflösung für www.example.com.[6]
Bei der Antwort wird neben derIP-Adresse auch der kanonische Name übergeben. Der Client kann so erkennen, dass sich seine ursprüngliche Anfrage auf einen Alias bezogen hatte.
Ein nslookup unter Windows:
C:\>nslookup www.example.net Server: router.box Address: fd00::2666:12ff:feaf:581f
würde folgende Antwort liefern:
Nicht autorisierende Antwort: Name: www.example.com Addresses: 2001:db8::42 192.0.2.42 Aliases: www.example.net
Unter Unix-Systemen wäre die Ausgabe des Programms host folgende:
$ host www.example.net www.example.net is an alias for www.example.com. www.example.com has address 192.0.2.42 www.example.com has IPv6 address 2001:db8::42
Es kann passieren, dass ein Nameserver nicht bis zurIP-Adresse auflösen kann, beispielsweise wenn für den kanonischen Namen kein Resource Record imDNS auffindbar ist. In diesem Fall gibt er nur denCNAME zurück.
Einschränkungen
[Bearbeiten | Quelltext bearbeiten]Für einen Alias in einem CNAME-Record dürfen zwecks Eindeutigkeit keine weiterenRR (A-Record, AAAA-Record, MX-Record etc.) gesetzt werden:
“If a CNAME RR is present at a node, no other data should be present; this ensures that the data for a canonical name and its aliases cannot be different.”[5]
Unzulässig:
example.com. CNAME somedomain.example. example.com. A 192.0.2.42
CNAME-Records dürfen daher nur bei Subdomains eingesetzt werden, da eine Hauptdomain immer einenSOA-Record und ein bis fünfNS-Records hat:
example.com. A 192.0.2.42 www.example.com. CNAME example.com.
Dieser Einschränkung wegen wurden 2017 die ähnlichen und schon verbreiteten ALIAS oder ANAME Resource Records dokumentiert,[7] deren offizieller Status aber nicht über den eines Entwurfs hinauskam.[8]
Ein NS-, MX-, PTR- oder SRV Resource Record darf nicht auf einenCNAME Resource Record verweisen; umgekehrt darf einPTR Resource Record aber durchaus nur über einenCNAME Resource Record zugänglich sein.
Der Name einesCNAME Resource Records darf nicht als Name anderer Resource Records verwendet werden, da er stellvertretend für alle Resource Records des Ziels steht; einzige Ausnahme hiervon bilden die Domain Name System Security Extensions.
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ RFC: 1034– Domain Names – Concepts and Facilities.November 1987(englisch).
- ↑ RFC: 1035– Domain Names – Implementation and Specification.November 1987(englisch).
- 1 2 RFC: 2181– Clarifications to the DNS Specification.Juli 1997(englisch).
- ↑ P. Mockapetris:RFC: 1034– Domain Names - Concepts and Facilities.November 1987,Abschnitt3.6.2(englisch).
- 1 2 RFC: 1034– Domain Names – Concepts and Facilities.November 1987,Abschnitt3.6.2:Aliases and canonical names.(englisch).
- ↑ RFC: 1034– Domain Names – Concepts and Facilities.November 1987,Abschnitt4.3.2:Algorithm.(englisch).
- ↑ E. Hunt, P. van Dijk, A. Eden:Address-specific DNS Name Redirection (ANAME).Internet Engineering Task Force,April 2017,abgerufen am 5.Mai 2023.
- ↑ History for draft-ietf-dnsop-aname-04.Internet Engineering Task Force,abgerufen am 5.Mai 2023.
