我的隐藏 DNS 主机仅向区域的名称服务器之一发送通知,我有 3 个命名服务器 ns0、ns1 和 ns2,全部运行 bind 9.7.3.dfsg-1ubuntu4.1。
当处理更新时,主机(ns0)似乎表现正常。
ns0 (192.168.2.50)
zone domain.org/IN: sending notifies (serial 2012060703)
client 192.168.2.52#42892: transfer of 'domain.org/IN': AXFR-style IXFR started: TSIG rndc-key
client 192.168.2.52#42892: transfer of 'domain.org/IN': AXFR-style IXFR ended
ns2 (192.168.2.52)
client 192.168.2.50#3762: received notify for zone 'domain.org': TSIG 'rndc-key'
zone domain.org/IN: Transfer started.
transfer of 'domain.org/IN' from 192.168.2.50#53: connected using 192.168.2.52#55747
zone domain.org/IN: transferred serial 2012060704: TSIG 'rndc-key'
transfer of 'domain.org/IN' from 192.168.2.50#53: Transfer completed: 1 messages, 34 records, 1028 bytes, 0.001 secs (1028000 bytes/sec)
ns1 上没有任何反应。我已调高日志记录级别,但 syslog 中没有关于 bind 已向其发送通知的实际名称服务器的信息,因此我猜这是它未记录的内容。
我也尝试过观察 tcpdump,它从不尝试通知 ns1,只通知 ns2
192.168.2.50.56278 > 192.168.2.52.53: [udp sum ok] 56418 notify [b2&3=0x2400] [1a] [1au]
↵ SOA? domain.org. domain.org. [0s] SOA ns1.domain.net. dnsmaster.domain.net.
↵ 2012060801 10800 3600 604800 3600 ar: rndc-key. ANY [0s] TSIG hmac-md5.sig-alg.reg.int. fudge=300 maclen=16 origid=56418 error=0 otherlen=0 (174)
权威区域同时具有 ns1 和 ns2 记录
$ORIGIN domain.org.
$TTL 3h
@ IN SOA ns1.domain.net. dnsmaster.domain.net. (
2012060801 ; Serial yyyymmddnn
3h ; Refresh After 3 hours
1h ; Retry Retry after 1 hour
1w ; Expire after 1 week
1h ) ; Minimum negative caching of 1 hour
@ 3600 IN NS ns1.domain.net.
@ 3600 IN NS ns2.domain.net.
// 编辑
我已经明确添加also-notify {192.168.2.51;192.168.2.52;};
到区域文件并且一切正常,ns1 和 ns2 都收到通知消息并且传输成功。
我印象中 bind 会自动向区域上的所有 NS 记录发送通知,也许它有问题?
答案1
您是否尝试过这样设置?
notify-to-soa yes;
来自 BIND 9 配置参考:
通知至 soa
如果是,则不要根据 SOA MNAME 检查 NS RRset 中的名称服务器。通常,NOTIFY 消息不会发送到 SOA MNAME(SOA ORIGIN),因为它应该包含最终主服务器的名称。但是,有时,从服务器在隐藏主服务器配置中被列为 SOA MNAME,在这种情况下,您希望最终主服务器仍向 NS RRset 中列出的所有名称服务器发送 NOTIFY 消息。
答案2
在对此了解不多的情况下,将 SOA 设置为 ns1 是否会使 ns0 足够混乱以阻止其发送更新?
@ IN SOA ns1.domain.net.
即将其设置为,
@ IN SOA ns0.domain.net.
修复此问题(尽管我知道这可能会导致其他问题)