条件
我在我的DNS服务器上使用Debian 6,在我的客户端上使用Debian 4.
我使用以下方法创建了一个公钥/私钥对:
dnssec-keygen -C -a HMAC-MD5 -b 512 -n USER sub.example.com.
然后我编辑了我的named.conf.local以包含我的公钥和我想要更新的新区域.它现在看起来像这样(注意:我也尝试过allow-update {any;};但没有成功):
zone "example.com" { type master; file "/etc/bind/primary/example.com"; notify yes; allow-update { none; }; allow-query { any; };};zone "sub.example.com" { type master; file "/etc/bind/primary/sub.example.com"; notify yes; allow-update { key "sub.example.com."; }; allow-query { any; };};key sub.example.com. { algorithm HMAC-MD5; secret "xxxx xxxx";};
接下来,我将私钥文件(key.private)复制到我想要更新区域的另一台服务器.我还在这个服务器上创建了一个包含更新信息的文本文件(更新)(注意:我也尝试过使用这些东西.没有成功):
server example.comzone sub.example.comupdate add sub.example.com. 86400 A 10.10.10.1showsend
现在我正在尝试使用以下方法更新区域:
nsupdate -k key.private -v update
问题
所述命令给出了以下输出:
Outgoing update query:;; ->>header<<- opcode: UPDATE,status: NOERROR,ID: 0;; flags: ; ZONE: 0,PREREQ: 0,UPDATE: 0,ADDITIONAL: 0;; ZONE SECTION:;sub.example.com. IN SOA;; UPDATE SECTION:sub.example.com. 86400 IN A 10.10.10.1update Failed: SERVFAIL
当我在远程服务器上发出nsupdate命令时,命名调试级别3给了我以下信息(注意:我对客户端IP进行了模糊处理):
06-Aug-2012 14:51:33.977 clIEnt X.X.X.X#33182: new TCP connection06-Aug-2012 14:51:33.977 clIEnt X.X.X.X#33182: replace06-Aug-2012 14:51:33.978 clIEntmgr @0x2ada3c7ee760: createclIEnts06-Aug-2012 14:51:33.978 clIEntmgr @0x2ada3c7ee760: recycle06-Aug-2012 14:51:33.978 clIEnt @0x2ada475f1120: accept06-Aug-2012 14:51:33.978 clIEnt X.X.X.X#33182: read06-Aug-2012 14:51:33.978 clIEnt X.X.X.X#33182: TCP request06-Aug-2012 14:51:33.978 clIEnt X.X.X.X#33182: request has valID signature06-Aug-2012 14:51:33.978 clIEnt X.X.X.X#33182: recursion not available06-Aug-2012 14:51:33.978 clIEnt X.X.X.X#33182: update06-Aug-2012 14:51:33.978 clIEnt X.X.X.X#33182: send06-Aug-2012 14:51:33.978 clIEnt X.X.X.X#33182: sendto06-Aug-2012 14:51:33.979 clIEnt X.X.X.X#33182: senddone06-Aug-2012 14:51:33.979 clIEnt X.X.X.X#33182: next06-Aug-2012 14:51:33.979 clIEnt X.X.X.X#33182: endrequest06-Aug-2012 14:51:33.979 clIEnt X.X.X.X#33182: read06-Aug-2012 14:51:33.986 clIEnt X.X.X.X#33182: next06-Aug-2012 14:51:33.986 clIEnt X.X.X.X#33182: request Failed: end of file06-Aug-2012 14:51:33.986 clIEnt X.X.X.X#33182: endrequest06-Aug-2012 14:51:33.986 clIEnt X.X.X.X#33182: closetcp
但它没有做任何事情.该区域未更新,我的nsupdate也没有更改任何内容.我不确定文件/etc/bind/primary/sub.example.com是否应该在第一次更新之前存在.我没有文件,使用空文件和预先配置的区域文件尝试了它.没有成功.
我在网上找到的稀疏信息指向了关于绑定工作目录的文件和文件夹权限,所以我更改了/ etc / bind和/ var / cache / bind的权限(这是我的“绑定”的主目录)用户).
我不是100%肯定权限是否正确..但它对我来说很好看:
ls -lah /var/cache/bind/total 224Kdrwxrwxr-x 2 bind bind 4.0K Aug 6 03:13 .drwxr-xr-x 12 root root 4.0K Jul 21 11:27 ..-rw-r--r-- 1 bind bind 211K Aug 6 03:21 named.runls -lah /etc/bind/total 72Kdrwxr-sr-x 3 bind bind 4.0K Aug 6 14:41 .drwxr-xr-x 87 root root 4.0K Jul 30 01:24 ..-rw------- 1 bind bind 125 Aug 6 02:54 key.public-rw------- 1 bind bind 156 Aug 6 02:54 key.private-rw-r--r-- 1 bind bind 2.5K Aug 6 03:07 bind.keys-rw-r--r-- 1 bind bind 237 Aug 6 03:07 db.0-rw-r--r-- 1 bind bind 271 Aug 6 03:07 db.127-rw-r--r-- 1 bind bind 237 Aug 6 03:07 db.255-rw-r--r-- 1 bind bind 353 Aug 6 03:07 db.empty-rw-r--r-- 1 bind bind 270 Aug 6 03:07 db.local-rw-r--r-- 1 bind bind 3.0K Aug 6 03:07 db.root-rw-r--r-- 1 bind bind 493 Aug 6 03:32 named.conf-rw-r--r-- 1 bind bind 490 Aug 6 03:07 named.conf.default-zones-rw-r--r-- 1 bind bind 1.2K Aug 6 14:18 named.conf.local-rw-r--r-- 1 bind bind 666 Jul 29 22:51 named.conf.optionsdrwxr-sr-x 2 bind bind 4.0K Aug 6 03:57 primary/-rw-r----- 1 root bind 77 Mar 19 02:57 rndc.key-rw-r--r-- 1 bind bind 1.3K Aug 6 03:07 zones.rfc1918ls -lah /etc/bind/primary/total 20Kdrwxr-sr-x 2 bind bind 4.0K Aug 6 03:57 .drwxr-sr-x 3 bind bind 4.0K Aug 6 14:41 ..-rw-r--r-- 1 bind bind 356 Jul 30 00:45 example.com解决方法 我在ubuntu服务器上遇到了完全相同的问题,结果发现有两个问题:
(1)apparmor
我不知道Debian是否也是如此,但是在Ubuntu上,bind9在启用了apparmor的情况下运行.这意味着只允许写入某些地方.这些地方列在/etc/apparmor.d/usr.sbin.named中,通常建议保留在这些目录中.
您可以安装apparmor-utils软件包并(暂时)禁用apparmor for bind以查看是否会导致您的问题:
sudo aa-status
应该在强制配置文件列表中显示/usr/sbin / named.然后跑
sudo aa-complain /usr/sbin/named
把它放到抱怨模式.
(2)区域文件
几乎没有手动/教程提到这一点,但bind9期望(预)现有区域文件正常工作.文件错误的结束可能的事实,区文件不(在你的例子/etc/bind/primary/example.com和/etc/bind/primary/sub.example.com)尚未存在而引起的.
你可以简单地创建一个这样的:
echo "; DO NOT EDIT MANUALLY - use the \"nsupdate\" utility to prevent data loss;$ORIGIN example.com.$TTL 86400 ; 1 day@ IN SOA ns1.example.com. hostmaster.example.com. ( 2009074711 ; serial 7200 ; refresh (2 hours) 300 ; retry (5 minutes) 604800 ; expire (1 week) 60 ; minimum (1 minute) ) IN NS ns1.example.com.ns1 IN A <IP of your bind server>" | sudo -u bind tee /etc/bind/primary/example.com总结
以上是内存溢出为你收集整理的domain-name-system – 设置绑定以使用nsupdate(SERVFAIL)全部内容,希望文章能够帮你解决domain-name-system – 设置绑定以使用nsupdate(SERVFAIL)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)