dnstop:从Shell提示符监视BIND DNS服务器(DNS网络流量)
问题描述:如何在Linux下监视以Bind 9命名的(或任何其他dns服务器)服务器流量/网络流量?
如何实时查找和查看当前的DNS查询,例如A,MX,PTR等?
如何查找谁在查询我的DNS服务器或特定域或特定dns客户端IP地址?
解决方法:日志文件可以提供所需的信息,但dnstop就像用于监视dns流量的top命令一样。
它是在设备上侦听或解析文件保存文件以及收集和打印本地网络DNS流量统计信息的小工具。
您必须具有对/dev/bpf *的读取权限。
bpf(伯克利包过滤器),它以协议独立的方式为数据链路层提供原始接口。
通过该机制可以访问网络上的所有数据包,甚至包括发往其他主机的数据包。
dnstop可以从实时捕获设备或tcpdump保存文件中读取数据包。
安装dnstop
执行以下命令以在dbian/ubuntu Linux下安装dnstop:
$ sudo apt-get update $ sudo apt-get install dnstop
关于Red Hat/CentOS/RHEL/Fedora Linux的说明
使用make命令安装最新版本(有关二进制RPM文件,请参见下文)。
首先,通过访问dnstop官方网站获取最新的源代码。
首先安装所需的开发库,执行:
# yum install libpcap-devel ncurses-devel
现在,使用wget命令获取最新的源代码,执行:
# cd /tmp # wget http://dns.measurement-factory.com/tools/dnstop/src/dnstop-20080502.tar.gz # tar -zxvf dnstop-20080502.tar.gz # cd dnstop-20080502
编译并安装dnstop,执行:
# ./configure # make # make install
dnstop rpm文件
或者,您可以从dags仓库下载dnstop rpm,以用于RHEL/CentOS/Fedora Linux。
FreeBSD下的dnstop
如果您使用的是FreeBSD,请遵循以下安装说明。
监控Dns服务器
您可以使用命令行选项监视各种dns数据和查询。
如何使用dnstop查看dns流量?
只需在shell提示符下执行以下命令即可监视eth0接口的流量:
# dnstop {interface-name} # dnstop eth0 # dnstop em0
输出示例:
2 new queries, 220 total queries Mon Aug 4 05:56:50 2008 Sources count % ---------------- --------- ----- 180.248.xxx.26 72 32.7 77.89.xx.108 7 3.2 186.xxx.13.108 5 2.3 90.xxx.94.39 4 1.8 178.xx.77.83 4 1.8 187.xxx.149.23 4 1.8 xxx.13.249.70 4 1.8 1.xxx.169.102 4 1.8 189.xx.191.126 4 1.8 xxx.239.194.97 3 1.4
您可以使用-l {level}选项来强制dnstop将名称的数量保持在域名级别以下。
例如,使用-l 2(默认值),dnstop将保留两个表:一个具有顶级域名(例如.com,.org,.com等),而另一个具有第二级域名(例如co .in,col.uk)。
# dnstop -l 3 eth0
在Debian/Ubuntu Linux下,执行:
# dnstop -t -s eth0
其中:
- -s跟踪二级域名
- -t跟踪第三级域
请注意,提高级别可提供更多详细信息,但还需要更多内存和CPU来跟踪DNS流量。
如何退出或重置计数器?
要退出dnstop,请按^ X(按住[CTRL]键并按X)。
按^ R重置计数器。
如何找出TLD产生的最大流量?
运行dnstop时,按" 1"键查看一级查询名称(TLD):
5 new queries, 1525 total queries Mon Aug 4 06:11:09 2008 TLD count % ------------------------------ --------- ----- net 520 34.1 com 502 32.9 in-addr.arpa 454 29.8 in 23 1.5 org 15 1.0 com 11 0.7
看起来此DNS服务器正在服务更多的.net TLD。
您还可以通过在运行dnstop时提示2
键来找到有关实际域名的更多信息:
3 new queries, 1640 total queries Mon Aug 4 06:13:20 2008 SLD count % ------------------------------ --------- ----- theitroad.local 557 34.0 theitroad.net 556 33.9 74.in-addr.arpa 34 2.1 208.in-addr.arpa 29 1.8 195.in-addr.arpa 28 1.7 192.in-addr.arpa 27 1.6 64.in-addr.arpa 27 1.6 theitroad.com 23 1.4 203.in-addr.arpa 20 1.2 192.in-addr.arpa 18 1.1 212.in-addr.arpa 15 0.9 theitroad.com 13 0.8 217.in-addr.arpa 13 0.8 213.in-addr.arpa 12 0.7 128.in-addr.arpa 12 0.7 193.in-addr.arpa 12 0.7 simplyguide.org 12 0.7 cricketnow.in 3 0.2
要查找3级域,请按" 3"键:
www.theitroad.local 60 39.0 figs.theitroad.local 33 21.4 ns1.theitroad.net 18 11.7 ns3.theitroad.net 13 8.4 ns2.theitroad.net 13 8.4 theitroad.com 5 3.2 theitroad.com 5 3.2 theitroad.local 2 1.3 jobs.theitroad.local 1 0.6 bash.theitroad.local 1 0.6
如何显示查询类型的细分?
您可以通过提示t
键轻松找到最需要的查询类型(A,AAAA,PTR等)
Query Type Count % ---------- --------- ----- A? 224 56.7 AAAA? 142 35.9 A6? 29 7.3
如何确定谁正在连接我的DNS服务器?
按d查看dns客户端IP地址:
Source Query Name Count % -------------- ------------- --------- ----- xx.75.164.90 theitroad.net 20 9.1 xx.75.164.90 theitroad.local 18 9.1 x.68.25.4 theitroad.net 9 9.1 xxx.131.0.10 theitroad.local 5 4.5 xx.104.200.202 theitroad.local 4 4.5 192.xxx.0.2 theitroad.local 1 4.5
选项说明
还有更多选项可提供当前流量的详细视图,只需执行?
即可查看所有运行时选项的帮助:
s - Sources list d - Destinations list t - Query types o - Opcodes r - Rcodes 1 - 1st level Query Names ! - with Sources 2 - 2nd level Query Names @ - with Sources 3 - 3rd level Query Names # - with Sources 4 - 4th level Query Names $ - with Sources 5 - 5th level Query Names % - with Sources 6 - 6th level Query Names ^ - with Sources 7 - 7th level Query Names & - with Sources 8 - 8th level Query Names * - with Sources 9 - 9th level Query Names ( - with Sources ^R - Reset counters ^X - Exit ? - this