我有我的 bind9 配置:
acl allowed {
192.168.12.0/24;
10.10.0.0/24;
};
options {
listen-on port 53 { 127.0.0.1; 192.168.12.90; 10.10.0.21; };
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-notify { localnets; };
allow-query { none; };
allow-recursion { allowed; };
allow-query-cache { allowed; };
allow-transfer { 192.168.12.117; };
allow-update { none; };
blackhole { none; };
forward only;
forwarders {
192.168.12.4;
};
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
通过此配置,我允许客户端进行递归查询,这些查询应通过转发到另一个 DNS 服务器来解析。我进行了跟踪:
dig @192.168.12.90 wikipedia.org +trace
获取:它输出长跟踪,其底部有:
wikipedia.org. 600 IN A 91.198.174.192
;; Received 86 bytes from 208.80.154.238#53(ns0.wikimedia.org) in 140 ms
显然,本地 DNS 服务器从根服务器开始向下执行递归查询,直到 ns0.wikimedia 进行解析,尽管它被命令仅转发查询(forward only;
指示)。
如果不允许 DNS 服务器进行递归查询,如何坚持纯转发?
谢谢。
答案1
根据dig
手册:
+[无]跟踪- 切换从根名称服务器跟踪所查找名称的委托路径。默认情况下,跟踪处于禁用状态。启用跟踪后,dig 进行迭代查询来解析所查找的名称它将遵循来自根服务器的推荐,显示用于解决查找的每个服务器的答案。
因此,要检查您的服务器是否支持递归查询,只需运行:
#dig @192.168.12.90 wikipedia.org
并查看响应头中是否设置了 RA(递归可用)位。
例如 Google DNS 服务器
#dig @8.8.8.8 wikipedia.org
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1