使用nsupdate命令时报错:update failed: SERVFAIL

来源:互联网 发布:北京大学 奖教金 知乎 编辑:程序博客网 时间:2024/06/15 23:02

在使用nsupdate命令动态更新区文件的时候,报了这样一个错,之前在没有dnssec的时候,使用nsupdate命令进行动态更新的时候是没有报错的,但是使用dnssec之后,动态更新报错:
动态更新报错图
这里可以看到报错提示。
分析:
在使用dnssec之前,并没有发生报错,检查了几种网上出现的解决方法提示的比如selinux的关闭等并没有用,说明产生错误的原因在启动dnssec之后。
在开启dnssec前后,配置文件和区文件的变化:
配置文件 /etc/named.conf文件的options中增加了
options {
dnssec-enable yes;
};
区文件:
使用生成的私钥对取文件进行签名,然后区文件由原来的
/var/named/named.hanming.com 变为
/var/named/named.hanming.com.signed,
并修改了对应的
zone “hanming.com” IN {
type master;
file “named.hanming.com.signed”;
};
测试查询可以正常输出dnssec的查询记录,并没有出现问题。
但是,如果查看文件 /var/named/named.hanming.com.signed的权限,会发现都是当前用户的权限,也就是文件的所有组和所有者都是root,这就导致这个文件不能被named修改,因为没有权限。
再回到最开始的nsupdate,也就是dns动态更新,这个命令在bind9之后产生的更新方式是新生成一个记录文件,这个记录将执行nsupdate命令添加的记录写在一个文件 /var/named/named.hanming.signed.jnl文件中(如果更新成功的话)。
那么,是不是文件的权限造成了问题?
查看bind的运行日志,在/var/named/data/named.run文件中,看到如下信息:
权限不足
可以看到named在读取私钥文件和公钥文件的时候,权限不足,查看之后,发现这两个文件的权限都是root,修改文件权限为named,
chown named.named K*
修改权限之后,重新更新,更新成功。
总结:
第一步,报错的时候应该查看日志log
第二步,根据日志修改
如果第一步没有找到明显的提示,可以思考在进行操作前后的区别,从而分析。

阅读全文
0 0