今早醒来发现一堆东西:
root@foo:/etc/bind# dig @1.2.3.4 foo.example.com
; <<>> DiG 9.6.1-P2 <<>> @1.2.3.4 foo.example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 36121
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;;foo.example.com. IN A
;; Query time: 0 msec
;; SERVER: 1.2.3.4#53(1.2.3.4)
;; WHEN: Thu Apr 1 09:57:59 2010
;; MSG SIZE rcvd: 31
关于虚构的“1.2.3.4”的一些背景。它是我的名称服务器“农场”中的从属名称服务器。从技术上讲,我有 ns1(作为主人)和 ns2/ns3。目前 ns1/ns2 正在停机进行维护,所以我将 ns3 留在它为实时流量提供服务。这就是关键,DNS 应该是有弹性的。
现在奇怪的是,“1.2.3.4”在过去的 4-5 天内一直在为 example.com 的请求提供服务。今天早上我接到一个电话,它没有响应。经过调查,我看到了您在上面看到的消息,SERVFAIL。
我查看了区域文件并看到以下内容:
example.com IN SOA ns1.example.com. hostmaster.mail.example.com. (
我想知道此时名称服务器是否认为它对 example.com 不具有权威性并将其调整为以下内容:
example.com IN SOA ns3.example.com. hostmaster.mail.example.com. (
之后,它开始再次响应 example.com 的所有权威查询。我不知道为什么。我认为这些事情应该在从 ns1 -> ns3 进行区域传输时标准化?
有人可以举例说明为什么会发生这种情况以及如何防止将来发生这种情况吗?我从来没有遇到过类似的问题,并且因为我不太了解它,所以我可能会错过这个问题中的一些关键信息。所以请让我知道我是否可以进一步添加任何细节以使事情更清楚。
还有一点需要注意:我有其他域,我对其具有权威性,它们的 SOA 仍然显示 ns1.example.com。而不是 ns3.example.com。这些域可以很好地服务请求!他们也停止并且我必须将 SOA 更改为 ns3.example.com 是时间问题吗?这是否也只是因为 ns1 和 ns2 当前处于脱机状态才需要?
您可能违反了记录中的“EXPIRE”字段
SOA
- 来自RFC 1035的第 3.3.13 节:如果主服务器不再响应,该字段告诉辅助服务器多长时间为区域提供服务。
当您更改“ns3”上的区域文件时,您是否还重新配置了 BIND,以便将该区域列为“主”而不是“从”?如果是这样,那是该更改而不是对
SOA
实际修复它的第一个字段的更改。