我的系统上有这个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密钥)而在一个非常不同的背景下创build了一个特定的目的,甚至没有评论这种滥用。
rndc键应该有一个目的,它被rndc实用程序使用并named rndc可以发送控制命令给named (例如rndc reload , rndc freeze或其他)。
这个密钥不应该用于dynamic更新(如allow-update )。
rndc.key文件中不应该有多个键。
但是,如果您愿意,您可以免费,为您的TSIG密钥添加任意数量的key语句到namedconfiguration( named.conf )。 这些是你应该使用的目的,如dynamic更新,区域转移等。
我build议你将这些密钥命名,以反映它们的用法。
如果你有一个现代版本的BIND,只需使用tsig-keygen foo来创build一个新的密钥。 这是更方便,并具有合理的默认值( hmac-sha256而不是您创build的hmac-md5键)。