2013-06-19 10 views
33

Da Amazon Route 53 Ihnen erlaubt, einen A-Eintrag oder einen CNAME unter Verwendung von Alias ​​auf einen anderen Subdomainnamen zu setzen, frage ich mich, was nun den Unterschied zwischen A-Eintrag und CNAME darstellt.Unterschied zwischen A Rec und CNAME in Route53

Um meine Frage zu klären, der Unterschied zwischen CNAME und A-Eintrag in einem traditionellen NameServer ist, dass nur CNAME verwendet werden kann, um auf eine andere Subdomäne verweisen und A-Eintrag auf eine gültige IP-Adresse zeigen muss. Da AWS Route53 die Verwendung einer Subdomain mit A Rec oder CNAME zulässt, verwischt es nicht den Unterschied zwischen den beiden.

Antwort

60

Ihre Frage ist durchaus berechtigt, aber Sie verwenden das Wort "Subdomain" nicht ganz genau.

Was Sie tatsächlich fragen, ist über die Tatsache, dass ein Route 53, ein A Datensatz den Anschein eines Verweises entweder auf einen vollständig qualifizierten Hostnamen aus einer anderen Domäne oder einen Hostnamen oder Subdomäne aus seiner eigenen Domäne geben kann DNS, die einzige Möglichkeit, einen anderen Hostnamen zu referenzieren, ist eine CNAME, die jedoch nicht am Scheitelpunkt einer Domäne ("example.com") bereitgestellt werden kann, die auf eine Subdomain verweist ("www.example.com").

Ein Alias, Sie sagen, scheint funktional gleichwertig zu sein, aber flexibler als ein CNAME, also gibt es einen Unterschied?

Der Unterschied zwischen einem CNAME und einem Alias ​​ist, dass ein CNAME ist noch ein richtiger, Standard, gewöhnliche DNS CNAME, die eine DNS-Abfrage Antwort zurückzugibt „hallo, müssen Sie wissen, dass die echten (“ c anonical ") Name des gesuchten Servers ist 'x'" und kann, abhängig von den Umständen, auch den A Datensatz für den Ziel-Host enthalten oder nicht, so dass der Client eine zweite Suche durchführen muss.

Aliase, auf der anderen Seite, sind ein cleverer Hack von Amazon erstellt, der das Protokoll nicht bricht aber Route 53 erlaubt, den Datensatz A direkt von Ressource "X" zu verteilen, wenn der A Datensatz für Ressource "Y" ist angefordert. Aliase können auch auf andere Datensatztypen verweisen, aber der Datensatztyp, auf den sie verweisen, muss derselbe sein, und für die Zwecke dieser Diskussion spreche ich von A Datensatzaliasnamen.

Und das wichtige Take-away hier ist, dass ein Alias ​​tatsächlich einen A Datensatz zurückgibt - keine Referenz auf das Ziel, wie ein CNAME tut.

Der Catch ist, dass mit einem Alias, Sie können nicht einfach jeden Hostnamen in dieser Box. Es muss ein Hostname innerhalb einer Domäne sein, in der Route 53 über die magischen Hooks verfügt, so dass er den passenden A Datensatz abrufen kann - entweder einen anderen Eintrag in Ihrer Zone oder von S3, ELB oder Cloudfront. Dies ist eine sehr andere Implementierung als CNAME Datensätze arbeiten, obwohl der Nettoeffekt scheint gleich zu sein.

Setzen Sie noch etwas hinein, und The record set could not be saved because:- Alias Target contains an invalid value. Versuchen Sie es.:)

Natürlich, CNAME Datensätze haben keine Begrenzung so ... sie sind nur durch das Design in ihrer Verwendung an der Spitze einer Zone begrenzt.

Also, in der Tat, Aliase und CNAME Datensätze haben nicht so viel Überlappung, wie Sie ursprünglich gedacht haben. In einigen Situationen ist nur eine verwendbar, und in Fällen, in denen beide funktionieren, ist der Unterschied wahrscheinlich unbedeutend.

Ein Vorteil von Alias ​​in dem Fall, in dem einer verwendet werden könnte, ist, dass ein Alias ​​niemals zwei DNS-Abfragen benötigt, wie ich oben erwähnt habe. Es wird immer direkt von Route 53 mit dem entsprechenden Eintrag A beantwortet, wobei eine CNAME zumindest für den Fall, dass sie auf einen Hostnamen in einer anderen Top-Level-Domain verweist, zwei sequenzielle DNS-Lookups erfordert, was Alias ​​einen theoretischen Leistungsvorteil bringt Fall.

+2

wow - danke für so detaillierte Antwort. Mein Verständnis hat sich dadurch vielfach verbessert. – Scalable

+1

Ausgezeichnet. Bitte denken Sie darüber nach, meine Antwort zu akzeptieren, es sei denn, es gibt noch andere Punkte, die Sie gerne klären würden. –

+1

Nur um ein wenig Verwirrung hinzuzufügen, können Sie 'alias cnames' haben. Wenn Sie cdn1.website.com, cdn2.website.com und cdn3.website.com alle auf die gleiche 3rd-Party-Domain verweisen möchten, könnten Sie sie mit cdn.website.com verbinden, was ein cname für die Website wäre. bestcdn.com. Der Vorteil hier ist, dass es weniger als 2 cName Lookups (einige ms Verzögerung beim Laden von Inhalten), gibt es nur einen, und es gibt nur einen Datensatz zu aktualisieren, wenn die CDN ändert. Wenn Sie fragen werden, warum mehrere cdn-URLs zur gleichen plc verwenden? Dies ist ein Trick, der manchmal verwendet wird, um gleichzeitige Downloads von Assets zu erhöhen. – KHobbits

1

Ich denke, Sie haben falsche Informationen. Amazon Route53 erlaubt keine A Datensätze mit Subdomains. Wenn ich versuche, es zu einem Domain-Namen zu setzen Ich erhalte eine Fehlermeldung:

The record set could not be saved because: 
- The Value field contains invalid characters or is in an invalid format. 

A Datensätze für IP sind nur Adressen.

+0

Dank yegor256 für Ihre Antwort - wie auch immer Sie dies versuchen sollten: Alias ​​setzen: Ja das wird ein Textfeld darunter mit der Bezeichnung "Alias ​​Target" .. in dem Sie eine Subdomain setzen können .. Ich setze im Allgemeinen einen Loadbalancer Fqdn Dort. Also ich denke meine Frage ist ziemlich gültig. – Scalable

+0

Alias ​​sind immer noch angemessen "A" oder "CNAME" Aufzeichnungen unter der Decke. Alles, was sie tun, ist die Zuordnung der DNS-Auflösung zu anderen Diensten. – datasage