使用 BIND 的內部 DNS,如何以不同的方式解析一個 IP 地址?
我有一組網路的內部 DNS(它完全是內部的,即網路未連接到 Internet)。它們的設置如下:
- 每個網路都有不同的地址範圍
10.x.0.0/16
和自己的域domainx
(它是頂級域) - 例如網路10.1.0.0/16
有domain1
(這個網路中的所有主機都有 DNS 名稱somehost.domain1
)- 對於每個網路/域,主機
ns.domainx
(10.x.1.1
) 是處理正向區域domainx
和反向區域的 DNS 伺服器x.10.in-addr.arpa
- 這些網路沒有互連,除了一個特殊的多宿主伺服器連接到所有這些網路(我的問題實際上是關於該伺服器) - 但它不會在這些網路之間路由數據包,它只能與每個網路通信他們。按照設計,每個網路都設計為單獨和獨立執行。
- 因此,每個網路中的 DNS 伺服器只知道其域;它不知道(也不應該知道)來自其他網路的域的任何資訊。
- 但是,我之前提到的多宿主伺服器需要對所有這些網路中的地址進行有效的 DNS 解析。根據要求,我不能接觸任何網路中的任何東西,尤其是它們的 DNS 伺服器。我只能修改多宿主伺服器的配置。
.
於是我在只定義zone為“master”的多宿主伺服器上設置了BIND, zone文件中包含如下記錄:1.10.in-addr.arpa. IN NS ns.domain1. domain1. IN NS ns.domain1. ns.domain1. IN A 10.1.1.1 2.10.in-addr.arpa. IN NS ns.domain2. domain2. IN NS ns.domain2. ns.domain2. IN A 10.2.1.1 3.10.in-addr.arpa. IN NS ns.domain3. domain3. IN NS ns.domain3. ns.domain3. IN A 10.3.1.1
等等所有網路。
一切正常,但有一個小問題。
有時,特定網路的 DNS 伺服器已關閉。在這些網路中,DNS 伺服器關閉不被視為故障 - 它只是可能發生的正常執行狀態。屆時,該特定網路將沒有 DNS 解析,這是正常的。
但是網路 1 中有一個特定的 IP 地址(例如
10.1.10.10
),我希望始終將其解析為域名 - 即使網路 1 的 DNS 已關閉。所以它必須由本地伺服器解析,而不是委託給網路 1 的伺服器。實際上,NXDOMAIN 將作為對該地址的查詢的響應返回也是可以接受的(如果這更容易配置的話),但是必須立即返迴響應,而不是嘗試聯繫網路 1 的 DNS 伺服器 - 該伺服器關閉時的延遲正是我們想要避免的。我不知道該怎麼做。
10.10.1.10.in-addr.arpa.
為區域文件添加 PTR 記錄.
不起作用 - 它似乎被簡單地忽略了,並且當網路 1 的 DNS 不起作用時,10.1.10.10
無法解析。如何使該地址在本地解析?
我找到了解決方案。其實很簡單。
10.10.1.10.in-addr.arpa
將另一個“主”區域添加到我的文件中就足夠了named.conf
,區域文件是named.empty
ie。BIND 配置中包含的預設文件以服務 zone0.in-addr.arpa
。現在查詢
10.1.10.10
給出的答案是地址沒有 PTR 記錄,無論 DNS 伺服器10.1.0.0/16
是啟動還是關閉。這消除了解析地址時的延遲,這對我來說已經足夠了。當然,我可以為這個區域定義一個單獨的區域文件,而不是named.empty
在這個區域文件中添加一個 PTR 記錄,@
以使 IP 地址實際解析為某個域名,但我現在不需要這個。