使用 Bind9.9 添加 DNS 子域时出现问题,且 NS 位于子域中

使用 Bind9.9 添加 DNS 子域时出现问题,且 NS 位于子域中

我使用旧版 Bind 进行设置,但自从我开始使用 Bind9.9 后,它就不再起作用了……named.conf 仍然相同,递归处于活动状态,我使用的区域没有转发器。但是,我收到错误消息,说没有 NS 的胶合记录,尽管它确实存在……这是新版 Bind 不允许的吗?即,将 NS 放在子域本身中?

在旧的 Bind 中我使用的是 Red Hat,现在使用的是 CentOS7。

这是区域文件:

$TTL 86400

rd2t9g9.redes.intranet. IN SOA  pc9-1-v1-9 root (

                                        42      ; serial
                                        3H      ; refresh
                                        15M     ; retry
                                        1W      ; expire
                                        1D )    ; minimum
                        IN NS pc9-1-v1-9

pc9-1-v1-9              IN A 192.168.99.11

pc9-1-v2-9              IN A 192.168.99.12

area1                   IN NS pc9-2-v2-9.area1

area1                   IN NS duplicate

duplicate               IN A 192.168.99.23

pc9-2-v2-9.area1        IN A 192.168.99.22

运行 checkzone 时,我收到消息

zone rd2t9g9.redes.intranet/IN: area1.rd2t9g9.redes.intranet/NS 'pc9-2-v2-9.area1.rd2t9g9.redes.intranet' (out of zone) has no addresses records (A or AAAA)
zone rd2t9g9.redes.intranet/IN: loaded serial 42
OK

该文件与运行旧 Bind 时的文件完全相同;如果 NS 在域中(即重复),它将起作用,但不允许我在子域中拥有 NS(但以前是这样!)

有任何想法吗?

还将添加named.conf文件:

options {

    listen-on port 53 { 127.0.0.1; };

    listen-on-v6 port 53 { ::1; };

    directory   "/var/named";

    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";

    allow-query     { localhost; };

    recursion yes;

    dnssec-enable no;
    dnssec-validation no;
    dnssec-lookaside auto;

    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";

    managed-keys-directory "/var/named/dynamic";

    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {

    type hint;

    file "named.ca";

};

zone "rd2t9g9.redes.intranet" IN {

    type master;

    file "zone_A";

    allow-update { none; };

    forwarders { };
};

zone "99.168.192.in-addr.arpa" IN {

    type master;

    file "rev_zone";

    allow-update { none; };

};


include "/etc/named.rfc1912.zones";

include "/etc/named.root.key";

答案1

就允许的内容而言,没有任何变化。可能named-checkzone有更多的验证,具体取决于您要将其与哪个旧版本进行比较,或者您运行它的环境是否设置不同。


由于该记录指向的名称NS不在您正在验证的区域内,因此named-checkzone正在 DNS 中查找该名称(使用系统配置的解析器服务器)。

pc9-2-v2-9.area1.rd2t9g9.redes.intranet如果您尝试在运行的同一主机上查找,是否有地址记录named-checkzone

dig pc9-2-v2-9.area1.rd2t9g9.redes.intranet Aand/ordig pc9-2-v2-9.area1.rd2t9g9.redes.intranet AAAA是否给出了肯定的答案?
如果没有,则会出现警告消息。

如果你出于某种原因不想named-checkzone进行这种类型的验证(你可能确实想这样做,如果这些地址记录在权威端丢失,那将是一个真正的问题),那么-i选项可用于指定不同的验证模式(例如-i local)。

答案2

您正在尝试在 rd2t9g9.redes.intranet 中使用 area1.rd2t9g9.redes.intranet 元素。

这会导致named-checkzone抱怨有元素超出区域,因为子域areas1.rd2t9g9.redes.intranet的服务器可能还不存在,因此named-checkzone无法解析名称。一旦子域配置正确,警告就会消失。

您的配置应该可以正常工作 - 但是,由于 BIND 的后续版本更加严格,因此我无法保证。避免出现警告的一种方法是删除“.area1”,然后按照您的目的进行配置。

$TTL 86400
@                       IN SOA  pc9-1-v1-9 root.localhost. (
                                    42      ; serial
                                    3H      ; refresh
                                    15M     ; retry
                                    1W      ; expire
                                    1D )    ; minimum

                        IN NS pc9-1-v1-9

pc9-1-v1-9              IN A 192.168.99.11
pc9-1-v2-9              IN A 192.168.99.12
area1                   IN NS pc9-2-v2-9
area1                   IN NS duplicate
duplicate               IN A 192.168.99.23
pc9-2-v2-9              IN A 192.168.99.22

我确实更喜欢使用 @ 缩写,而不是再次写下区域,因为它可以在处理多个区域时减少错误。

我还将 SOA 中的根从 root 更改为 root.localhost,因为 RFC 指定它是带有“.”的电子邮件,代表“@”。您可以使用自己的电子邮件代替 root@localhost。

请注意,BIND 9.9 有几项新变化,其中一项可能会对实验室产生影响的变化是,出于性能原因,新的从属文件现在采用原始/二进制格式。如果出于教育目的需要,可以配置 BIND 9.9 以将其保留为文本格式。

相关内容