因此,我刚刚在 Almalinux 9.1 上安装了 bind 9.11.36,但它没有按预期验证 DNSSEC。查找www.dnssec-failed.org应该验证失败。结果如预期的那样缺少广告标志,但我没有收到 SERVFAIL,它给出了不应该给出的答案。
我的查询是挖掘www.dnssec-failed.org@127.0.0.1
我的日志显示...正在验证www.dnssec-failed.org/A:尚未找到有效签名 nslookup 和 dig 均给出了有效结果,但没有出现预期的 SERVFAIL。为什么???
dig www.dnssec-failed.org @127.0.0.1
; <<>> DiG 9.16.23-RH <<>> www.dnssec-failed.org. @127.0.0.1 A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50810
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 0a21031e4e1f7243010000006424706502d5d67190cfe7eb (good)
;; QUESTION SECTION:
;www.dnssec-failed.org. IN A
;; ANSWER SECTION:
www.dnssec-failed.org. 5489 IN A 69.252.193.191
www.dnssec-failed.org. 5489 IN A 68.87.109.242
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Mar 29 10:07:49 PDT 2023
;; MSG SIZE rcvd: 110
> nslookup www.dnssec-failed.org
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: www.dnssec-failed.org
Address: 69.252.193.191
Name: www.dnssec-failed.org
Address: 68.87.109.242
我的named.conf非常简单,
options {
listen-on port 53 { 127.0.0.1; 192.168.9.82; 10.1.2.35; 216.151.2.125; };
directory "/var/named";
datasize 10G;
max-cache-size 10G;
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { localhost; 192.168.9.0/24; 10.1.2.0/24; 216.151.2.96/27; };
recursion yes;
dnssec-validation yes;
managed-keys-directory "/var/named/dynamic";
geoip-directory "/usr/share/GeoIP";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
include "/etc/crypto-policies/back-ends/bind.config";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
category lame-servers {null;};
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
我将非常感激任何有关下一步该去哪里的线索。感谢您的帮助。
答案1
您已dnssec-validation
设置为yes
。选项包括yes
、no
和auto
。
当设置为 时yes
,必须使用语句(或可能是其他两个已弃用的语句)手动配置 DNSSEC 信任锚trust-anchors
。我在您的配置中没有看到这样的语句。
如果设置为是,则启用 DNSSEC 验证,但必须使用
trust-anchors
语句(或managed-keys
或trusted-keys
语句,均已弃用)手动配置信任锚。如果没有配置信任锚,则不会进行验证。
您可能希望改为设置dnssec-validation
为auto
。这将允许 BIND 使用其内置的根 DNSSEC 信任锚,并根据需要自动更新它。如果您不想这样做,另一种方法是自己获取根信任锚来自 IANA,应用您认为足够的任何验证程序。
如果您想要添加私有 DNS 区域而不在其上实施 DNSSEC,您可以像这样声明它们:
validate-except { "home.arpa"; };
要使用home.arpa
区域(根据RFC 8375(保证不与官方任何内容冲突),你可能还需要:
disable-empty-zone "home-arpa";
答案2
我将其改为自动,结果是一样的,但我确实找到了问题的答案,我会将其发布在这里。
问题出在文件 /etc/crypto-policies/back-ends/bind.config 中。我将该文件与正常工作的服务器上的相同文件进行了比较,发现有很大不同。我将其更改为与正常工作的服务器匹配,然后 BAM,它开始工作了。
信息可能太多了,但这里有两个文件。
有效的那个......
disable-algorithms "." {
RSAMD5;
DSA;
};
disable-ds-digests "." {
GOST;
};
失败的那个...
disable-algorithms "." {
RSAMD5;
RSASHA1;
NSEC3RSASHA1;
DSA;
};
disable-ds-digests "." {
SHA-1;
GOST;
};
我不确定,但我怀疑原因是禁用了 NSEC3RSASHA1