
我有我的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