dns-loop-detect 實際上是做什麼的?

dns-loop-detect 實際上是做什麼的?

在一個上游 dnsmasq (D1) 中我有:

log-queries
dns-loop-detect
server=/mydomain.net/192.168.200.1

在另一個 dnsmasq (D2) 中我有:

log-queries
dns-loop-detect
domain=mydomain.net
...

當我dig test.mydomain.net A它工作正常。但是,如果我這樣做dig test.mydomain.net AAAA,B 會將請求轉回 D1,因為我沒有設定 ipv6。然後循環發生請求在D1和D2之間反彈。我認為 dns-loop-detect 會阻止此循環,但事實並非如此。我知道我可以將 local=/mydomain.net/ 放在 D2 中來防止這種情況發生。那麼 dns-loop-detect 的目的是什麼?它應該檢測並停止什麼樣的循環?

答案1

此環路檢測演算法僅向所有上游發送一個簡單的探測不是僅限於特定域(包括 rDNS)。如果該探測被接收回來,則該探測中提到的伺服器 ID 被標記為循環(即,在檢查可用上游時被跳過)。

它意味著並且能夠停止的最明顯的循環是當某些與 resolvconf 相關的自動化向 dnsmasq 提供所有已知的 dns 伺服器時 - 包括 dnsmasq 本身充當本地快取解析器。

僅將探測傳送到對任何網域有效的上游的原因很簡單,偵測是對名稱的查詢test- dnsmasq 不會將此類查詢傳送到明確未配置為處理任意名稱的上游。

相關內容