我们正在考虑关闭一些 BIND DNS 服务器。我打开查询日志记录来查看哪些客户端正在联系这些服务器。绝大多数条目来自三个已知的罪魁祸首。我想消除这些记录。有什么方法可以从 BIND 内部执行此操作吗?
我找不到in-BIND的方式,所以我想到的not-within-BIND的方法就是让channel语句中的文件不是一个文件,而是一个socket。然后让脚本从该套接字读取并在写入文件之前进行过滤。
channel queries {
file "/var/adm/named/querylogsocket" versions 7;
print-time yes;
print-category yes;
print-severity yes;
severity info;
};
这是一个可行的方法吗?
答案1
有两种方法:日志过滤和查看配置更改。一种是简单的,另一种是困难的并且容易出错。
两者都无法减少您的日志输出。
日志过滤
如果您想继续让 Bind9 响应您的三大罪魁祸首,但只对其他查询和答案感兴趣,那么这些 Bind9 子句、声明和选项都无法帮助您。
在所有 Bind9 版本中(我有一个当前数据库这些关键字),目前没有按地址进行选择性日志过滤,因为它仅提供按严重性进行过滤。
许多以 开头的 Bind9 语句allow-
直接影响协议(而不是您想要的选择性日志记录输出)。
此时,最快(但并不总是最好)的方法是使用 Unix 管道并过滤掉三个不需要的 IP/主机名地址。
cd /var/log/named
cat query-errors | \
grep -v 1.1.1.1 | \
grep -v 1.1.1.2 | \
grep -v 1.1.1.3 | \
<your-log-analysis-program>
只需将1.1.1.x
示例中的部分替换为 3 个最大的不需要的地址即可。
该-v
选项将过滤掉不需要的输出,以便您只能看到您希望日志分析程序看到的内容。
查看配置变化
或者您可以修改named.conf
设置并将当前视图分成两个视图。
如果那里已经没有视图声明,那么对于非 Bind 人来说这将变得有点困难。
要拆分视图,请编辑named.conf
包含所需子句的(或其包含文件之一)view
。
复制整个view
子句(及其一对花括号内的所有语句。
将新克隆的第二个视图重命名为其他名称,可能只是在视图名称中添加“_original”后缀。
返回到第一个视图子句(这很重要,因为地址匹配是按第一个匹配顺序完成的。)
match-client
在第一个视图子句中添加另一个语句。
view red {
match-clients {
1.1.1.1; 1.1.1.2; 1.1.1.3;
};
...
现在您有了一个日志文件,其行具有不同的视图名称,您可以轻松扫描该视图名称。
结论
现在我知道这仍然不能解决不通过 Bind9 记录特定视图或地址集的需要。