CNAME 记录查询:顺着别名查到最终指向哪里
CNAME 会让一个名称成为另一个名称的别名,而成串的 CNAME 正是各种奇怪 DNS 问题的藏身之处。输入主机名,即可顺着别名一路查到底,看到它最终解析到的地址,并检查两种典型故障:循环,以及别名指向了一个已不存在的名称。
CNAME 的工作原理
CNAME 不重复写 IP 地址,而是声明“这个名称与那个名称相同”。解析器会查询目标名称并返回它的答案。企业常用它把 www 或 shop 指向托管平台或 CDN,这样服务商更换服务器时,您这边什么都不用改。
别名链是允许的:a 可以指向 b,b 再指向 c。每多一跳就多一次查询,所以应尽量保持简短。本工具最多跟踪八跳。
CNAME 必须遵守的规则
- 有 CNAME 的名称不能再有任何其他类型的记录。不能有 MX,不能有 TXT,什么都不能有。
- 域名的根必须保留 SOA 和 NS 记录,因此不能是 CNAME。有些服务商在根域名上提供 ALIAS 或“CNAME 拍平”功能,由它们在自己这边解析目标,再发布普通的 A 记录。
- 目标必须是主机名:不能是 IP 地址,也不能是网址。
- CNAME 对所有记录类型都生效,所以把某个名称指向目标时,它的邮件记录和文本记录也会一并转移,除非这些记录位于单独的名称上。
悬空 CNAME:悄无声息的安全漏洞
假设 blog.example.com 是 example.hosting-platform.com 的别名。您取消了托管套餐,却忘了处理 DNS 记录。这个别名现在指向一个已经不存在的名称,而在某些平台上,任何人都可以注册该名称,并在您的子域名下提供他们自己的内容。这就是子域名接管,也是最常见的 DNS 安全发现之一。
请时不时用追踪功能检查您的各个子域名。以“该名称不存在”结尾的别名链,就是应该删除的那一条。
追踪还能发现的其他情况
- 循环:别名链回到了它已经访问过的名称,因此该名称永远无法解析。
- 过长的别名链:每一跳都会增加延迟,而且有些解析器在跳数达到一定限制后就会放弃。
- 以私有地址结尾的别名链,这类地址无法从互联网访问,此处会被隐藏。