我在公司内部维护一个带有 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;
};
答案1
典型的做法是创建多个区域,每个区域都有自己的区域文件:
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.com
其中和的每个资源x.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 文件中设置记录。