Route53中A Rec和CNAME之间的区别

Sca*_*ble 41 dns nameservers amazon-web-services

由于Amazon Route 53允许您使用Alias将A记录或CNAME设置为不同的子域名,我想知道A记录和CNAME现在有什么区别.

为了澄清我的问题,传统NameServer中CNAME和A记录之间的区别在于只有CNAME可用于指向不同的子域,而A记录必须指向有效的IP地址.由于AWS Route53允许您使用具有A Rec或CNAME的子域,因此它不会模糊两者之间的区别.

Mic*_*bot 77

您的问题非常有效,但您使用"subdomain"这个词的方式并不十分精确.

您实际要问的是,Route 53,一条A记录可以呈现引用来自另一个域的完全限定主机名,或来自其自己域的主机名或子域,而在适当的DNS中,唯一的方法引用另一个主机名是a CNAME,但是那些不能在指向子域("www.example.com")的域("example.com")的顶点进行配置.

你说的别名似乎在功能上是等同的,但比一个更有灵活性CNAME是否存在差异?

a CNAME和别名之间的区别在于a CNAME仍然是正确的标准普通DNS CNAME,它返回DNS查询响应"嗨,你需要知道真实的(" c anonical")名称你正在寻找的服务器是'x'"并且,根据具体情况,还可能包括A目标主机的记录,也可能不包括,要求客户端进行第二次查找.

另一方面,别名是由亚马逊创建的一个聪明的黑客,它不破坏协议,但允许Route 53在请求资源"Y" 的A记录时直接从资源"X"分发A记录.别名也可以引用其他记录类型,但它们引用的记录类型必须相同,为了讨论的目的,我说的是A记录别名.

而且,这里重要的一点是,别名实际上会返回一条A记录 - 而不是对目标的引用,就像一个记录CNAME一样.

问题是,使用别名,您不能在该框中放置任何主机名.它必须是域53中具有魔法挂钩的域中的主机名,以便它可以检索A要提供的apprpriate 记录 - 区域中的另一个条目,或者来自S3,ELB或Cloudfront.这是一种与CNAME记录工作方式完全不同的实现,即使净效果看起来是相同的.

把其他东西放在那里,然后The record set could not be saved because:- Alias Target contains an invalid value. 尝试一下.:)

当然,CNAME记录没有这样的限制......它们仅限于在区域顶部使用时的设计.

因此,实际上,别名和CNAME记录没有您最初想到的那么多重叠.在某些情况下,只有一个是可用的,并且任何一个都可以工作的情况,差异可能是微不足道的.

在可以使用任何一个的情况下,Alias的一个优点是别名从不需要2个DNS查询,如上所述.Route 53始终使用适当的A记录直接回答它,其中a CNAME,至少在它引用不同顶级域中的主机名的情况下,可能需要两个连续的DNS查找,在这种情况下给予Alias理论上的性能优势.

  • 哇 - 谢谢你这么详细的答案.我的理解有了很多改进. (2认同)
  • 只是增加了一点混乱,您可以使用“别名”。如果您希望cdn1.website.com,cdn2.website.com和cdn3.website.com都指向同一个第三方域名,则可以将cname命名为cdn.website.com,这将是网站的cname。 bestcdn.com。这样做的好处是,如果cdn更改,则只进行一次,而不是进行2次cname查找(内容加载延迟几毫秒),并且只有一条记录要更新。如果您要问为什么要对同一个plce使用多个CDN url?这是有时用来增加并发资产下载量的技巧。 (2认同)