通配符 CNAME DNS 记录会覆盖某个提供商的特定 A DNS 记录

通配符 CNAME DNS 记录会覆盖某个提供商的特定 A DNS 记录

遇到了一个奇怪的问题,通配符 CNAME 记录(即 *.example.com)覆盖了特定的 A 记录(即 host1.example.com、host2.example.com)。它只影响 Verizon Wireless 的名称服务器。权威名称服务器由 Network Solutions 控制(ns1.dnsbycomodo.net 和 ns2.dnsbycomodo.net)。

其他提供商的名称服务器返回了正确的结果(OpenDNS 和 mxtoolbox.com),这不可能是缓存问题,因为返回的错误 IP(通过 CNAME 查找)以前从未使用过,而且最重要的是,更改是在 12 小时前进行的,记录上的 TTL 仅为 7200。

删除通配符 CNAME 记录似乎解决了这个问题。你对发生了什么有什么看法?还有人遇到过这种情况吗?这只是 Verizon 的 DNS 服务器与 Network Solutions 通信时的一些错误吗?据说通配符 CNAME 记录已经有效一段时间了(通配符 CNAME DNS 记录有效吗?)。

编辑:

事情发生的顺序如下

原始配置:
A *.example.com -> 1.1.1.1
A host1.example.com -> 2.2.2.2
A host2.example.com -> 3.3.3.3

更改为:
删除“A”*.example.com
添加 CNAME *.example.com -> hostalias.example.net,解析为 4.4.4.4

结果:
在 Verizon 上,对 host1.example.com 和 host2.example.com 的查询开始返回 4.4.4.4,而在 OpenDNS 和 mxtoolbox.com 上,它们仍然分别正确返回 2.2.2.2 和 3.3.3.3。

答案1

感谢您更新您的问题,这使得事件的顺序更加清晰。不幸的是,从递归 DNS 解析器的角度来看,您描述的行为仍然非常令人费解。最好通过示例来说明这一点。


当查询不在缓存中时,递归 DNS 服务器将向权威名称服务器发送以下查询:

问题: host1.example.com. IN A

A当定义明确的记录时,远程权威服务器将会做出如下响应:

回答: host1.example.com. IN A 2.2.2.2

或者如果它击中了 CNAME 记录,则如下所示:

回答: host1.example.com. IN CNAME hostalias.example.net.


A在这两种情况下,是否送达记录或记录的选择CNAME取决于权威性服务器,而不是递归服务器。顾名思义,递归服务器是递归的。host.example.com. IN A除非需要其他查询才能得到答案,否则上游客户端的请求将不加修改地传递。(在这种情况下,除非权威名称服务器可以在同一响应中提供该答案,否则这将是额外的查找hostalias.example.net

鉴于这种行为很容易理解,最初的假设必须被视为可疑。以下事实之一并非 100% 准确:

  • 定义这些记录的顺序。
  • Verizon 返回 4.4.4.4 的响应。(即响应来自更靠近您的网络的地方,甚至是主机文件)
  • 所有权威服务器都对该请求返回相同的响应。
  • 操作者失误。
  • 人类的记忆。

我知道这有点不予回答,但我认为,如果没有更好的记录事件发生的情况,我们就无法给你更好的答案。

相关内容