我的系统上有这个 rnd.key 文件:
key "rndc-key1" {
algorithm hmac-md5;
secret "xxxxxxxxxxxxxxx==";
};
key "rndc-key2" {
algorithm hmac-md5;
secret "yyyyyyyyyyy==";
};
然后我将它们用于不同的区域:
zone "somedomain1.com" {
type master;
file "/etc/bind/master/db.somedomain1.com";
allow-update {
key rndc-key1;
};
};
zone "somedomain2.com" {
type master;
file "/etc/bind/master/db.somedomain2.com";
allow-update {
key rndc-key2;
};
};
当我尝试运行“rndc freeze”时出现此错误:
rndc: error: /etc/bind/rndc.key:5: 'key' redefined near 'key'
rndc: could not load rndc configuration
这是什么意思?这里有什么问题?不同的区域不能使用不同的密钥吗?
答案1
看来您误解了rndc
密钥的用途。
这种误解很可能源自阅读了许多草率编写的教程,这些教程偷工减料,rndc
在完全不同的环境中滥用为特定用途创建的现有密钥(密钥),甚至没有对这种滥用进行评论。
该rndc
密钥应该只有一个用途,即由rndc
实用程序使用,named
以便rndc
可以发送控制命令named
(例如rndc reload
,rndc freeze
或其他)。
此密钥不应用于动态更新(如allow-update
)。
文件中不应有多个键rndc.key
。
但是,您可以自由地(如果您愿意的话)将任意数量的key
TSIG 密钥语句添加到named
配置 ( named.conf
)。这些是您应该用于动态更新、区域传输等目的的内容。
我建议您为这些密钥命名以反映其用途。
如果您有 BIND 的现代版本,只需使用它tsig-keygen foo
来创建新密钥。它不仅更方便,而且具有合理的默认值(hmac-sha256
而不是hmac-md5
您创建的密钥)。