web-dev-qa-db-fra.com

Différence entre un A Rec et CNAME dans Route53

Comme Amazon Route 53 vous permet de définir un enregistrement A ou un CNAME sur un nom de sous-domaine différent à l'aide d'Alias, je me demande quelle est la différence entre un enregistrement A et CNAME maintenant.

Pour clarifier ma question, la différence entre CNAME et un enregistrement dans un serveur de noms traditionnel est que seul CNAME peut être utilisé pour pointer vers un sous-domaine différent et un enregistrement doit pointer vers une adresse IP valide. Étant donné que l'AWS Route53 vous permet d'utiliser un sous-domaine avec A Rec ou CNAME .. cela ne brouille pas la distinction entre les deux.

43
Scalable

Votre question est tout à fait valable, mais vous utilisez le mot "sous-domaine" d'une manière pas tout à fait précise.

Ce que vous demandez en réalité, c'est le fait qu'un itinéraire 53, un enregistrement A peut donner l'apparence de référencer soit un nom d'hôte complet d'un autre domaine, soit un nom d'hôte ou un sous-domaine de son propre domaine, alors que dans DNS approprié, la seule façon de référencer un autre nom d'hôte est avec un CNAME, mais ceux-ci ne peuvent pas être provisionnés au sommet d'un domaine ("example.com") pointant vers un sous-domaine ("www.example. com ").

Vous dites qu'un alias semble être fonctionnellement équivalent mais plus flexible qu'un CNAME donc y a-t-il une différence?

La différence entre un CNAME et un alias est qu'un CNAME est toujours un DNS standard, ordinaire et ordinaire CNAME, qui renvoie une réponse de requête DNS "salut, vous devez sachez que le réel ("canonique ") nom du serveur que vous recherchez est 'x' "et, selon les circonstances, peut également inclure l'enregistrement A pour l'hôte cible ou non, obligeant le client à effectuer une deuxième recherche.

Les alias, d'autre part, sont un hack intelligent créé par Amazon qui ne rompt pas le protocole mais permet à Route 53 de distribuer l'enregistrement A directement à partir de la ressource "X" lorsque l'enregistrement A pour la ressource "Y" est demandée. Les alias peuvent également faire référence à d'autres types d'enregistrement, mais le type d'enregistrement auquel ils font référence doit être le même et pour les besoins de cette discussion, je parle des alias d'enregistrements A.

Et, le point important à retenir ici est qu'un alias renvoie en fait un enregistrement A - pas une référence à la cible, comme le fait un CNAME.

Le hic, c'est qu'avec un alias, vous ne pouvez pas mettre n'importe quel nom d'hôte dans cette case. Il doit s'agir d'un nom d'hôte dans un domaine où Route 53 a les crochets magiques afin qu'il puisse récupérer l'enregistrement A approprié à servir - soit une autre entrée dans votre zone, soit depuis S3, ELB ou Cloudfront . Il s'agit d'une implémentation très différente du fonctionnement des enregistrements CNAME, même si l'effet net semble être le même.

Mettez autre chose là-dedans, et The record set could not be saved because:- Alias Target contains an invalid value. Essayez-le. :)

Bien sûr, les enregistrements CNAME n'ont aucune limitation de ce genre ... ils sont simplement limités par leur conception dans leur utilisation en haut d'une zone.

Ainsi, en fait, les alias et les enregistrements CNAME n'ont pas autant de chevauchement que vous ne le pensiez au départ. Dans certaines situations, une seule est utilisable, et dans les cas où l'une ou l'autre fonctionnerait, la différence est probablement insignifiante.

Un avantage d'Alias ​​dans le cas où l'un ou l'autre pourrait être utilisé est qu'un alias ne nécessite jamais 2 requêtes DNS, comme je l'ai mentionné ci-dessus. Il est toujours répondu directement par Route 53 avec l'enregistrement A approprié, où un CNAME, au moins dans le cas où il fait référence à un nom d'hôte dans un domaine de premier niveau différent, peut nécessiter deux DNS séquentiels recherches, ce qui confère à Alias ​​un avantage théorique en termes de performances dans ce cas.

80
Michael - sqlbot

Je pense que vous avez des informations erronées. Amazon Route53 n'autorise pas les enregistrements A avec des sous-domaines. Lorsque j'essaie de le définir sur un nom de domaine, j'obtiens une erreur:

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

A les enregistrements sont réservés aux adresses IP.

1
yegor256