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

par*_*hon 5 bind reverse-dns forwarding

我的环境中有 2 个域。其中之一是“myproductlab.local”的活动目录域,位于 10.60.0.0/16
然后我有一个为域“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;

        };
};
Run Code Online (Sandbox Code Playgroud)

debian 盒子配置为 DNS 解析为 127.0.0.1,并且全局没有配置转发器。

名称解析解析得很好:

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
Run Code Online (Sandbox Code Playgroud)

并从查询日志中:

client 127.0.0.1#36076 (mymachine.myproductinlab.local): query: mymachine.myproductionlab.local IN A + (127.0.0.1)
Run Code Online (Sandbox Code Playgroud)

但反向 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
Run Code Online (Sandbox Code Playgroud)

并从查询日志中:

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)
Run Code Online (Sandbox Code Playgroud)

我尝试了很多区域变化:

zone "60.10.in-addr.arpa" {
zone "10.60.10.in-addr.arpa" {
zone "200.10.60.10.in-addr.arpa" {
Run Code Online (Sandbox Code Playgroud)

我还尝试过 tcpdump,并为 nslookup 10.60.10.200 捕获了 0 个数据包,但捕获了该名称的数据包。

当我在 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.
Run Code Online (Sandbox Code Playgroud)

par*_*hon 5

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
Run Code Online (Sandbox Code Playgroud)

10.in-addr.arpa。是在 zone.rfc1918 中定义的,它指向 db.empty
在以前版本的 bind zone.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
Run Code Online (Sandbox Code Playgroud)


小智 5

以防万一有人点击此 \xe2\x80\xa6 对于 Bind9 的最新版本(至少在 Debian 上),禁用

\n\n
include "/etc/bind/zones.rfc1918";\n
Run Code Online (Sandbox Code Playgroud)\n\n

声明,因为 Bind9 然后会自动创建它们。反而,

\n\n
empty-zones-enable no;\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

请参阅https://deepthought.isc.org/article/AA-00800/0/Automatic-empty-zones-include-RFC-1918-prefixes.html

\n


Jac*_*ans 1

nslookup 不是很有帮助,输出是什么dig -x 10.60 10.200

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

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