Linux 中的反向查找 - 嘗試 NXDomain 上的下一個伺服器

Linux 中的反向查找 - 嘗試 NXDomain 上的下一個伺服器

我在 Linux 機器上有一個應用程序,它使用反向查找來解析主機名稱。問題是,我的resolve.conf中有兩組DNS伺服器(總共4台伺服器),每組對應不同的IP範圍。它適用於一個 IP 範圍,無論哪個 IP 恰好位於列出的第一個伺服器中,但如果我嘗試 nslookup 另一個範圍,它會報告未找到:3(NXDOMAIN)。如果它只是嘗試列表中的下一個伺服器,它就會成功......有沒有辦法讓它做到這一點? DNS 伺服器僅對其各自的範圍具有權威性。

答案1

我將安裝 dnsmasq,使其 (127.0.0.1) 成為唯一的名稱伺服器,並將其配置為使用「server」dnsmasq.conf 指令查詢該或該網域的該或該伺服器。

如果有一種方法可以在 NXDOMAIN 上嘗試與 DNS 伺服器不同的伺服器,那就是使用具有該功能的本機 DNS 伺服器。 Linux 解析器不允許這樣做。 PowerDNS 可以配置為針對每個查詢執行命令,因此作為最後的手段,您始終可以這樣做。

答案2

對 @cstamas 的回复,只是為了澄清如何使用 dnsmasq 解決 VPN 問題。

假設您的電腦位於 homenetwork.test 網域,IP 位址為 10.1.0.0/16,DNS 伺服器為 10.1.0.1。該 DNS 伺服器只能查詢 worknetwork.test 網域的「外部」網域名稱。它對 homenetwork.test 和 1.10.in-addr.arp 具有權威性(內部)。

現在,您連接VPN 來加入工作網絡,並且您現在擁有透過該介面到10.2.0.0/16 的新路由以及新的DNS 伺服器10.2.0.1,該伺服器對worknetwork.test 和2.10.in-addr.arpa 具有權威性。如果您使用這些名稱伺服器之一,您將只能解析 worknetwork.test 和 homenetwork.test 網域之一或另一個。

如果您同時使用兩個 dns 伺服器(和 RES_ROTATE),則效果並不好,因為您有時可以解析其中一個。

現在,如果你使用

dnsmasq --no-resolv --no-negcache --no-host --conf-file= \
   --server=/worknetwork.test/10.2.0.1 \
   --server=/2.10.in-addr.arpa/10.2.0.1 \
   --server=10.1.0.1

並且在 resolv.conf 中有“nameserver 127.0.0.1”,您將使用 10.2.0.1 來解析 worknetwork.test 和 10.2.xx IP 位址以及您的家庭 DNS 伺服器來解析其餘部分。

答案3

你提供的資訊很少,所以很難開始,但我會嘗試......

首先,您所說的伺服器是權威的dns伺服器(提供有關您設定的區域的資訊),對吧?如果是這樣,您應該在 resolv.conf 中設定一個僅遞歸的伺服器(僅為您解析 dns 名稱,而不提供資訊)。您可以安裝它以在本機上偵聽學校說。

另一方面,如果伺服器返回 nxdomain,則意味著:“我知道這個名稱,我是它的權威伺服器,但這個名稱不存在。”標準的dns解析演算法到此為止。就是這樣,沒有辦法解決這個問題。您應該將您的權威 DNS 伺服器設定為不對該名稱具有權威性。

相關內容