CNAME 通配符与子 CNAME 冲突

CNAME 通配符与子 CNAME 冲突

我从 PowerDNS 迁移到 Knot 2.7。

我现在有 2 个 DNS 记录发生冲突。

abcd.**www**.example.com CNAME -> somehost.example.net
*.example.com -> example.com

现在问题出在 www.example.com 域上。在 PowerDNS 中,它被解析为 *.example.com。现在没有响应。当我为 www.example.com 添加 A 或 CNAME 记录时,一切正常。问题基于我上面写的第一个 CNAME。

你能解释一下原因吗?我该如何解决?

谢谢。

答案1

您所描述的行为完全在意料之中;令我感到惊讶的是,您声称使用 PowerDNS 得到了不同的结果(如果您可以使用当前版本重现此问题,则可能需要提交错误报告)。

这是预期行为的原因在于 DNS 中的通配符功能定义方式为,通配符仅扩展到以下名称:不存在位于通配符条目下方(即,基本上是您原本会得到NXDOMAIN响应的名称)。

这里可能感觉不太直观的是,根据问题中的两条记录,该名称www.example.com被认为是存在(即使它自己没有任何记录),因为它是通向abcd.www.example.com(有记录)的分支中的中间节点。(这种没有记录的中间树节点称为空的非终结符或者耳鼻喉)。
顾名思义www.example.com,根据通配符的工作方式定义,它不会受到影响,除非您向其自身添加记录,否则*.example.com您将获得NODATA响应(由权限部分中的NOERROR状态表示)。SOAwww.example.com

相关内容