Domain-Name-System

BIND dns 高性能記憶體

  • May 1, 2019

我在用於解析大量域的小型伺服器上執行綁定,我的主要目標是快速解析域和低記憶體使用量。

我想在所有 TLD 的名稱伺服器中使用類似本地區域的東西dig . axfr @g.root-servers.net.

現在發生的事情是當記憶體限制被命中時,bind 停止記憶體並且每次解析根伺服器 dns 都會被命中。有什麼方法可以使用axfr輸出並告訴 bind 從那裡獲取 tld 的 NS 資訊?

axfr 區域範例

我試圖添加“。” 具有 axfr 輸出的主區域,但它不起作用。

zone "." IN {
   type master;
   file "axfrOutput.ca";
};

目前命名的.conf

options {
   listen-on port 53 { 127.0.0.1; };
   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-query     { localhost; };
   max-cache-size 100m;
   cleaning-interval 1;    // clean cache every 1 minutes
   max-cache-ttl 120;        // limit cached record to a 60s TTL
   max-ncache-ttl 120;       // limit cache neg. resp. to a 60s TTL
   recursion yes;

   dnssec-enable yes;
   dnssec-validation yes;
   dnssec-lookaside auto;

   /* Path to ISC DLV key */
   bindkeys-file "/etc/named.iscdlv.key";

   managed-keys-directory "/var/named/dynamic";
};

zone "." IN {
    type hint;
    file "named.ca";
};

高性能和低記憶體使用+短記憶體時間是相互矛盾的要求。

但是,達到限制時應該發生的事情max-cache-size是它應該開始(過早地)從記憶體(LRU)中逐出條目。

強制更短的 TTL ( max-cache-ttl) 會犧牲性能以加快收斂速度。(可能是個壞主意,因為這會丟棄經常使用的東西,否則會在 LRU 方案中具有高優先級。)

cleaning-interval已過時,在現代 BIND 版本中無效。

如果您有非常高的負載並且想要專門優化對根區域的查詢,您可以擁有自己的從屬區域,.而不是普通的提示區域。

ICANN 提供AXFR 對根區域以及其他一些區域的訪問權限。

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