除非启用递归,否则无法使 bind9 转发 DNS 查询到子域

除非启用递归,否则无法使 bind9 转发 DNS 查询到子域

我正在尝试开发自己的动态 DNS。我在端口 5353 上为子域运行自己的自定义 DNS。ASCII 图:

INET --->:53 Bind 9 --->:5353 node.js
               |
               V
           zone_files

我有 example.com。node.js DNS 适用于 dyn.example.com。

在我的 /etc/bind/named.conf.local 中我有:

zone "example.com" {
    type master;
    file "/etc/bind/db.com.example";
    allow-transfer {
        zonetxfrsafe;
    };
};

zone "dyn.example.com" IN {
    # DYNAMIC
    type forward;
    forwarders { 127.0.0.1 port 5353; };
    forward only;
};

我甚至在我的 example.com 区域文件中添加了一个 NS:

$TTL    86400
@   IN  SOA ns.example.com. hostmaster.example.com. (
            2013070104  ; Serial
               7200     ; Refresh
               1200     ; Retry
            2419200     ; Expire
              86400 )   ; Negative Cache TTL
;
        NS  ns                    ; inet of our nameserver

ns      A   1.2.3.4

; NS record for subdomain
dyn     NS  ns

当我尝试从子域服务器获取记录时,它不会被转发:

dig @127.0.0.1 test.dyn.example.com

但是,如果我在 /etc/bind/named.conf.options 中打开递归:

options {
  recursion yes;
}

..然后我可以看到请求发送到子域服务器。

但是我不想 recursion yes;在我的绑定配置中,因为它是一种较差的安全性做法(并且允许与我的管理区域无关的所有请求)。

如何转发(代理)一个区域的区域查询?或者我是否应该完全放弃 Bind,然后寻找一个可以实际转发特定查询的 DNS 服务器?

答案1

这无法完成。查询转发一种递归形式,并且其行为符合预期。

您必须将动态 DNS 设置为其自己的独立名称服务器,或者执行区域传输。

相关内容