如何解决单个主机的名称解析 SERVFAIL 问题

如何解决单个主机的名称解析 SERVFAIL 问题

我有一台运行 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,从而允许执行下一个逻辑步骤,修复问题。

答案1

今天问题解决了,原来是该域的区域文件出了问题。显然,客户进行了修改,涉及他们所谓的“容器”(假设是区域委派),经过一些 DNS 健康检查后,返回了一些奇怪的错误。他们撤消了更改,一切恢复正常。似乎他们已经委派了子域 www,但没有添加需要适当权限的记录。我相信这导致了某种 DNSSEC 问题,我们的服务器无法解决。

相关内容