Kol*_*nya 4 dns configuration bind
我成功地在bind9
服务器上使用了一个小的(20,000 个条目)区域文件,但是今天我的数据提供者发送了一个更新,导致区域文件变成了 300,000+ 个条目(30Mb+)。
问题是服务器不会以此区域文件启动。该named-checkconf
不会报告任何错误。没有可用的日志消息(或者我无法正确记录它们)。
我想知道是否bind9
能够处理大型配置文件,如果是,我该如何修复它。如果没有,我想知道是否有解决此问题的方法。也许可以将条目存储在数据库中?
我正在尝试使用的区域文件可以从这里下载。
更新:
service bind9 status
显示了一些可能相关的信息:
adjusted limit on open files from 4096 to 1048576
found 1 CPU, using 1 worker thread
using 1 UDP listener per interface
using up to 4096 sockets
loading configuration from '/etc/bind/named.conf'
Run Code Online (Sandbox Code Playgroud)
我不太确定如何解释或使用这些信息......有什么想法吗?此外,我无法找到bind9
日志所在的位置:/var/log/
没有bind9
条目。谁能告诉我它们在 Debian Jessie 上的位置?
我已经看到你的区域文件:它似乎是一个包含 35 万多个域的列表,目前,它被定义为本地 BIND 服务器作为主服务器。域具有以下格式:
zone "xxxx.com" { type master; notify no; file "null.zone.file"; };
Run Code Online (Sandbox Code Playgroud)
根据内存要求,我想大概说一下,当域表加载到内存中时,您可能需要大约 40MB-80MB 的可用 RAM。(尽管至少我会觉得 200MB 更舒服)
除非服务器在 RAM 中受到严重限制,否则这似乎不太可能,但它可能会发生。
我还注意到几个域的名称中有下划线(“_”)。在 DNS RR 中使用下划线会破坏一些 RFC(RFC 952 和 RFC 1123),您需要将指令添加到 BIND 选项部分:
check-names master ignore;
Run Code Online (Sandbox Code Playgroud)
至于用于将域列入黑名单的格式和方法。从版本 9.8 开始,BIND 支持所谓的响应策略区域 (RPZ),它是专门为将域列入黑名单而创建的。
现在有几个(商业)黑名单提供商遵循这种格式。(我自己在工作和家里都使用 RPZ)。
使用 RPZ 应该更有意义,也意味着更轻的负载,因此,如果您支付服务费用,我建议您联系您的供应商以了解如何使用它。RPZ 格式在某种程度上还支持通配符,这意味着黑名单文件要小得多。
另一种方法是使用脚本处理文件以将其更改为 RPZ 格式。
我将在此处留下有关 RPZ 和官方 RPZ 提供商的相关链接:
以及如何配置 RPZ 的教程:
http://www.zytrax.com/books/dns/ch9/rpz.html
您可能已经注意到,使用当前配置,您还将有很多打开的文件;因此我再次推荐使用 RPZ。
为了处理更开放的文件,在大型电子邮件、DNS 或 HTTP 服务器中,通常必须提高限制。
情况并不像以前使用较旧的内核那样糟糕,但尽管如此,我还是建议提高限制。
编辑/etc/sysctl.conf
和修改/添加fs.file-max
全局打开文件限制的指令:
fs.file-max=500000
Run Code Online (Sandbox Code Playgroud)
要在不重新启动的情况下应用新文件限制,您需要运行:
sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)
对于每个进程的文件限制,编辑/etc/security/limits.conf
:
* - nofile 400000
Run Code Online (Sandbox Code Playgroud)
要应用每个进程的文件限制,请注销并登录,或运行:
sudo ulimit -n 400000
Run Code Online (Sandbox Code Playgroud)
提高这两个限制后,您需要重新启动 BIND:
sudo service bind9 restart
Run Code Online (Sandbox Code Playgroud)
要将文件转换为 RPZ 格式,请运行:
cat bind | tr -d \" | awk ' { print $2" CNAME ." } ' > /etc/bind/rpz.db
Run Code Online (Sandbox Code Playgroud)
该脚本会将条目转换为以下格式:
zeus.developershed.com CNAME .
zeusclicks.com CNAME .
zintext.com CNAME .
Run Code Online (Sandbox Code Playgroud)
在named的选项部分添加:
response-policy { zone "rpz"; };
Run Code Online (Sandbox Code Playgroud)
创建 RPZ 区域的声明:
zone "rpz" {
type master;
file "/etc/bind/rpz.db";
};
Run Code Online (Sandbox Code Playgroud)
添加到/etc/bind/rpz.db
文件顶部:
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS your_dns_fqdn.
Run Code Online (Sandbox Code Playgroud)
取消配置您的 DNS 文件并重新启动 BIND 服务器。显然,RPZ 文件可以使用通配符进行优化并缩短很多,但是即使没有这种优化,现在您也不需要那么多打开的文件。
至于查询BIND/DNS日志,它们是和系统一起用/var/log/syslog
标签登录的named
。您可以使用以下命令:
sudo grep named /var/log/syslog
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5761 次 |
最近记录: |