![除非启用递归,否则无法使 bind9 转发 DNS 查询到子域](https://linux22.com/image/802602/%E9%99%A4%E9%9D%9E%E5%90%AF%E7%94%A8%E9%80%92%E5%BD%92%EF%BC%8C%E5%90%A6%E5%88%99%E6%97%A0%E6%B3%95%E4%BD%BF%20bind9%20%E8%BD%AC%E5%8F%91%20DNS%20%E6%9F%A5%E8%AF%A2%E5%88%B0%E5%AD%90%E5%9F%9F.png)
我正在尝试开发自己的动态 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 设置为其自己的独立名称服务器,或者执行区域传输。