我在本地网络上设置了 BIND9 的本地副本作为缓存 DNS 转发器。我还为其配置了一个大response-policy
区域作为网络范围的广告拦截器。随着 RPZ 的引入,启动时间从亚秒级缩短到几分钟。
RPZ 有大约 200K 个条目,磁盘上大约有 7.5 MiB。启动期间named
处理器的利用率保持在 100%,但启动过程结束后,利用率降至接近零。我怀疑这是因为named
运行在旧的 Raspberry Pi(B 型)上。
是否有更有效的存储格式可以提供named
以减少启动时间?第一次解析后,已解析的区域是否可以以本机格式转储?
答案1
在查阅了 Bind 文档后,我找到了答案。区域文件的格式可以通过以下方式控制:masterfile-format
选项(在区域块中)。bind 发行版附带一个名为的工具,named-comilezone
该工具可以在text
(慢速)和map
(快速)文件格式之间进行转换。
# To convert a text zone file to a map file
$ sudo named-compilezone -f text -F map \
-o /var/named/rpz.example.com.zone.map \
rpz.example.com \
/var/named/rpz.y2k38.date.zone
/var/named/rpz.example.com.zone:3: using RFC1035 TTL semantics
zone rpz.example.com/IN: loaded serial 2
dump zone to /var/named/rpz.example.com.zone.map...done
OK
# To convert it back to text in order to view the contents
# just run the command in reverse
$ sudo named-compilezone -f map -F text \
-o /var/named/rpz.example.com.zone \
rpz.example.com \
/var/named/rpz.y2k38.date.zone.map
再次开始绑定之前,请务必更正输出文件的权限
sudo chown named /var/named/rpz.example.com.zone{,.map}
sudo chmod 640 /var/named/rpz.example.com.zone{,.map}
还要注意,地图格式比文本格式占用更多的磁盘空间。
-rw-r----- 1 named named 7638511 Jan 21 07:50 rpz.example.com.zone
-rw-r----- 1 named named 41967072 Jan 22 06:54 rpz.example.com.zone.map
然而
从 Bind 9.11.2.P1 开始,出于某种原因,该map
格式不支持response-policy
区域。似乎自从添加格式(9.10)以来,情况一直如此。我仍在研究代码和错误跟踪器,看看这是否是已知情况。在 Bind 9.11.2.P1 中,区域“成功”加载,没有声明错误,但没有response-policy
发生任何行为(好像文件为空)。