由于 Amazon Route 53 允许您使用别名将 A 记录或 CNAME 设置为不同的子域名,我想知道 A 记录和 CNAME 现在有什么区别。
为了澄清我的问题,传统 NameServer 中 CNAME 和 A 记录的区别在于,只有 CNAME 可以用于指向不同的子域,而 A 记录必须指向有效的 IP 地址。由于 AWS Route53 允许您使用带有 A Rec 或 CNAME 的子域 .. 它不会模糊两者之间的区别。
由于 Amazon Route 53 允许您使用别名将 A 记录或 CNAME 设置为不同的子域名,我想知道 A 记录和 CNAME 现在有什么区别。
为了澄清我的问题,传统 NameServer 中 CNAME 和 A 记录的区别在于,只有 CNAME 可以用于指向不同的子域,而 A 记录必须指向有效的 IP 地址。由于 AWS Route53 允许您使用带有 A Rec 或 CNAME 的子域 .. 它不会模糊两者之间的区别。
您的问题非常有效,但您使用“子域”一词的方式并不十分精确。
您实际上要问的是这样一个事实,即 Route 53A
记录可以给出引用来自另一个域的完全限定主机名或来自其自己域的主机名或子域的外观,而在正确的 DNS 中,这是唯一的方法引用另一个主机名是带有CNAME
,但不能在指向子域(“www.example.com”)的域(“example.com”)的顶点进行配置。
您是说,别名在功能上似乎是等效的,但比 a 更灵活,CNAME
所以有区别吗?
CNAME
a和别名的区别在于 aCNAME
仍然是一个正确的、标准的、普通的 DNS CNAME
,它返回一个 DNS 查询响应“嗨,您需要知道您正在寻找的服务器的真实(“ c非标准”)名称是“x””,并且根据情况,还可能包括A
目标主机的记录,也可能不包括,要求客户端进行第二次查找。
另一方面,别名是 Amazon 创建的一个巧妙的 hack,它不会破坏协议,但允许 Route 53 在请求资源“Y”的A
记录时直接从资源“X”分发记录。A
别名也可以引用其他记录类型,但它们引用的记录类型必须相同,为了讨论的目的,我说的是A
记录别名。
而且,这里重要的一点是别名实际上返回了一条A
记录——而不是像 aCNAME
那样对目标的引用。
问题是,使用别名,您不能在该框中仅放置任何主机名。它必须是 Route 53 具有神奇钩子的域中的主机名,以便它可以检索适当的A
记录以提供服务——无论是您区域中的另一个条目,还是来自 S3、ELB 或 Cloudfront。这是一个与记录工作方式非常不同的实现CNAME
,即使最终效果看起来是相同的。
把其他东西放在那里,然后The record set could not be saved because:- Alias Target contains an invalid value.
试试看。:)
当然,CNAME
记录没有这样的限制……它们只是在区域顶部的使用中受到设计的限制。
因此,事实上,别名和CNAME
记录的重叠并没有您最初想象的那么多。在某些情况下,只有一个可用,而任何一个都可以工作的情况下,差异可能微不足道。
在可以使用其中任何一个的情况下,别名的一个优点是别名从不需要 2 个 DNS 查询,正如我上面提到的。它总是由 Route 53 使用适当的A
记录直接回答,其中 a CNAME
,至少在它引用不同顶级域中的主机名的情况下,可能需要两次顺序 DNS 查找,从而在这种情况下为 Alias 提供理论上的性能优势。
我认为你有错误的信息。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 地址。