我想find一种方法来logging请求到DNS服务器,网站统计。 如果服务器也使用MySQL作为后端服务器,那将会很好。
我想这是可能的,因为有pipe理的DNS服务谁拥有每个请求价格的数量。 但是我找不到任何东西。
有没有人有一个想法,或者我应该自己修改现有的DNS服务器?
谢谢。
皮埃尔
一种方法是转动BIND日志logging:
logging{ channel simple_log { file "/var/log/bind.log" versions 3 size 5m; severity warning; print-time yes; print-severity yes; print-category yes; }; category default{ simple_log; }; };
或者如果你有rndcconfiguration你可以使用:
rndc querylog
H皮埃尔,
你提到MySQL,所以我假设Linux和绑定。
在named.conf中应该是这样的
logging{ channel queries_log{ file "/var/log/named/dns.log" versions 5 size 500m; print-time yes; }; category queries{ queries_log; }; };
这里给出的答案显示了如何在一个单一的文本文件中获得您的查询。 你问过使用MySQL作为后端,这绝对有可能。
按照给定的例子为查询loggingconfigurationBIND之后,可以将这些消息发送到系统日志服务器(本地到BIND服务器或另一个主机上)。
尽pipe如此,通过这个网站将超出本网站的范围。 不过,像这个教程这样的东西是一个很好的开始,
设置rsyslog将系统日志消息存储在MySQL中
使用名称服务器本身(例如Prix的响应中的BIND)会认真加载软件(现在必须格式化每个请求并执行I / O)并取决于您使用的软件。
相反,我build议使用以太网端口镜像来捕获(在机器本身或另一台机器上的)paquets,然后使用统计程序。 对于捕获,使用tcpdump或tshark或pcapdump (我喜欢关于pcapdump的一件事就是它可以抽样)。 DNS统计程序的母亲是DSC 。
如果您喜欢RDBMS, DNSmezzo会将捕获结果放入PostgreSQL数据库,您可以随时使用SQL请求进行学习。
就像在旁边一样,即使一些被pipe理的dns提供者通过查询来收费,但是它有时也是从采样得出的一个猜测,因为当涉及许多域时,需要一些严肃的处理才能做出确切的计数。