BIND dns 高性能缓存

nac*_*bre 3 domain-name-system bind nameserver named-conf

我在用于解析大量域的小型服务器上运行绑定,我的主要目标是快速解析域和低内存使用率。

我想对所有 TLD 的名称服务器使用类似本地区域的东西 dig . axfr @g.root-servers.net.

现在发生的事情是当达到缓存限制时,绑定会停止缓存,并且每次解析根服务器 dns 都会被命中。有没有办法使用axfr输出并告诉绑定从那里获取 tld 的 NS 信息?

axfr 区域示例

我试图添加“。” 带有 axfr 输出的主区域,但它不起作用。

zone "." IN {
    type master;
    file "axfrOutput.ca";
};
Run Code Online (Sandbox Code Playgroud)

当前命名的.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";
};
Run Code Online (Sandbox Code Playgroud)

Håk*_*ist 9

高性能和低内存使用+短缓存时间是相互矛盾的要求。

但是,达到max-cache-size限制时应该发生的情况是它应该开始(过早地)从缓存 (LRU) 中逐出条目。

强制缩短 TTL ( max-cache-ttl) 会牺牲性能以换取更快的收敛。(可能是个坏主意,因为这会丢弃经常使用的东西,否则在 LRU 方案中将具有高优先级。)

cleaning-interval 已过时,在现代 BIND 版本中无效。


如果您有非常高的负载并且想要专门优化对根区域的查询,您可以拥有自己的从属区域.而不是普通的提示区域。

ICANN 提供对根区域以及其他一些区域的AXFR 访问