我在主/从配置中拥有两台 Bind 服务器。当主区域文件上的序列号增加时,从属服务器上的区域更新时间比预期的要长。我在两台测试服务器上复制了这个问题。TTL 为 5 秒,从属服务器更新需要几分钟。我使用的是 Bind 9.8 和 Ubuntu 12.04。
以下是我的主测试服务器的配置:
命名的.conf.本地
zone "example.com" {
type master;
file "/var/lib/bind/db.example.com.zone";
//forwarders {};
// If we do not comment the ''forwarders'' "empty" clients of the local subnet in my case don't have access to the upstream DNS ?
//allow-update { key ns-example-com_rndc-key; };
allow-update { key rndc-key; };
//confusion between the file name to import (ns-example-com_rndc-key) and the key label (rndc-key) ?
};
zone "0.168.192.in-addr.arpa" {
type master;
file "/var/lib/bind/db.example.com.inv.zone";
//see comment below (zone "example.com")
//forwarders {};
//allow-update { key ns-example-com_rndc-key; };
allow-update { key rndc-key; };
};
db.root.example.com
$TTL 5
@ IN SOA sid.example.com. root.example.com. (
2007010416 ; Serial
5 ; Refresh [1m]
5 ; Retry [10m]
5 ; Expire [1d]
5 ) ; Negative Cache TTL [1h]
;
@ IN NS sid.example.com.
@ IN MX 10 sid.example.com.
sid IN A 192.168.0.3
etch IN A 192.168.0.3
pop IN CNAME sid
www IN CNAME sid
mail IN CNAME sid
db.example.com.inv.zone
@ IN SOA sid.example.com. root.example.com. (
2007010401 ; Serial
3600 ; Refresh [1h]
600 ; Retry [10m]
86400 ; Expire [1d]
600 ) ; Negative Cache TTL [1h]
;
@ IN NS sid.example.com.
1 IN PTR sid.example.com.
2 IN PTR etch.example.com.
这是从属设备的配置:
zone "example.com" {
type slave;
file "/var/cache/bind/db.example.com.zone";
masters { 192.168.0.2; };
//forwarders {};
// If we do not comment the ''forwarders'' "empty" clients of the local subnet in my case don't have access to the upstream DNS ?
//allow-update { key ns-example-com_rndc-key; };
allow-update { key rndc-key; };
//confusion between the file name to import (ns-example-com_rndc-key) and the key label (rndc-key) ?
};
zone "0.168.192.in-addr.arpa" {
type slave;
file "/var/cache/bind/db.example.com.inv.zone";
masters { 192.168.0.2; };
//see comment below (zone "example.com")
//forwarders {};
//allow-update { key ns-example-com_rndc-key; };
allow-update { key rndc-key; };
};
答案1
来自版权指南火箭科学家的 DNS:
默认情况下,BIND9 将向区域中 NS RR 中出现的所有目标名称(右侧名称)发送 NOTIFY 消息
因此您需要将您的从属服务器添加为 NS 条目db.example.com.inv.zone
。
此外,您可能需要添加以下设置:
- 在主人:
notify yes;
和allow-transfer { SLAVE_IP; };
- 在从属中:
allow-notify { MASTER_IP; };
答案2
当主服务器上的序列号发生更改时,它将立即通知从服务器。换句话说,notify
默认情况下启用。但是,通知的工作方式是,主服务器查看NS records
区域文件中该特定域的,并通知 NS 记录中列出的服务器(不包括它自己)。就您而言,我没有看到从服务器的主机名在 db.root.example.com 区域文件中被列为 NS 记录。因此,从服务器正在联系主服务器,在从服务器的配置文件中列出 -masters { 192.168.0.2; };
刷新间隔为 1 小时。这就是更新需要很长时间的原因。
解决方案 - 为从属设备添加 NS 记录,并将其 IP 地址作为 A 记录。典型设置如下 -
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
ns1 IN A 192.168.1.1
ns2 IN A 192.168.1.2
第一行和第三行为主控。第二行和第四行为从属。