Dns
了解 dig 的 DNS 查詢:dig 是否為 Z 欄位設置非零值?
當我仔細檢查由 發送的 DNS 查詢時
dig
,我發現 RFC 的狀態有些奇怪。我不知道 DNS 協議的不同變體,但來自 RFC 1035
Z
: 保留供將來使用。在所有查詢和響應中必須為零。這是接收到的 DNS 查詢的記憶體快照,在調試模式下從 Eclipse IDE 導出。
00000000 F5 F4 01 20 00 01 00 00 00 00 00 01 03 77 77 77 06 67 6F 6F 67 6C 65 03 63 6F 6D 00 00 01 00 01 00 00 29 10 00 00 00 00 ... .........www.google.com.......)..... 00000028 00 00 0C 00 0A 00 08 1F 0A 12 91 67 67 B0 B9 ...........gg..
將相應的位映射到 DNS 欄位(來自 RFC 1035)
F5F4
-> DNS 事務 ID。
01
-> 二維碼、操作碼、AA、TC、RD
20
-> 00100000 =>RA
-> 0 ,Z
-> 010
Z
是非零!如果存在所有 DNS 變體,是否dig
使用其他 DNS 變體?還是應該將其視為問題dig
?
DNS 沒有多種變體,但關於此主題的 RFC 1035 已由 RFC2535“DNS 安全擴展”進行了修訂。
它的第 6.1 節顯示了消息格式:
1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ID | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |QR| Opcode |AA|TC|RD|RA| Z|AD|CD| RCODE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | QDCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ANCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | NSCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ARCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
如您所見,之前的 3 位 Z 欄位現在在 Z、AD 和 CD 之間拆分。
因此,您的
0x20
=0b00100000
將按如下方式拆分:
RA = 0
: 回复此消息的伺服器不提供遞歸Z = 0
: 正如預期的那樣,應該是 0AD = 1
:“響應的答案和權限部分中包含的所有數據都已根據該伺服器的策略由伺服器進行身份驗證。”CD = 0
:檢查未禁用(在查詢中有意義,而不是在響應中,它被定義為“發送查詢的解析器可以接受待處理的(未驗證的)數據。”)RCODE = 0
: 不是錯誤DNS 規範很複雜,經常模棱兩可,分為許多文件等。最近的這項工作有助於找到它的方式: https ://powerdns.org/hello-dns/