DNS云學堂 | 快速定位DNS解析異常問題,牢記這四種DNS狀態碼

DNS的狀態碼在進行故障排查的時候起著至關重要的作用 。在DNS的維護中會經常遇到DNS解析異常問題,通過DNS的狀態碼可以初步判斷DNS解析的異常問題 。本期云學堂通過詳解DNS狀態碼的定義,給出常見狀態碼的場景舉例 。enjoy:
① 寫在前面本文針對Header section format的RCODE進行分析 。

DNS云學堂 | 快速定位DNS解析異常問題,牢記這四種DNS狀態碼


此部分對應Wireshark中打開的DNS數據包Domian Name System部分Flags的RCODE
1RFC1035[4.1.1]0 NOERROR無錯誤條件
1 Format error,格式錯誤-名稱服務器無法解釋查詢 。
2 Server failure,由于名稱服務器問題,名稱服務器無法處理該查詢 。
3 Name Error,僅對來自權威名稱服務器的響應有意義,此代碼表示查詢中引用的域名不存在 。
4 Not Implemented,未實現-名稱服務器不支持所請求的查詢類型 。
5 Refused,拒絕-名稱服務器由于策略原因拒絕執行指定的操作 。例如,名稱服務器可能不希望將信息提供給特定請求者,或者名稱服務器可能不希望對特定數據執行特定操作(例如,區域傳送) 。
6-15保留以備將來使用:
QDCOUNT一個無符號的16位整數,指定問題部分中的條目數 。
ANCOUNT一個無符號的16位整數,用于指定答案部分中的資源記錄數 。
NSCOUNT一個無符號的16位整數,指定ame的數量授權記錄部分中的服務器資源記錄 。
ARCOUNT一個無符號的16位整數,用于指定其他記錄部分中的資源記錄數 。
2RFC2136 [pag5-6]rfc2136 [pag5-6]對DNS狀態碼的描述有所更新(1997發布):x
NOERROR 0無錯誤條件 。
FORMERR 1名稱服務器無法解釋格式錯誤導致的請求 。
SERVFAIL 2名稱服務器在處理此請求時遇到內部故障,例如操作系統錯誤或轉發超時 。
NXDOMAIN 3應該存在的某些名稱不存在 。
NOTIMP 4名稱服務器不支持指定的操作碼 。
REFUSED 5名稱服務器出于策略或安全原因拒絕執行指定的操作 。
YXDOMAIN 6確實存在一些不應該存在的名稱 。
YXRRSET 7確實存在一些不應該存在的RRset 。
NXRRSET 8應該存在的某些RRset不存在 。
NOTAUTH 9服務器對“區域”部分中命名的區域沒有權威性 。
NOTZONE 10在“前提條件”或“更新”部分中使用的名稱不在“區域”部分指示的區域內 。
ZOCOUNT區域部分中的RR數 。
PRCOUNT前提條件部分中的RR數 。
UPCOUNT更新部分中的RR數 。
ADCOUNT附加數據部分中的RR數 。
②常見狀態碼分析RFC中描述的狀態碼有很多,但是在絕大多數場景下只有幾種狀態會被使用到,例如:
0NOERROR、2SERVFAIL、3NXDOMAIN、5REFUSED
下面針對常見的幾種狀態碼出現的場景進行介紹:
1NOERRORResponse code 0 —— NOERROR
當服務器解析到結果時,將結果回復給客戶端,此狀態為 NOERROR,例:
環境說明
DNS服務器有test.com 權威區,有如下記錄
test.com. 3600 NS ns.test.com.
ns.test.com. 3600 A 1.1.1.1
www.tes.tcom 3600 A 2.2.2.2
場景一:域名正常解析到記錄
1)客戶端向DNS服務器解析www.tes.tcom 的A記錄
2)服務器應答NOERROR,并附帶:www.test.com 3600 A 2.2.2.2
場景二:請求一個域名時,這個域名類型樹下如果存在其中一個類型,其他類型應答都為NOERROR
1)客戶端向DNS服務器解析www.tes.tcom 的 TXT記錄
2)服務器應答NOERROR,并附帶test.com 的SOA
2SERVFAILResponse code 2 —— SERVFAIL
遞歸DNS服務器至權威服務器的網絡不通,或者DNS服務器發生錯誤,則會導致SERVFAIL
環境說明
1臺遞歸DNS:A;1臺權威DNS:B;1個客戶端:C

推薦閱讀