首页 文章

Route53中A Rec和CNAME之间的区别

提问于
浏览
36

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

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

2 回答

  • 67

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

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

    你说的别名似乎功能相同,但比 CNAME 更灵活,所以有区别吗?

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

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

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

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

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

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

    所以,事实上,别名和 CNAME 记录没有你原先想象的那么多重叠 . 在某些情况下,只有一个是可用的,并且任何一个都可以工作的情况,差异可能是微不足道的 .

    在可以使用任何一个的情况下,Alias的一个优点是别名从不需要2个DNS查询,如上所述 . 路由53总是直接用适当的 A 记录来回答,其中 CNAME ,至少在它引用不同顶级域中的主机名的情况下,可能需要两个连续的DNS查找,从而使Alias具有理论上的性能优势 . 案件 .

  • 1

    我认为你有错误的信息 . Amazon Route53不允许带子域的 A 记录 . 当我'm trying to set it to a domain name I'm收到错误时:

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

    A 记录仅用于IP地址 .

相关问题