我有一个正在运行(并且正常工作)的 Bind9 DNS 服务器。所有区域都是手动管理的。我现在想将区域更改为自动更新。设置完成后,我尝试使用 nsupdate,但它失败并显示“拒绝”。我不知道为什么会这样。
配置:rndc.key包含在named.conf中
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/rndc.key";
我还向我的named.conf.local添加了允许更新语句,并确保区域文件位于/var/lib/bind
root@ns1:/etc/bind# cat named.conf.local
zone "somedomain.com" {
type master;
file "/var/lib/bind/db.somedomain.com";
#update-policy {grant "rndc.key" zonesub ANY;} ;
allow-update { key rndc.key;};
allow-transfer { some IP; };
};
密钥存在:
root@ns1:/etc/bind# cat rndc.key
key "rndc-key" {
algorithm hmac-md5;
secret "<secret>";
};
但是当我尝试从本地主机更新 vie nsupdate 时,它拒绝了。
root@ns1:/etc/bind# nsupdate
> server localhost
> key rndc-key <secret>
> zone somedomain.com
> update add test.somedomain.com. 600 IN A someIP
> send
update failed: REFUSED
syslog 也没有给我带来太多帮助
May 24 22:37:20 ns1 named[30755]: client @0x7f1f8c0e3840 127.0.0.1#27482/key rndc-key: signer "rndc-key" denied
May 24 22:37:20 ns1 named[30755]: client @0x7f1f8c0e3840 127.0.0.1#27482/key rndc-key: update 'somedomain.com/IN' denied
May 24 22:38:09 ns1 named[30755]: resolver priming query complete
May 24 22:38:38 ns1 named[30755]: resolver priming query complete
我复制并粘贴了密钥,所以应该没有拼写错误。这些都是原始终端输出,只是域和 IP 发生了变化。
答案1
语句中的键的名称allow-update
是rndc.key
,但是您在客户端显示的和使用的键的名称是rndc-key
?
rndc.key
(密钥名称,而非文件名称)是否存在?如果不存在,配置是否能干净地加载?无论哪种情况,密钥名称以及机密都必须匹配,因此这似乎是问题所在。
旁注,为什么要将原本用于其他目的的密钥重新用于rndc
其他目的?只需为预期目的创建一个新密钥(请参阅tsig-keygen
),然后保留该rndc
密钥!
(我也会质疑当今时代 MD5 的用途。我想在 HMAC 中使用它并没有完全损坏,但为什么还要去那里呢?)