Ubuntu

在禁用遞歸的情況下抑制權威伺服器上的 BIND 權限部分

  • August 16, 2018

我正在為 BIND 9.11.3 上不在我的網路中的主機執行禁用遞歸的權威伺服器。當從我的網路外的主機查詢不受伺服器授權的域時,我沒有得到任何答案,並且在授權部分中得到了根伺服器的列表。我理解為什麼會發生這種情況,我想知道是否可以完全禁用權限部分。當遞歸不可用時,是否有類似於最小響應的選項不會返回任何權限數據?

範例探勘:

; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> @NS google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6847
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 5ed7760df1d65f05baba487c5b75a318b3065456b81ca133 (good)
;; QUESTION SECTION:
;google.com.                        IN      A

;; AUTHORITY SECTION:
.                   518400  IN      NS      D.ROOT-SERVERS.NET.
.                   518400  IN      NS      F.ROOT-SERVERS.NET.
.                   518400  IN      NS      B.ROOT-SERVERS.NET.
.                   518400  IN      NS      L.ROOT-SERVERS.NET.
.                   518400  IN      NS      I.ROOT-SERVERS.NET.
.                   518400  IN      NS      A.ROOT-SERVERS.NET.
.                   518400  IN      NS      E.ROOT-SERVERS.NET.
.                   518400  IN      NS      C.ROOT-SERVERS.NET.
.                   518400  IN      NS      M.ROOT-SERVERS.NET.
.                   518400  IN      NS      H.ROOT-SERVERS.NET.
.                   518400  IN      NS      K.ROOT-SERVERS.NET.
.                   518400  IN      NS      G.ROOT-SERVERS.NET.
.                   518400  IN      NS      J.ROOT-SERVERS.NET.

;; Query time: 36 msec

我的選項如下所示:

options {
       listen-on { any; };
       directory "/var/cache/bind";
       allow-recursion { acls; };

       rate-limit {
               responses-per-second 10;
               exempt-clients { acls; };
               window 5;
       };

       allow-query-cache { any; };
       allow-query { any; };
       allow-update { none; };
       dnssec-enable no;
       dnssec-validation no;
       minimal-responses yes;
       forwarders {
               208.67.222.222;
               208.67.220.220;
       };
};

我做了一些快速測試,並相信您的問題與以下行有關:

   allow-query-cache { any; };

您的配置不允許向公眾遞歸,但仍允許記憶體訪問。通常,遠端客戶端會在未啟用遞歸時收到 rcode REFUSED,但由於已明確允許訪問記憶體,因此客戶端正在從不包含該響應的記憶體中接收可能的最具體的答案。

我的 DNS 專業人士會建議在沒有明確需要的所有情況下禁用權威伺服器上的遞歸+記憶體。如果您確信需要保留此功能,那麼最好對兩者應用相同的 ACL。(或者乾脆完全刪除allow-query-cache,因為它預設為 的值allow-recursion

引用自:https://serverfault.com/questions/926730