Bind

如何對單個主機的名稱解析 SERVFAIL 進行故障排除

  • August 24, 2016

我有一台執行 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 問題。

引用自:https://serverfault.com/questions/798648