Bind

bind9 - 一個域用於多個區域

  • September 19, 2018

我在公司內部維護一個帶有 bind9 的 DNS 主機。我的問題是我支持幾個團隊,我想將他們的配置拆分為單獨的文件,但它們都具有相同的域。所有 FQHN 均為 X.abc.com、Y.abc.com。我可以在一個區域下擁有多個文件嗎?目前我的named.conf如果:

zone "abc.com" IN {
       type master;
       file "/ephemeral/bind_confs/all.ca";
       notify yes;
   };

我想要類似的東西:

zone "abc.com" IN {
       type master;
       files "/ephemeral/bind_confs/one.ca",
             "/ephemeral/bind_confs/two.ca";
       notify yes;
   };

典型的做法是創建多個區域,每個區域都有自己的區域文件:

zone "x.example.com" IN {
       type master;
       file "/ephemeral/bind_confs/com.example.x.conf";
       notify yes;
   };

zone "y.example.com" IN {
       type master;
       file "/ephemeral/bind_confs/com.example.y.conf";
       notify yes;
   };

zone "example.com" IN {
       type master;
       file "/ephemeral/bind_confs/com.example.conf";
       notify yes;
   };

其中每個資源*.x.example.comx.example.com將被放置在一個專用區域文件中,類似於 y.example.com 和主區域文件中的所有其他內容。這需要是帶有 SOA 記錄的完整區域文件。

應有效地忽略在 example.com 的區域文件中輸入的 *.x.example.com 的資源記錄,因為有一個更具體的權威區域文件。

這是“適當”的控制委派,因為管理 x.example.com 的 DNS 數據的團隊將無法覆蓋或破壞主 example.com 區域,也無法干預 y.example.com 區域.


在區域文件中,而不是主綁定配置文件中,您可以使用該$INCLUDE指令來包含來自外部文件的記錄。包含的文件不是一個完整的區域文件,它只需要包含您想要包含的記錄。

zone "example.com" IN {
       type master;
       file "/ephemeral/bind_confs/com.example.conf";
       notify yes;
   };

和區域文件/ephemeral/bind_confs/com.example.conf

$ORIGIN example.com.
$TTL 86400
@   SOA dns1.example.com.   hostmaster.example.com. (
       2001062501 ; serial
       21600      ; refresh after 6 hours
       3600       ; retry after 1 hour
       604800     ; expire after 1 week
       86400 )    ; minimum TTL of 1 day
;
;

$INCLUDE /ephemeral/bind_confs/com.example.y.data ; absolute path
...
ftp        IN      A   192.168.35.16

/ephemeral/bind_confs/com.example.y.data

ftp.y.example.com.        IN      A   192.168.1.16
www.y.example.com.        IN      A   192.168.1.17

這樣做的問題是沒有控制委派,沒有什麼能阻止團隊www.example.com.在 com.example.y.data 文件中設置記錄。

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