由于Amazon Route 53允许您使用别名将A记录或CNAME设置为不同的子域名,因此我想知道现在A记录和CNAME之间的区别是什么。
为了澄清我的问题,在传统的NameServer中,CNAME和A记录之间的区别在于只有CNAME可以用于指向不同的子域名,而A记录必须指向有效的IP地址。由于AWS Route53允许您使用子域名和A记录或CNAME,是否模糊了两者之间的区别。
由于Amazon Route 53允许您使用别名将A记录或CNAME设置为不同的子域名,因此我想知道现在A记录和CNAME之间的区别是什么。
为了澄清我的问题,在传统的NameServer中,CNAME和A记录之间的区别在于只有CNAME可以用于指向不同的子域名,而A记录必须指向有效的IP地址。由于AWS Route53允许您使用子域名和A记录或CNAME,是否模糊了两者之间的区别。
你的问题很合理,但你使用的“子域名(subdomain)”这个词不太准确。
实际上,你问的是关于Route 53中A
记录似乎可以引用另一个域名下的完全限定主机名或其自己域名下的主机名或子域名。在正确的DNS中,唯一引用其他主机名的方式是使用CNAME
,但是这些无法被提供到指向子域名("example.com")的域的顶级("www.example.com")。
你说,别名似乎在功能上等同于但比CNAME
更灵活,那么两者有什么区别呢?
CNAME
和别名之间的区别在于CNAME
仍然是一个标准的、普通的DNSCNAME
,它返回一个DNS查询响应:“嗨,您需要知道要查找的服务器的真正(“规范”的)名称为'x'”,根据情况,还可能包括目标主机的A
记录或可能不包括,需要客户端进行第二次查找。
另一方面,别名是由亚马逊创建的聪明黑客技巧,它不会破坏协议,但允许Route 53在请求资源“Y”的A
记录时直接从资源“X”中提供A
记录。别名也可以引用其他记录类型,但它们引用的记录类型必须相同。就本文而言,我正在谈论A
记录别名。
重要的是,别名实际上返回一个A
记录 - 而不是像CNAME
一样返回到目标的引用。
问题在于使用别名时,您不能仅在该框中放置任何主机名。它必须是一个主机名,在 Route 53 具有神奇钩子的域内,以便它可以检索适当的 A
记录来提供服务-可以是您区域中的另一个条目,也可以是来自 S3、ELB 或 Cloudfront。这与CNAME
记录的工作方式非常不同,尽管净效果看起来相同。
在那里放置其他内容,将会出现错误:记录集无法保存,因为:-别名目标包含无效值。
尝试一下。:)
当然,CNAME
记录没有这样的限制... 他们只限于设计在区域顶部的使用。
因此,实际上,别名和CNAME
记录没有像您最初想象的那样多的重叠。在某些情况下,只能使用其中之一,在任何一个都可以使用的情况下,差异可能是微不足道的。
在任一选项可用的情况下,别名的一个优点是,如上所述,别名永远不需要 2 个 DNS 查询。它始终由 Route 53 直接回答正确的 A
记录,而一个CNAME
,至少在它引用不同顶级域中的主机名的情况下,可能需要进行两个连续的 DNS 查找,在这种情况下,别名具有理论上的性能优势。
我认为您的信息有误。Amazon Route53不允许使用子域的A
记录。当我尝试将其设置为域名时,出现了错误:
The record set could not be saved because:
- The Value field contains invalid characters or is in an invalid format.
A
记录仅用于IP地址。
A
或 CNAME
记录。它们所做的就是将 DNS 解析映射到其他服务。 - datasage
A
记录别名,这是Alias记录通常使用的方式,但您可以创建AAAA
或CNAME
别名,或者--显然--为除了NS
或SOA
之外的任何类型的记录创建别名,如果引用自己托管区域中的另一条记录。 - Michael - sqlbot