我的系统上有这个 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
这是什么意思?这里有什么问题?不同区域不能使用不同的键吗?
看来您误解了
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
您创建的键)。