![rndc showzone 在有效区域上返回“rndc: 'showzone' failed: failed”](https://linux22.com/image/785137/rndc%20showzone%20%E5%9C%A8%E6%9C%89%E6%95%88%E5%8C%BA%E5%9F%9F%E4%B8%8A%E8%BF%94%E5%9B%9E%E2%80%9Crndc%3A%20'showzone'%20failed%3A%20failed%E2%80%9D.png)
我在 Ubuntu 22.04 上运行 BIND 9.18.12-0,在多个安装中都遇到了以下问题。我甚至在本地安装了 bind,并进行了简单的测试配置,但仍然看到此问题。
每当我运行rndc showzone somezone
并且 sonezone 是一个有效区域时,它都会返回非常无用的错误消息rndc: 'showzone' failed: failure
。
服务器仍在运行,我可以查询它。
当我运行时,rndc zonestatus somezone
它会返回预期的结果。
当我运行时 rndc showzone nonexistantzone
它返回:
rndc: 'showzone' failed: not found
no matching zone 'nonexistantzone' in any view
仅当我运行rndc showzone somezone
并且 sonezone 是一个有效区域时我才会得到rndc: 'showzone' failed: failure
。
当我查看日志文件时,没有错误,只是显示:received control channel command 'showzone somezone'
。
我是否需要以某种特殊方式配置我的区域或服务器以允许 showzone 工作,或者这只是一个错误?
showzone rndc 命令能起作用吗?
如上所述,我已经设置了一个最小测试服务器来进行调查,配置文件如下:
命名配置文件
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
命名的.conf.选项
options {
directory "/var/cache/bind";
dnssec-validation auto;
listen-on-v6 { any; };
};
命名的.conf.本地
zone "test" {
type master;
file "/etc/bind/db.test";
};
数据库.测试
$TTL 604800
@ IN SOA test. root.test. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.test.
@ IN A 192.168.1.1
@ IN AAAA ::1
ns IN A 192.168.1.1
named.conf.default-zones 和各种默认区域文件与其默认设置保持不变。
答案1
因此事实证明,尽管它似乎没有在帮助中的任何地方提到它,就像 addzone 和 modzone 一样,但 showzone 需要 allow-new-zones 选项。
这需要在您的配置中才能启用 showzone 命令:
options {
//other options
allow-new-zones yes;
};
但是,它不会改变行为,或者rndc showzone nonexistantzone
它会很高兴地告诉您,如果没有允许新区域选项,该区域不存在。