假設test.example.com
不存在並NXDOMAIN
在運行時給出dig
,但我知道subdomain.test.example.com
存在並NOERROR
在執行相同操作時給出,有沒有辦法檢查深層子域是否存在,即使中間子域可能不一定存在。具體來說,我在探測或查詢時尋找提示subdomain.test.example.com
是否存在深層子網域?
答案1
假設 test.example.com 不存在,並在執行 dig 時給予 NXDOMAIN,但我知道 subdomain.test.example.com 存在
根據 DNS 規範,這是不可能的。或者換句話說:這意味著該區域的權威名稱伺服器已損壞。
當迭代快取 DNS 解析器收到 NXDOMAIN 回應時,它應該將其儲存在其快取中,然後該節點或低於該節點的所有名稱和資源記錄集(RRset)應該被視為不可存取。對此類名稱的後續查詢應該會引發 NXDOMAIN 回應。
答案2
我同意派崔克的觀點,但想更清楚地說明實際的期望是什麼:
如果在 處有記錄subdomain.test.example.com
但在 處沒有記錄test.example.com
,這並不意味著test.example.com
“不存在”,這種空類型節點的術語是空非終結符(有時是耳鼻喉科)。
當您查詢某個空非終結符的名稱時,正確的回應類型是不是 NXDOMAIN
(這意味著“沒有這樣的名稱”)而是NODATA
(這意味著“沒有所請求類型的記錄”,在 ENT 情況下,無論您要求哪種類型)。
為了清楚起見,NODATA
回應類型為: 回應代碼NOERROR
,SOA
在AUTHORITY
部分中。
表示有可以存在進一步的子網域是您得到的回應不是NXDOMAIN
。如果您也確定該名稱沒有記錄(即,它是一個空的非終結符),則必須有某個子網域(向下一層或多層)實際上存在某些內容。
問題暗示和派崔克涵蓋的另一個方面是,某些名稱伺服器實作有缺陷,NXDOMAIN
即使在這不是適當回應的情況下也會發送。
這種類型的實現缺陷會導致提供不一致的數據,其中應該全部是樹結構的數據實際上被分成了不連接的部分。對於任何依賴先前觀察到的NXDOMAIN
回應實際上有意義且無法在 DNSSEC 中表示的解析器來說,這種行為尤其失敗。