ALIAS 和 CNAME 之间的区别以及何时使用它们
2024 年 2 月 28 日
阅读时长:3 分钟

CNAME 记录和 ALIAS 记录的主要区别不在于结果(两者都指向另一个 DNS 记录),而在于查询时如何解析目标 DNS 记录。由于存在这种区别,可以在区域顶点(例如,example.com 等裸域)安全地使用一个,而另一个则不然。

我们从 CNAME 记录类型开始。它仅指向一个 DNS 名称,例如 www.example.com,另一个 DNS 名称,例如 lb.example.net。这会告诉解析器在所有 DNS 类型(例如 A、AAAA、MX、NS、SOA 等)的参考名称中查找答案。这种情况会导致性能损失,因为必须至少额外执行一次 DNS 查询才能解析目标 (lb.example.net)。如果递归解析器以前从未查询过这两条记录,那么时间成本就会更高,因为可能需要遍历整个 DNS 层次结构来查找这两条记录:

  1. 作为 DNS 客户端(或存根解析器),您可以向递归解析器查询 www.example.com。
  2. 递归解析器向根名称服务器查询 www.example.com。
  3. 根名称服务器将递归解析器指定为 .com顶级域名 (TLD) 权威服务器。
  4. 递归解析器向 .comTLD 权威服务器查询 www.example.com。
  5. .comTLD 权威服务器将您的递归服务器指定为权威服务器,以查询 example.com。
  6. 递归解析器向权威服务器查询 www.example.com 并接收 lb.example.net 作为答案。
  7. 递归解析器会缓存答案并将其返回给您。
  8. 现在,您向递归解析器发出第二个查询,查询 lb.example.net。
  9. 递归解析器向根名称服务器查询 lb.example.net。
  10. 根名称服务器将递归解析器指定为 .net顶级域名 (TLD) 权威服务器。
  11. 递归解析器向 .netTLD 权威服务器查询 lb.example.net。
  12. .netTLD 权威服务器将您的递归服务器指定为权威服务器,以查询 example.net。
  13. 递归解析器向权威服务器查询 lb.example.net 并接收 IP 地址作为答案。
  14. 递归解析器会缓存答案并将其返回给您。

每个步骤至少耗时几毫秒,耗时往往更长,具体取决于网络条件。这可能会导致您花费大量时间来等待 IP 地址的最终可操作答案。

对于 ALIAS 记录,所有操作均与 CNAME 相同,但查询 example.com 的权威服务器除外,它会为您执行第 6 步到第 13 步,并以 IPv4 和 IPv6 地址的形式返回最终答案。这样做有两个优点和一个明显的缺点:

优势

加快最终答案解析速度

在大多数情况下,向权威服务器查询 example.com 会缓存答案,因此可以非常快速地返回答案。

ALIAS 响应将是 A 和 AAAA 记录。由于 ALIAS 记录返回包含一个或多个 IP 地址的答案,因此能够在可以使用 A 或 AAAA 记录的任何地方使用,包括区域顶点。这使得它比 CNAME 更为灵活,因为 CNAME 不能在区域顶点使用。当您的网站发布在一些需要使用 CNAME 记录的最流行 CDN 上时,如果您希望用户能够通过 example.com 等裸域访问您的网站,则需要 ALIAS 记录的灵活性。

缺点

地理定位信息丢失

由于正是查询 example.com 的权威服务器发出 lb.example.net 查询,那么 lb.example.net 记录上的任何智能路由功能都将根据权威服务器的位置进行操作,而不是您的位置。EDNS0 edns-client-subnet 选项在此处不适用。这意味着您可能会被错误路由:例如,如果您在纽约,而查询 example.com 的权威服务器在加利福尼亚州,那么 lb.example.com 会认为您在加利福尼亚州,并会返回一个对在纽约的您来说明显不理想的答案。但是,如果您使用的 DNS 提供商具有全球性权限,那么权威 DNS 服务器很可能位于您所在的地区,从而缓解此问题。

需要注意的一个重要点是,NS1 会折叠 CNAME 记录,前提是这些记录都在 NS1 系统中。NS1 的域名服务器对 CNAME 记录和目标记录都具有权威性。折叠仅意味着 NS1 域名服务器将在单个响应中返回从 CNAME 到最终答案的完整记录链。这样可以避免所有额外的查询步骤,并允许您使用 CNAME 记录,即使在嵌套配置中,也不会造成任何性能损失。

更棒的是,NS1 支持一种名为“链接记录”的独特记录类型。这基本上是我们平台中的一个符号链接,除了亚微秒级分辨率速度外,它可能充当 ALIAS 记录。要使用链接记录,只需像往常一样创建目标记录(可以是任何类型),然后创建第二条记录,以指向它并选择“链接记录”选项。请注意,链接记录可以跨越 NS1 内的域(区域)边界甚至帐户边界,并提供一种强大的方式来组织和优化您的 DNS 记录结构。

CNAME、ALIAS 和链接记录参考图表
 CNAMEALIAS链接记录
在顶点使用?是(仅限其他 NS1 区域)
相对速度 (TTFB)快速有效加载时间加载时间
折叠响应是(NS1 Connect 独家功能)
滚动查看完整表格
作者
Terry Bernstein Senior Director of Product Management for NS1 Managed DNS