前言:
玉溪老客户反映DNS解析慢,然后在DNS上抓包统计了一下Ipv4的源和目的数量,发现个别源IP数量偏多,
也就是说,这些Ip发起了大量了dns query,还有一些是来自互联网的。很明显这种短时间内大量dns query的请求一般都是非正常请求。随后,建议用户使用acl drop掉这些IP地址,情况有所缓解。
从另一个角度来说,也许是我们dns server的性能问题,,,哈哈。
DNS统计图 如下:
随后想到的问题
wireshark是不是可以统计dns查询域名呢?点了点相关菜单,没有发现类似的功能。
好吧,自己动手,自给自足。
1、过滤query类型为request的数据,然后导出纯文本存为query.txt。
dns.flags == 0x0100
2、使用grep 去掉干扰的信息
[root@WiseGrid SmartGrid]# cat query.txt |grep "2019-01-18" >ip1.txt
3、使用awk过滤出只包含域名的信息
[root@WiseGrid SmartGrid]# cat ip1.txt |awk -F ' ' '{print $14}'
4、使用awk和sort进行域名统计
使用这个awk和for循环进行统计排名
[root@WiseGrid SmartGrid]# awk '{a[$1]+=1;} END {for(i in a){print a[i]" "i;}}' ip2.txt| sort -t " " -k 1 -n -r
效果如下
第一列是次数,第二列是域名。
另外,通过观察数据包发现,dns一次query,其实是发了两次请求,所以,精确的统计数字最终要除以2.