我有一个 DNS 服务器,它运行在具有多个 IP 的虚拟 Linux 机器上。Bind 提供了一些非常详细的调试日志,但是,似乎没有记录的一条信息是请求IP地址。
例如,如果我在同一个机器上操作 google 的 DNS 服务器 8.8.8.8 和 8.8.4.4,我会查看用户是通过 8.8.8.8 还是 8.8.4.4 请求 DNS 记录。
理想情况下,我不想使用其他网络流量监控工具,只使用 BIND。我的另一个兴趣是根据请求的服务器 IP 改变响应,类似于 bind 中的 view 子句,但如果前者可以实现,那似乎会简单得多。
谢谢!
答案1
Bind 9 中的日志记录选项非常全面,您需要设置如下渠道:
channel resolving {
file "data/named.resolve" versions 10 size 5m;
severity info;
print-time yes;
};
然后是一个强制查询进入渠道的类别
category queries {
resolving;
};
这一切都在本logging {};
节内。
注意事项:如果您记录所有查询,您将花费大量时间将它们写入磁盘,并且它们会变得很大。选项版本 10,大小 5m 是我控制日志的方式,它保留 10 个版本,最大大小为 5 MB。然后我有一个 cron 作业,在它们被 bind 删除之前解析出信息。
这是我在该日志中获得的信息:
15-Apr-2014 16:15:15.041 client 192.168.xxx.xxx#40978: view That-one : query: XXXXX IN A + (192.168.xxx.xx)
()里面的IP地址是响应的BIND服务器IP。