DNS 权威服务器的随机响应是否正常

DNS 权威服务器的随机响应是否正常

我们正在尝试设置让我们加密使用证书颁发证书管理器和 dns01 求解器。我们正在使用Dreamhost作为我们的 DNS 提供商,我们创建了连接 RFC-2136 cert-manager 和 Dreamhost API 的粘合组件。

我们遇到的问题是,尽管添加了所需的 (TXT) 记录,但权威 DNS 服务器却随机返回这些记录 - 两个请求一个接一个,一个返回答案,另一个不返回任何内容。这导致 cert-manager 等待不可预测的时间,直到幸运地确认 TXT 记录的存在,并且在某些情况下导致 Lets Encrypt 域检查失败。

这是 DNS 权威服务器的预期行为吗?还是我们应该向我们的 DNS 提供商提出这个问题?

下面是这种情况的示例(目前特定域名已被撤回)。如你所见

dig @ns1.dreamhost.com. _acme-challenge.keycloak.tenant-a.k8s-dev.redacted.redacted. TXT 

; <<>> DiG 9.16.15-Ubuntu <<>> @ns1.dreamhost.com. _acme-challenge.keycloak.tenant-a.k8s-dev.redacted.redacted. TXT
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 38336
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;_acme-challenge.keycloak.tenant-a.k8s-dev.redacted.redacted. IN    TXT

;; AUTHORITY SECTION:
redacted.       300 IN  SOA ns1.dreamhost.com. hostmaster.dreamhost.com. 2022060209 18661 600 1814400 300

;; Query time: 20 msec
;; SERVER: 162.159.26.14#53(162.159.26.14)
;; WHEN: czw cze 02 19:40:17 CEST 2022
;; MSG SIZE  rcvd: 152

dig @ns1.dreamhost.com. _acme-challenge.keycloak.tenant-a.k8s-dev.redacted.redacted. TXT 

; <<>> DiG 9.16.15-Ubuntu <<>> @ns1.dreamhost.com. _acme-challenge.keycloak.tenant-a.k8s-dev.redacted.redacted. TXT
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41439
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;_acme-challenge.keycloak.tenant-a.k8s-dev.redacted.redacted. IN    TXT

;; ANSWER SECTION:
_acme-challenge.keycloak.tenant-a.k8s-dev.redacted.redacted. 300 IN TXT "Uyr1nHC1CRWQcmOWDvObc4RMd-mNhKaE9bbNZTf3L2k"

;; Query time: 16 msec
;; SERVER: 162.159.26.14#53(162.159.26.14)
;; WHEN: czw cze 02 19:40:18 CEST 2022
;; MSG SIZE  rcvd: 144

如你看到的

  • 响应的时间戳几乎相同
  • 一个响应包含 TXT 记录,其他响应不包含
  • 同一个 DNS 服务器(162.159.26.14 - ns1.dreamhost.com)正在响应,我相信这是权威服务器

答案1

同一个 DNS 服务器(162.159.26.14 - ns1.dreamhost.com)正在响应,我相信这是权威服务器

就像 Web 服务器一样,单个 IP 地址可能隐藏着多个响应您请求的 DNS 服务器。即使是来自同一位置的查询也可能通过负载平衡器或多路径路由分发到多个节点。(有时“ns1”和“ns2”完全是作秀,两者都指向同一个服务器池。)

是的,理想情况下,集群中的所有权威服务器都应该知道完全相同的数据,但根据它们的实现方式,集群可以由于各种原因,某些服务器暂时与 Dreamhost 的权威数据库不同步。例如(完全是假设的 – 我不知道 Dreamhost 的系统如何工作),“重新加载”请求可能会及时分散,以减少数据库的负载。

在我从不同的国家(使用云 VPS)检查后,我得到了不同的答案模式

从更广泛的角度来看,当从不同位置查询时,BGP 任播可能会将您引向完全不同的集群。一个很好的例子是公共 DNS 解析器或根服务器 - 世界各地有许多 1.1.1.1 的实例,也有许多“f.root-servers.net”的实例。如果 Dreamhost 使用任播在多个物理位置托管“ns1”(他们可能会这样做,以减少延迟),那么在您进行更改后,它们更有可能在短时间内不同步。(这是“DNS 传播”的一个领域不是一个谎言。)

许多 DNS 服务器都支持使用其各自名称回复的特殊hostname.bind和/或查询。请从不同位置尝试此操作:id.server

dig +short @ns1.dreamhost.com hostname.bind. chaos txt

但总体而言,以上都不能真正改变现状– 您的问题与实际拥有独立的服务器并保持它们同步没有太大区别。例如,即使您只有使用传统 DNS AXFR 复制的普通 ns1/ns2/ns3 服务器,每当将新数据加载到主服务器时,它都可能需要几秒钟才能向副本发送 NOTIFY 并让它们传输更改。查看您的 NS 记录的解析器完全不知道这一点,并且可以随机选择已经拥有新数据的服务器或没有新数据的服务器。

因此,无论您的 DNS 主机如何工作以及它有多少台服务器,您都不应期望更新是 100% 即时的;请查明提供商是否发布了预期时间,或者只是等待任意的 5 秒或 10 秒。

相关内容