我目前有以下 DNS 设置。
域:domain.tld 示例 IPv4:1.2.3.4 示例 IPv6:fe80::1
Host Type Destination
* A 1.2.3.4
* AAAA fe80::1
此设置按预期完美运行。如果我打开任何软件并输入 noteexisting.domain.tld 我会得到 1.2.3.4 的有效解析
现在问题来了:如果我现在简单地为 Let's Encrypt DNS Validation 添加一条 TXT 记录,内容如下:
Host Type Destination
_acme-challenge.notexisting TXT XrcC2WczNeJNvhNfbLFjE0iawzIZTlR6BEmD4OxF-pw
在 TTL 失效并再次查询该区域后,我得到以下结果:
只为 noteexisting.domain.tld 返回 SOA 和 TXT。我认为这很奇怪,因为如果我向我的区域添加另一个子域,DNS 将在 DNS 验证期间失败。我怎样才能防止这种情况发生?
我用 Bind 和 PowerDNS 软件进行了测试,得到了相同的结果。
考虑到通配符应该如何工作,这听起来像是预期的行为。
通配符仅适用于不存在的树的分支。添加该分支的记录后,
_acme-challenge.notexisting
该notexisting
分支存在,即通配符不再适用于那里。您想要的是添加相关记录,
notexisting
而不是依赖该通配符。(也许通配符一开始就不是正确的解决方案?)如果这里的用例涉及动态添加新的子域,BIND 和 PowerDNS 都支持动态更新 (RFC2136),或者 PowerDNS 也有一个 REST API。因此,两者都应该可以随时以编程方式添加记录。