我正在一个用于解析大量域名的小型服务器上运行 bind,我的主要目标是快速解析域名并降低内存使用率。
我想使用类似本地区域的东西来管理所有顶级域名的域名服务器dig . axfr @g.root-servers.net.
现在发生的情况是,当缓存达到限制时,bind 会停止缓存,并且每次解析根服务器 dns 时都会命中。有没有办法使用输出axfr
并告诉 bind 从那里获取 tld 的 NS 信息?
我尝试使用 axfr 输出添加“。”主区域,但是没有效果。
zone "." IN {
type master;
file "axfrOutput.ca";
};
当前命名的配置文件
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";
};
答案1
高性能和低内存占用+短缓存时间是相互冲突的要求。
但是,当击中max-cache-size
限制是它应该开始(过早地)从缓存(LRU)中逐出条目。
强制缩短 TTL(max-cache-ttl
)牺牲了性能以换取更快的收敛速度。(这可能是一个坏主意,因为这会丢弃那些经常使用的东西,否则在 LRU 方案中会具有高优先级。)
cleaning-interval
已经过时并且在现代 BIND 版本中没有任何效果。
如果您的负载非常高,并且想要专门优化对根区域的查询,那么您可以拥有自己的从属区域,.
而不是正常的提示区域。
ICANN 提供AXFR 访问根区域以及一些其他区域。