我正在尝试启动并运行 DNSSEC,但在运行过程中遇到了一些困难。
我正在运行 BIND 9.14.2(在 Windows 上)。BIND 运行良好,这些服务器上有许多区域处于生产状态。但由于某种原因,我似乎无法让我的测试区域签名。不确定为什么。
以下是我目前所做的工作。我创建了一个名为 test.com 的新区域。为此,我生成了一对密钥:
密钥签名密钥:
dnssec-keygen -a RSASHA256 -f KSK -K "d:\zonekeys" test.com
区域签名密钥:
dnssec-keygen -a RSASHA256 -K d:\zonekeys\ test.com
它们都存在于磁盘上并且看起来正常。
d:\zonekeys\Ktest.com.+008+44385.key
d:\zonekeys\Ktest.com.+008+44385.private
d:\zonekeys\Ktest.com.+008+47869.key
d:\zonekeys\Ktest.com.+008+47869.private
该区域配置如下...
zone test.com {
type master;
file "test.com.zone";
key-directory "d:\zonekeys";
auto-dnssec maintain;
inline-signing yes;
};
该区域正在运行,我可以顺利地挖掘它。它只是没有 DNSSEC 响应。
问题是为什么?我已确保启用了 eDNS。区域已更新。BIND 已重新启动,rndc 已重新加载等等。它就像根本没有 DNSSEC 一样。
已生成一个 test.com.zone.signed 文件,并以某种二进制文件的形式存在。我怀疑它正在被提供,但根本不包含任何签名数据。它应该包含签名数据吗?据我了解,“内联签名”意味着它应该在提供时“动态”对区域进行签名。
我这里遗漏了什么?为什么我没有收到任何 DNSSEC 签名的响应?
答案1
感谢@piotr-p-karwasz 为我指明了正确的方向。这确实是 .private 文件的访问权限问题。在 named_debug.log 中,我发现了以下内容
20-Dec-2019 9:42:03.665 general: warning: dns_dnssec_findmatchingkeys: error reading key file Ktest.com.+008+44385.private: permission denied
20-Dec-2019 9:42:03.665 general: warning: dns_dnssec_findmatchingkeys: error reading key file Ktest.com.+008+47869.private: permission denied
事实证明,我保存密钥文件的文件夹(d:\zonekeys)的继承已被禁用,因此绑定过程无法访问这些文件,只能访问文件夹。