我一直在尝试设置一个目录区在 BIND9 中,这样我就不必在每次添加或删除域时手动更新我的从属服务器。
我问这个问题答案是使用新版本BIND的目录功能。
我尝试遵循我在网上可以找到的任何内容,但这根本没有太多,也没有关于正确调试目录安装的内容。
主域名服务器
在我的主人上,我添加了以下设置main.conf.options
:
zone "catalog.example.com" {
type master;
file "/etc/bind/catalog.example.com.db";
allow-transfer { trusted-servers; };
also-notify { slave-servers; };
notify explicit;
};
注意: 和trusted_servers
是slave_servers
ACL 定义,例如:
acl trusted_servers { 10.0.0.1; 10.0.0.2; };
acl slave_servers { 10.0.0.2; };
区域本身/etc/bind/catalog.example.com.db
也很特殊,它包含一个版本,并且 NS 条目无效:
; catalog.example.zone
$ORIGIN .
$TTL 86400
catalog.example.com. IN SOA . . (
1 ; serial
3H ; refresh
180 ; retry
1D ; expire
300 ; default_ttl
)
NS invalid.
$ORIGIN catalog.example.com.
version IN TXT "1"
这样就可以从任何 BIND 服务器检查版本。
从属 DNS
在从服务器上,我在块中添加了一些设置options
:
options {
...
allow-new-zones yes;
catalog-zones {
zone "catalog.example.com" default-masters { 10.0.0.1; };
};
...
};
以防万一,我还确保我有以下选择:
allow-recursion { any; };
allow-query { any; };
allow-notify { trusted-servers; };
allow-transfer { trusted-servers; };
我还需要设置controls
条目来给予从机的主控制权吗?
接下来,我使用以下内容在从属设备上创建了一个目录区域:
zone "catalog.example.com" {
type slave;
file "/var/cache/bind/catalog.example.com.db";
masters { 10.0.0.1; };
allow-notify { 10.0.0.1; };
};
该区域确实转移。我可以看到数据(与上面缓存中显示的数据相同)。
问题
结果我收到这样的错误
2020 年 4 月 19 日 13:07:39.124 通知:通知:客户端 @0x7f42548c18b0 10.0.0.1#44622:收到区域“m2osw.com”的通知:不权威
除目录区域之外的所有区域都会发生这种情况。
使用常规设置时,我有如下条目:
zone "m2osw.com" {
type slave;
file "/var/cache/bind/m2osw.com.zone";
masters { 10.0.0.1; };
allow-transfer { none; };
};
我知道如果不输入该masters ...
字段,我会收到该错误(不权威)。
我不明白如何使我想要自动转移的区域具有明确的权威性。
有人可以启发我建立目录区域的努力吗?
我唯一能想到的一件事是我需要正确设置一把钥匙。我已经尝试过,但到目前为止我只能完全阻止我的主 DNS。如果能对这个设置过程进行一些澄清,那就太好了!
笔记:IP 地址与我的服务器上的 IP 地址一一对应,当然,我的服务器使用公共 IP。