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 层次结构来查找这两条记录:
每个步骤至少耗时几毫秒,耗时往往更长,具体取决于网络条件。这可能会导致您花费大量时间来等待 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 | 链接记录 | |
在顶点使用? | 否 | 是 | 是(仅限其他 NS1 区域) |
相对速度 (TTFB) | 快速有效 | 加载时间 | 加载时间 |
折叠响应 | 是(NS1 Connect 独家功能) | 是 | 是 |