Bind
如何對單個主機的名稱解析 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 允許執行下一個邏輯步驟,從而解決問題。
今天問題解決了,原來是相關域的區域文件有問題。顯然,客戶端進行了涉及他們所謂的“容器”的修改(假設它是區域委託),並且在進行了一些 DNS 健康檢查後,返回了一些奇怪的錯誤。他們扭轉了他們的變化,一切都恢復了正常。似乎他們已經授權了子域 www,但沒有添加需要適當權限的記錄。我相信它會導致某種我們的伺服器無法解決的 DNSSEC 問題。