从 9.11 升级到 9.16 后绑定不转发查询

从 9.11 升级到 9.16 后绑定不转发查询

我在 FreeBSD 12.1 服务器上使用 Bind 作为 samba DC 的 DNS 后端。

在我的配置中,本地子网数据库存储在 samba ldap 中,并使用转发器 dns 选项来解析全局域名。

我使用相同的编译选项将 Bind 从 9.11 更新到 9.16,并且在此全局名称解析之后停止并显示下一条消息:

root@Desk1:~ # nslookup google.com 192.168.0.19
Server:         192.168.0.19
Address:        192.168.0.19#53

** server can't find google.com: SERVFAIL

我的named.conf:

options {
    directory   "/usr/local/etc/namedb/working";
    pid-file    "/var/run/named/pid";
    dump-file   "/var/dump/named_dump.db";
    statistics-file "/var/stats/named.stats";
    auth-nxdomain yes;
    notify no;
    empty-zones-enable no;
    tkey-gssapi-keytab "/var/db/samba4/bind-dns/dns.keytab";
    minimal-responses yes;

    allow-query { 127.0.4.1; 192.168.0.0/24; };

    allow-recursion { 127.0.4.1; 192.168.0.0/24; };

    forwarders { 192.168.0.1; 192.168.0.2; };

    allow-transfer { 192.168.0.0/24; key dns.example.local; };
    
    listen-on { 127.0.4.1; 192.168.0.19; };

    query-source address * port 53;

    rate-limit { responses-per-second 15; window 5; };
    tcp-clients 1000000;
##  bind916 options
    dnssec-validation no;
#   auto-dnssec off;
    recursion yes;
#   forward only;
};

zone "." {
    type hint;
    file "/usr/local/etc/namedb/named.root";
};

zone "localhost" {
    type master;
    file "/usr/local/etc/namedb/master/localhost-forward.db";
};

zone "127.in-addr.arpa" {
    type master;
    file "/usr/local/etc/namedb/master/localhost-reverse.db";
};

logging {
    channel update_debug {
        file "/var/log/named-update.log";
        severity debug 3;
        print-category yes;
        print-severity yes;
        print-time yes;
    };
    channel security_info {
        file "/var/log/named-auth.log";
        severity info;
        print-category yes;
        print-severity yes;
        print-time yes;
    };
    channel querylog {
        file "/var/log/named-debug.log";
        severity debug 10;
        print-category yes;
        print-severity yes;
        print-time yes;
    };
    category update { update_debug; };
    category security { security_info; };
    category queries { querylog; };
};

include "/var/db/samba4/bind-dns/named.conf";

我尝试从 Bind 9.16 的发行说明中设置一些选项并搜索任何解决方案,但没有结果。

前段时间,当 Bind 9.14 尚未弃用时,一切都运行正常,没有任何问题。在升级到 9.16 后,我经历了一些不愉快的尝试,因此需要降级到 9.11。

有想法吗?

答案1

从问题中看不出实际问题是什么,但可以确定的是,您的日志配置存在问题,总体而言存在故障排除问题。
我将重点介绍这些方面,因为一旦您看到日志,实际问题就可能微不足道了。

日志记录

您的配置被覆盖的方式logging很可能是无法找到问题的原因。

即使只是回到默认的日志记录行为(即,如果您logging从配置中删除整个部分),您也应该在至少基本故障排除方面有一个可接受的基线。

为了使您当前的配置更好,我强烈建议还将类别default(捕获您未为其创建特定配置的所有类别)发送到某个地方。
您目前正在丢弃大多数类型的日志消息(除updatesecurity和 之外的所有内容queries)。
我预计例如resolvernetwork类别可能与问题相关,但正如我所指出的,default将捕获“其他所有内容”,因此这可能比从相当长的类别列表中开始猜测更好。

为了进行故障排除,启动 BIND 有时也很有用named -g(在前台启动命名,在终端中输出日志),但我建议无论如何都要修复日志配置。

配置/数据有效性

如果这方面存在问题,它应该显示在日志中(在上述修复之后!),但也有专门用于此目的的工具。

就像是

named-checkconf -zj

将有助于进行基线检查以确保配置+数据“正常”(检查配置+区域是否可以加载,但不一定是好的)。

其他配置问题,不太可能与当前问题相关

问题中的配置中还有一些条目看起来确实很糟糕。除非确实有充分的理由,否则我强烈建议删除它们:

auth-nxdomain yes;

强制 BIND 针对非权威 NXDOMAIN 响应发送不正确的 NXDOMAIN 响应。为什么要这样做?

query-source address * port 53;

强制将出站查询的源端口设置为 53,而唯一真正可接受的做法(也是默认做法)是从大量端口中随机选择。您的配置容易受到欺骗性响应的滥用。

dnssec-validation no;

禁用 DNSSEC 验证,进一步导致滥用。

答案2

问题可能是他们目前仅支持最高版本 9.12 左右:

请注意,这是在 ARM 处理器上,但您需要包含到 bind named.conf 中的“/var/lib/samba/bind-dns/named.conf”文件夹仅包含最高 9.12 版本的链接。

dlz "AD DNS Zone" {
    # For BIND 9.8.x
    # database "dlopen /usr/lib/aarch64-linux-gnu/samba/bind9/dlz_bind9.so";

    # For BIND 9.9.x
    # database "dlopen /usr/lib/aarch64-linux-gnu/samba/bind9/dlz_bind9_9.so";

    # For BIND 9.10.x
    # database "dlopen /usr/lib/aarch64-linux-gnu/samba/bind9/dlz_bind9_10.so";

    # For BIND 9.11.x
    # database "dlopen /usr/lib/aarch64-linux-gnu/samba/bind9/dlz_bind9_11.so";

    # For BIND 9.12.x
    # database "dlopen /usr/lib/aarch64-linux-gnu/samba/bind9/dlz_bind9_12.so";
};

也许可以尝试使用最新版本。可能会有用。

相关内容