BIND问题:nsupdate无法更新反向区域

我正在使用nsupdatetesting我的ddns更新configuration(对于托pipe在同一台服务器上的ISC DHCP),并且转发区域正确更新:

  # nsupdate > server 127.0.0.1 > key dhcpupdate MYSECRETKEY > update add test.example.com. 600 IN A 10.2.2.45 > send # tail -n1 /var/log/named.conf client 127.0.0.1#12584: view internal: updating zone 'example.com/IN': adding an RR at 'test.example.com' A 

反向区域不:

  # nsupdate > server 127.0.0.1 > key dhcpupdate MYSECRETKEY > update add 45.2.2.10.in-addr.arpa. 600 IN PTR test.example.com. > send response to SOA query was unsuccessful 

nsupdate然后把我吐回到shell中,并且日志中没有错误(或任何types的消息)。 我已经尝试了反向区域更新,有没有尾随句点。 我有这样的感觉,我错过了一些基本的东西,但我无法弄清楚它是什么。

感谢任何指针。 这里是我的configuration文件和其他信息:

# cat /etc/named.conf

 acl internals { 127.0.0.0/8; 10.2.2.0/24; }; logging { channel named.log { file "/var/log/named/named.log"; severity dynamic; }; category default { named.log; }; }; options { listen-on port 53 { any; }; // listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; recursion no; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; key dhcpupdate { algorithm hmac-md5; secret "MYSECRETKEY"; }; include "/etc/named.root.key"; view "internal" { match-clients { internals; }; recursion yes; zone "localhost" IN { type master; file "/var/named/db.localhost"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "/var/named/db.0.0.127.in-addr.arpa"; allow-update { none; }; }; zone "." IN { type hint; file "named.ca"; }; zone "example.com" { type master; file "/var/named/db.example.com"; allow-update { key dhcpupdate; }; }; zone "2.2.10.in-addr.arpa" IN { type master; file "/var/named/db.2.2.10.in-addr.arpa"; allow-update { key dhcpupdate; }; }; }; view "external" { match-clients { any; }; recursion no; forwarders { 1.2.3.4; 1.2.3.5; }; // ISP DNS servers forward first; }; 

# cat /var/named/db.example.com

 $ORIGIN . $TTL 600 ; 10 minutes example.com IN SOA ns1.example.com. root.example.com. ( 5 ; serial 604800 ; refresh (1 week) 86400 ; retry (1 day) 2419200 ; expire (4 weeks) 604800 ; minimum (1 week) ) NS ns1.example.com. A 10.2.2.44 $TTL 3600 ; 1 hour MX 1 ASPMX.L.GOOGLE.COM. MX 5 ALT1.ASPMX.L.GOOGLE.COM. MX 5 ALT2.ASPMX.L.GOOGLE.COM. MX 10 ASPMX2.GOOGLEMAIL.COM. MX 10 ASPMX3.GOOGLEMAIL.COM. $ORIGIN example.com. $TTL 600 ; 10 minutes myserver A 10.2.2.5 ns1 A 10.2.2.5 test A 10.2.2.45 www A 123.12.34.32 // externally hosted www server 

# cat /var/named/db.2.2.10.in-addr.arpa

 ; ; BIND data file for example.com ; $TTL 10m @ IN SOA ns1.example.com. root.example.com. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; 2.2.10.in-addr.arpa. IN NS ns1.example.com. 5 IN PTR myserver.example.com. 

编辑:

在nsupdate中使用debugging命令给出以下内容:

 Reply from SOA query: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 28411 ;; flags: qr ra; QUESTION: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; QUESTION SECTION: ;96.2.2.10.in-addr.arpa. IN SOA ;; TSIG PSEUDOSECTION: dhcpupdate. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1367446210 300 16 XXXXXXXXX 28411 NOERROR 0 response to SOA query was unsuccessful 

EDIT2:

指定区域时,我得到以下内容:

 > debug > server 127.0.0.1 > zone 2.2.10.in-addr.arpa > key dhcpupdate XXXXXXXXXXX > update add 96.2.2.10.in-addr.arpa. 600 IN PTR scott-lap.example.com. > send Sending update to 127.0.0.1#53 Outgoing update query: ;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: 11170 ;; flags:; ZONE: 1, PREREQ: 0, UPDATE: 1, ADDITIONAL: 1 ;; ZONE SECTION: ;2.2.10.in-addr.arpa. IN SOA ;; UPDATE SECTION: 96.2.2.10.in-addr.arpa. 600 IN PTR scott-lap.example.com. ;; TSIG PSEUDOSECTION: dhcpupdate. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1367447008 300 16 XXXXXXXXXXXXXX 11170 NOERROR 0 Reply from update query: ;; ->>HEADER<<- opcode: UPDATE, status: SERVFAIL, id: 11170 ;; flags: qr ra; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 1 ;; ZONE SECTION: ;2.2.10.in-addr.arpa. IN SOA ;; TSIG PSEUDOSECTION: dhcpupdate. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1367447008 300 16 XXXXXXXXXXXXXXXXX 11170 NOERROR 0 

EDIT3:

呵呵。 我试图使用host ,看看它是否解决了我的DNS服务器的IP地址(这是上面的反向区域文件中列出),这就是我得到的。 没有日志条目了。

 # host -v 10.2.2.5 Trying "10.2.2.10.in-addr.arpa" Host 10.2.2.10.in-addr.arpa not found: 2(SERVFAIL) Received 40 bytes from 10.2.2.5#53 in 0 ms 

我有一个预感,这可能是你的更新没有明确的zone声明。

当你忽略这个更新时, nsupdate必须猜测这个更新适用于哪个区域(根据联机帮助页面,“根据input的其余部分”),我认为这个区域有多less个四边形是错误的。

如果没有,给-v一个旋转看看你是否有更好的运气与TCP。

解:

我不知道为什么,但现在正在工作。 我做的唯一的事情就是rndc querylog ,显然它本身不能修正任何东西,下面是:

 # chown -R named:named /var/named # find . -type d -exec chmod 770 {} \; # find . -type f -exec chmod 660 {} \; 

现在,有趣的是,我99.999%确定权限已经正确设置(所有者/组命名,具有660个权限)。 我的意思是,我至less检查了当时的权限十几次。 噢,我做的另一件事是删除零长度的db.2.2.10.in-addr.arpa.jnl,并重新启动命名,以允许它重新创build它。 它正确地重新创build(虽然有644个权限),并从那里工作。 我很困惑,因为它正在工作的确切原因,但我会把它! 谢谢大家的努力。

编辑:

它看起来好像我的反向区域文件得到了更新(我假设通过nsupdate)。 我在这里张贴,以防万一。 请注意我原来的问题中最初发布的2.2.10.in-addr.arpa区域的区别。 我觉得差异是微不足道的,在function上没有什么不同,但是当然,我远离专家。

 $ORIGIN . $TTL 600 ; 10 minutes 2.2.10.in-addr.arpa IN SOA ns1.example.com. root.example.com. ( 4 ; serial 604800 ; refresh (1 week) 86400 ; retry (1 day) 2419200 ; expire (4 weeks) 604800 ; minimum (1 week) ) NS ns1.example.com. $ORIGIN 2.2.10.in-addr.arpa. 10 PTR a.example.com. 11 PTR b.example.com. 15 PTR c.example.com. 96 PTR d.example.com. 55 PTR 3.example.com. 5 PTR server.example.com.