4.9. 使用 dnstap 记录 DNS 查询
作为网络管理员,您可以记录域名系统(DNS)详情来分析 DNS 流量模式、监控 DNS 服务器性能,并对 DNS 问题进行故障排除。如果您希望有一个高级方法来监控和记录传入名称查询的详细信息,请使用 dnstap
接口记录从 named
服务发送的消息。您可以捕获并记录 DNS 查询,来收集有关网站或 IP 地址的信息。
先决条件
-
bind-9.11.26-2
软件包或更新版本已安装。
如果您已安装并运行了 BIND
版本,添加新版本的 BIND
将覆盖现有的版本。
流程
通过编辑
options
块中的/etc/named.conf
文件来启用dnstap
和目标文件:options { # ... dnstap { all; }; # Configure filter dnstap-output file "/var/named/data/dnstap.bin"; # ... }; # end of options
要指定您要记录的 DNS 流量类型,请将
dnstap
过滤器添加到/etc/named.conf
文件中的dnstap
块中。您可以使用以下过滤器:-
auth
- 权威区域响应或回答。 -
client
- 内部客户端查询或回答。 -
forwarder
- 转发的查询或来自它的响应。 -
resolver
- 迭代的解析查询或响应。 -
update
- 动态区域更新请求。 -
all
- 以上选项中的任何一个。 query
或response
- 如果您没有指定query
或response
关键字,则dnstap
两个都记录。注意dnstap
过滤器包含多个由;
分隔的定义,dnstap {}
块的语法如下:dnstap{(all | auth | client | forwarder | resolver | update)[(query | response)]; … };
-
要应用您的更改,请重启
named
服务:# systemctl restart named.service
为活跃日志配置定期回滚
在以下示例中,
cron
调度程序每天运行一次用户编辑的脚本的内容。值为3
的roll
选项指定dnstap
最多可以创建三个备份日志文件。值3
覆盖dnstap-output
变量的version
参数,并将备份日志文件数限制为三个。此外,二进制日志文件被移到另一个目录并被重命名,并且永远不会达到.2
后缀,即使三个备份文件已存在。如果根据大小限制自动回滚二进制日志足够了,则您可以跳过这一步。Example: sudoedit /etc/cron.daily/dnstap #!/bin/sh rndc dnstap -roll 3 mv /var/named/data/dnstap.bin.1 /var/log/named/dnstap/dnstap-$(date -I).bin # use dnstap-read to analyze saved logs sudo chmod a+x /etc/cron.daily/dnstap
使用
dnstap-read
工具以人类可读的格式处理和分析日志:在以下示例中,
dnstap-read
工具以YAML
文件格式打印输出。Example: dnstap-read -y [file-name]