Sti*_*age 5 domain-name-system bind
我在从属 DNS 服务器上正确加载区域时遇到问题。两台服务器都运行 BIND 9.9.3-P2。
我已经为大约 150 个区域提供服务,并且它们都工作正常。但是,当我添加另一个域时,从属服务器拒绝识别它。
这是主站上的区域规范:
zone "test.no" { type master; file "/var/lib/named/zones/test.zone"; };
Run Code Online (Sandbox Code Playgroud)
这是从站上的区域规范:
zone "test.no" { type slave; masters { master.ip; }; file "/var/lib/named/zones/test.zone"; };
Run Code Online (Sandbox Code Playgroud)
当我在主设备上执行操作时rndc reload,从设备会收到通知,从主设备转移区域并且不会抱怨。这是来自从站上的日志:
27-Mar-2014 10:30:15.146 zone test.no/IN: no master file
27-Mar-2014 10:30:15.146 zone_settimer: zone test.no/IN: enter
27-Mar-2014 10:30:15.157 dns_zone_maintenance: zone test.no/IN: enter
27-Mar-2014 10:30:15.158 zone_settimer: zone test.no/IN: enter
27-Mar-2014 10:30:15.166 zone_timer: zone test.no/IN: enter
27-Mar-2014 10:30:15.166 zone_maintenance: zone test.no/IN: enter
27-Mar-2014 10:30:15.166 queue_soa_query: zone test.no/IN: enter
27-Mar-2014 10:30:15.166 zone_settimer: zone test.no/IN: enter
27-Mar-2014 10:30:15.166 soa_query: zone test.no/IN: enter
27-Mar-2014 10:30:15.170 refresh_callback: zone test.no/IN: enter
27-Mar-2014 10:30:15.170 refresh_callback: zone test.no/IN: serial: new 2014031901, old not loaded
27-Mar-2014 10:30:15.170 queue_xfrin: zone test.no/IN: enter
27-Mar-2014 10:30:15.171 zone test.no/IN: Transfer started.
27-Mar-2014 10:30:15.171 zone test.no/IN: no database exists yet, requesting AXFR of initial version from x.x.x.x#53
27-Mar-2014 10:30:15.171 transfer of 'test.no/IN' from x.x.x.x#53: connected using x.x.x.y#59644
27-Mar-2014 10:30:15.179 zone test.no/IN: zone transfer finished: success
27-Mar-2014 10:30:15.179 zone test.no/IN: transferred serial 2014031901
27-Mar-2014 10:30:15.179 zone_needdump: zone test.no/IN: enter
27-Mar-2014 10:30:15.179 zone_settimer: zone test.no/IN: enter
27-Mar-2014 10:30:15.179 zone_settimer: zone test.no/IN: enter
27-Mar-2014 10:30:15.179 transfer of 'test.no/IN' from x.x.x.x#53: Transfer completed: 1 messages, 6 records, 197 bytes, 0.007 secs (28142 bytes/sec)
27-Mar-2014 10:30:15.180 zone_timer: zone test.no/IN: enter
27-Mar-2014 10:30:15.180 zone_maintenance: zone test.no/IN: enter
27-Mar-2014 10:30:15.180 zone test.no/IN: sending notifies (serial 2014031901)
27-Mar-2014 10:30:15.186 zone_dump: zone test.no/IN: enter
27-Mar-2014 10:30:15.186 zone_settimer: zone test.no/IN: enter
27-Mar-2014 10:30:15.186 zone_gotwritehandle: zone test.no/IN: enter
27-Mar-2014 10:30:15.186 decrement_reference: delete from rbt: 0x9a725d8 test.no
27-Mar-2014 10:30:15.187 dump_done: zone test.no/IN: enter
Run Code Online (Sandbox Code Playgroud)
并/var/lib/named/zones/test.zone在从属设备上创建并填充:
-rw-r--r-- 1 named named 250 Mar 27 10:30 test.zone
Run Code Online (Sandbox Code Playgroud)
一切都很好!然而,在我增加主服务器上的序列并再次重新加载后,我得到了同样该死的错误:
27-Mar-2014 10:30:51.405 client x.x.x.x#42033: received notify for zone 'test.no': not authoritative
Run Code Online (Sandbox Code Playgroud)
该test.no区域是我尝试的第二个区域,出现相同的错误,并且配置与其他工作区域具有相同的语法。
实际的区域文件出现在主服务器上:
$TTL 1h0m6s
@ IN SOA ns1.domain.no. postmaster.domain.no. (
2014031902 ; serial, todays date + todays serial #
1H ; refresh, seconds
2H ; retry, seconds
2D ; expire, seconds
1H ) ; minimum, seconds
NS ns1.domain.no.
NS ns2.domain.no.
TXT "test.no"
test A 10.0.0.1
Run Code Online (Sandbox Code Playgroud)
解决了:
服务器上运行着两个bind 实例!一个看似孤儿的人继续服务请求(因此拒绝了它不知道的区域)。一个尽职尽责地响应rndc命令并将所有正确的内容记录在与另一个实例相同的日志文件中。
我在将监听指令更改为仅本地主机时发现了这一点,以便过滤掉日志文件中来自客户端的所有噪音。然而,查询不断地破坏日志文件,然后我仔细检查了哪些端口和 IP 正在侦听,实际上,存在多个不一致的条目。
我有点失望,rndc reload让我继续与实践中的隔离进程对话,甚至没有警告指定进程由于冲突而未绑定到它的 udp 端口;-)