如何配置 BIND 将反向 DNS 查询转发到另一个 DNS 服务器?

如何配置 BIND 将反向 DNS 查询转发到另一个 DNS 服务器?

我的环境中有 2 个域。其中一个是位于 10.60.0.0/16 的“myproductionlab.local”的活动目录域,
然后我有一个为域“mytestlab.local”运行 bind9 的 debian 机器,
我在 named.conf.local 中添加了一个条目:

zone "60.10.in-addr.arpa" {
        type forward;
        forwarders {
                10.60.10.5;
                10.60.10.7;
                10.60.10.9;

        };
};
zone "myproductionlab.local" {
        type forward;
        forwarders {
                10.60.10.5;
                10.60.10.7;
                10.60.10.9;

        };
};

Debian 框配置为 127.0.0.1 用于 DNS 解析,并且没有全局配置转发器。

名称解析很好:

nslookup mymachine.myproductionlab.local  
Server:     127.0.0.1
Address:    127.0.0.1#53
Non-authoritative answer:
Name:   mymachine.myproductionlab.local
Address: 10.60.10.200

从查询日志中可以看到:

client 127.0.0.1#36076 (mymachine.myproductinlab.local): query: mymachine.myproductionlab.local IN A + (127.0.0.1)

但反向 DNS 未被转发:

nslookup 10.60.10.200
Server:     127.0.0.1
Address:    127.0.0.1#53
** server can't find 200.10.60.10.in-addr.arpa: NXDOMAIN

来自查询日志:

client 127.0.0.1#40295 (200.10.60.10.in-addr.arpa): query: 200.10.60.10.in-addr.arpa IN PTR + (127.0.0.1)

我尝试了很多区域变化:

zone "60.10.in-addr.arpa" {
zone "10.60.10.in-addr.arpa" {
zone "200.10.60.10.in-addr.arpa" {

我也尝试过 tcpdump,对于 nslookup 10.60.10.200 没有捕获到任何数据包,但是对于名称却捕获到了数据包。

当我在 nslookup 中手动指定 DNS 服务器时它也能正常工作:

nslookup 10.60.10.200 10.60.10.5
Server:     10.60.10.5
Address:    10.60.10.5#53
200.10.60.10.in-addr.arpa   name = mymachine.myproductionlab.local.

答案1

nslookup 没什么帮助,输出是什么dig -x 10.60 10.200

这表明您的默认私有范围已启用并且将您的请求作为权限捕获。

删除或者编辑它们以使其更具体。

答案2

DIG 的输出让我发现了这个问题

dig -x 10.60.10.200

; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> -x 10.60.10.200
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 26824
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;200.10.60.10.in-addr.arpa. IN  PTR

;; AUTHORITY SECTION:
10.in-addr.arpa.    86400   IN  SOA localhost. root.localhost. 1 604800     86400 2419200 86400

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Feb 21 13:46:50 CST 2017
;; MSG SIZE  rcvd: 104

10.in-addr.arpa. 在 zone.rfc1918 中定义,它指向 db.empty。
在以前版本的 bind 中,zones.rfc1918 默认不包含在内,而且我仍然检查了所有的配置,没有任何配置告诉 bind 读取该文件,因此现在在这个版本中必须默认读取它,否则它会在其他地方进行配置。

dpkg -l | grep bind
ii  bind9                                1:9.9.5.dfsg-9+deb8u6            amd64        Internet Domain Name Server
ii  bind9-host                           1:9.9.5.dfsg-9+deb8u6        amd64        Version of 'host' bundled with BIND 9.X
ii  bind9utils                           1:9.9.5.dfsg-9+deb8u6        amd64        Utilities for BIND
ii  libbind9-90                          1:9.9.5.dfsg-9+deb8u6        amd64        BIND9 Shared Library used by BIND

答案3

万一有人遇到这个问题…对于较新版本的 Bind9(至少在 Debian 上),禁用

include "/etc/bind/zones.rfc1918";

语句,因为 Bind9 随后会自动创建它们。相反,

empty-zones-enable no;

在您的选项部分中是必需的(named.conf.options)。

https://deepthought.isc.org/article/AA-00800/0/Automatic-empty-zones- including-RFC-1918-prefixes.html

相关内容