我有一台运行 CentOS 6 和 Bind 9.8.2 的服务器,它没有解析 1 个特定主机的 DNS,该主机甚至不是该服务器托管的区域之一。所有其他查询都可以正常工作,包括对我遇到问题的域中其他主机的查询。
从问题服务器
$ dig www.example.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 6139
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.example.com. IN A
$ nslookup -debug www.example.com
Server: x.x.x.x
Address: x.x.x.x#53
------------
QUESTIONS:
www.example.com, type = A, class = IN
ANSWERS:
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
** server can't find www.example.com: SERVFAIL
Server: x.x.x.x
Address: x.x.x.x#53
$ dig en-es.example.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> en-es.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4755
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 1
;; QUESTION SECTION:
;en-es.example.com. IN A
;; ANSWER SECTION:
en-es.example.com. 600 IN A z.z.z.z
从其他服务器(在同一网络上和外部)
$ dig www.example.com
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58315
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.example.com. IN A
;; ANSWER SECTION:
www.example.com. 324 IN CNAME my.cname.net.
my.cname.net . 20 IN A y.y.y.y
我如何追踪为什么此查询导致 SERVFAIL 允许执行下一个逻辑步骤,从而解决问题。
今天问题解决了,原来是相关域的区域文件有问题。显然,客户端进行了涉及他们所谓的“容器”的修改(假设它是区域委托),并且在进行了一些 DNS 健康检查后,返回了一些奇怪的错误。他们扭转了他们的变化,一切都恢复了正常。似乎他们已经授权了子域 www,但没有添加需要适当权限的记录。我相信它会导致某种我们的服务器无法解决的 DNSSEC 问题。