我不确定是否在绑定中发现了错误。我在 debian 12 上设置了一个简单的 dns 服务器。
在named.conf.options中
zone "rpz-test" {
type master;
file "/etc/bind/rpz-test.zone";
check-names ignore;
}
在rpz-test.zone中
;RPZ
$TTL 604800
@ IN SOA rpz.zone. rpz.zone. (
2; serial
604800; refresh
86400; retry
2419200; expire
604800; minimum
)
IN NS localhost.
*.com A 127.0.0.1
sub.domain.com A 127.0.0.1
现在...如果我在bind9启动后使用dig来检查配置...
发生的情况是这样的:
digwhatever.com@localhost -p 53 -> 回复 127.0.0.1
dig sub.domain.com @localhost -p 53 -> 回复 127.0.0.1
dig domain.com @localhost -p 53 -> 打破通配符并解决
实际上,如果声明了域的子域,则主域将在外部解析!
很奇怪,通配符不是能够克服后面的声明吗?
问题可能出在我的配置中,不确定是否是一个错误,但我使用的版本是:
debian 12.2
绑定 9.18.19~deb12u1
根据RFC 1034,这是预期的行为:
如果您发现这一点不清楚,那么您并不孤单,他们编写了RFC 4592来阐明通配符的用法。总而言之:一旦您添加 RR 条目
sub.domain.com.
,您就定义了两个域sub.domain.com.
,并且domain.com.
您的通配符*.com.
不适用于这两个域。