Linux

委託區域的從屬伺服器上的 BIND9 遞歸 - 不起作用

  • October 8, 2010

我一直在查看 BIND/DNS 文件,但一直找不到明確的答案。tl;dr - 為委託區域查詢輔助名稱伺服器 A 記錄在啟用 recusion 的情況下*不起作用。*而且,根據定義,在禁用遞歸的情況下也不起作用,因為從我們的角度來看,區域中定義的所有內容都是 NS 和粘合記錄。

軟體堆棧:CentOS 5.4 x86 上的 bind-9.3.6-4 用於輔助名稱伺服器;Centos 4.7 x86 上的 bind-9.2.4-30 用於主名稱伺服器。

我將分別使用master和primary、slave和secondary作為同義詞。

我們的設置如下(更改名稱/IP 以保護無辜者):

ns.pr.example.com == 主域名伺服器,10.10.0.1,192.168.0.1

ns1.pr.example.com == 二級域名伺服器,10.11.0.1,192.168.0.2

ns2.pr.example.com == 二級域名伺服器,10.11.0.2,192.168.0.3

delegated.pr.example.com == 委託子區域

nsdelegated.pr.example.com == 權威 NS

delegated.pr.example.com 子域,10.11.0.5 不在我們的控制之下!

您會注意到 ns1 和 ns2 可以通過共享網路 - 192.168.0.0/24 與 ns.pr.example.com 通信。但是,ns.pr.example.com無法 與只有 10.11.0.0/24 地址的 nsdelegated.pr.example.com 主機通信。

192.168 網路是我們公共 IP 空間的替身;但 10.10 和 10.11 網路是用於集群計算的私有封閉網路。直接或通過靜態路由將 ns.pr.example.com 連接到 10.11 網路是不可能的。

在主名稱伺服器 ns.pr.example.com 上,區域文件中添加了以下定義以及更新的序列號:

/etc/named.conf:

zone "pr.example.com" { type master; file [db.filename]; };

db.文件名:

delegated.pr.example.com. IN NS nsdelegated.pr.example.com. nsdelegated.pr.example.com. IN A 10.11.0.5 ; glue record

這被複製到從屬伺服器 ns1 和 ns2。可以在平面文件中看到記錄,並通過 dig 確認:

從屬範例

dig -t ns +short @ns1 delegated.pr.example.com nsdelegated.pr.example.com IN A 10.11.0.5

主實例

dig -t ns +short @ns delegated.pr.example.com nsdelegated.pr.example.com IN A 10.11.0.5

nsdelegated 伺服器本身是響應式的:

dig -t a +short @nsdelegated.pr.example.com randomhost.delegated.pr.example.com 10.11.0.222

但是,在設置了遞歸所需位(預設)的輔助名稱伺服器上查找失敗。

dig +recurse +short -t a @ns1 randomhost.delegated.pr.example.com [no output]

它在主伺服器 ns 上也會失敗,但這是意料之中的,因為 ns.pr.example.com 無法聯繫 10.11.0.5 並回答請求。非遞歸查詢也會失敗,因為必須從 nsdelegated.pr.example.com 伺服器獲取相關資訊。

我的問題是:為什麼對輔助 名稱伺服器的遞歸問題會失敗?他們擁有正確的委託資訊、NS 記錄和粘合記錄,並且能夠聯繫委託的名稱伺服器。

我的預感是,作為輔助域名伺服器,它可能會以某種方式將遞歸問題“傳遞”給主域名伺服器,然後它就會失敗。但是我找不到任何關於這種效果的文件,而且它沒有直覺的意義。

有什麼想法或調試建議嗎?我打開了命名的最大日誌記錄以及查詢日誌記錄,但我無法獲得好的資訊。沒有明顯的“向我展示您代表客戶進行的查找”日誌。

謝謝。

當然你需要在named.conf中指定delegated zone,否則bind會認為它只是一個應該有的虛線記錄,因為它是pr.example.com zone的權威。

你想要的是這樣的。在 masternamed.conf 中,您指定一個新區域(並相應地在從屬中指定一個新區域):

zone "delegated.pr.example.com." { type master; file [db.filename]; };

並且區域文件應該是:

delegated.pr.example.com. NS nsdelegated.pr.example.com. 
nsdelegated.pr.example.com. IN A 10.11.0.5 ; glue record 

現在主 DNS 伺服器及其從屬伺服器知道新區域並且一切正常。

==== 編輯

錯誤,SOA 記錄不在 ps.example.com 中,但在 delegated.pr.example.com 的區域定義中。解決了這個問題。

引用自:https://serverfault.com/questions/188588