Bind

BIND - 多個區域使用的轉發器列表

  • April 25, 2022

我正在設置一個 BIND (v9.16) 名稱伺服器。

它的主要目的是作為我們內部主機的正常遞歸器。不過,對於幾個特定區域(我們託管的區域),我需要將其設置為轉發器。目標是避免創建對根和 TLD DNS 伺服器的依賴,並且即使在我們的外部網路連接不可用的情況下也能夠繼續使用我們的內部服務。

這很容易設置,這裡是我配置的相關部分:

options {
   allow-recursion {
       // Here comes the list of our inside networks
   };

};

zone "somedomain.example" IN {
   type forward;
   forward first;
   forwarders {
       // Here comes the list of the primary servers for this zone
   };
// ... repeated for all forward zones

此設置按預期工作,但有一點不便。必須為所有“轉發”區域重複主伺服器列表。我們有很多,都帶有​​ IPv4 和 IPv6 地址,^C/^V 所有區域的列表不是我見過的最優雅的東西,也不是非常符合 DRY。

我知道該forwarders語句也可以包含在全域options部分中,但是從基本實驗中我了解到該語句不適用於轉發區域,它僅適用於僅轉發的名稱伺服器(文件不是很清楚,但是提到“如果沒有forwarders聲明,

$$ … $$取消options聲明中任何貨運代理的影響”)。 有沒有辦法創建轉發器的命名列表,或多或少與我們創建 ACL 的方式相同,並forwarders在相關區域內的語句中使用此符號名稱?

與許多其他守護程序和服務一樣,ISC Bindinclude在其配置文件中支持指令。

這允許您將配置設置和指令列表移動到不同的文件,並且您可以在需要的地方引用該文件。

這減少了您的管理負擔,只需在一個地方維護您的轉發器列表,您只需在需要的地方複製參考。

// "/var/named/includes/forwarders.conf"
// master list of forwarders

forwarders {
           192.0.2.21;
           192.0.2.88;
};

然後在你的named.conf中:

zone "somedomain.example" IN {
   type forward;
   forward first;
   include "/var/named/includes/forwarders.conf";
}
zone "otherdomain.example" IN {
   type forward;
   forward first;
   include "/var/named/includes/forwarders.conf";
}

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