委託區域的從屬伺服器上的 BIND9 遞歸 - 不起作用
我一直在查看 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 的區域定義中。解決了這個問題。