修复 BIND9 rndc 错误“与远程主机的连接已关闭”

修复 BIND9 rndc 错误“与远程主机的连接已关闭”

我刚刚在 Webmin 中对 DNS 区域进行了一些更改,然后单击了“应用更改”按钮。我收到了错误消息:

rndc:与远程主机的连接已关闭这可能表明远程服务器正在使用旧版本的命令协议,此主机无权连接,或者密钥无效

我该如何排除故障/修复这个问题?我从一台故障的服务器复制了部分 BIND 配置,所以我怀疑这就是导致问题的原因……

答案1

在 @plluksie 的帮助下,我自己解决了这个问题。以下是我所做的:

  1. 首先我运行rndc-confgen -a重新生成我的 rndc 密钥和 conf 文件。
  2. 接下来,我验证了 的内容与 的内容/etc/rndc.key相同/var/named/chroot/etc/rndc.key。它们是(在我的系统上/etc/rndc.key是 的符号链接)/var/named/chroot//etc/rndc.key
  3. 然后我编辑/etc/rndc.key并复制了新密钥。我将该密钥粘贴/etc/rndc.conf/var/named/chroot/etc/rndc.conf
  4. 我通过以下方式重新启动了 BIND/etc/init.d/named restart并使用以下方式进行了测试:rndc reload some.zome

这些步骤为我解决了这个问题。

答案2

确保文件 /etc/rndc.conf 存在并且

key somekey {
         algorithm hmac-md5;
         secret "somesecret";
     };

并且 /etc/named.conf 中还有适当的部分:

key "somename" {
     algorithm hmac-md5;
     secret "somesecret";
};

controls {
     inet * port someport allow {"somegroup";} keys {"somename";};
};

不要忘记阅读named.conf(5)和rndc.conf(5)

如果没有帮助,请按照错误消息中的描述进行操作:检查命名和 rndc 版本(应该相同)

答案3

您是否更改了密钥?如果您在执行此操作之前没有停止服务,则服务器守护程序中记录的密钥是旧的,而 rndc 始终使用新的。那么这些密钥是不同的,因此被 bind 拒绝。您必须终止守护程序,然后重新启动它。在配置读取和使用时会重新读取密钥。

答案4

我在运行 Ubuntu 20.04 的机器上遇到了这个问题,我通过将 rncd.conf 中的行更改为algorithm hmac-sha256;来解决了这个问题algorithm hmac-md5;

预计此行在 named.conf 和 rndc.conf 中应该是相同的,但我在上述文件中的哈希值有所不同,如下所示:

命名的.conf:

key "somename" {
     algorithm hmac-md5;
     secret "somesecret";
};

rndc.conf:

key "somename" {
     algorithm hmac-sha256;
     secret "somesecret";
};

将其更改为algorithm hmac-md5;rndc.conf 对我来说没有任何错误。

相关内容