发明内容
本申请提供了一种DNS流量分析方法,旨在简化DNS流量分析的复杂度,并更好地了解DNS流量状况。
本申请提供的一种DNS流量分析方法,包括:
A、实时采集网络中的报文信息;
B、对所采集的报文信息进行DNS流量预处理,从中提取出需要的DNS流量信息;
C、对所提取的DNS流量信息进行DNS分析,得到DNS域名-域名关系集合、DNS域名-IP关系集合;
D、对所述DNS域名-域名关系集合和DNS域名-IP关系集合进行归并操作,得到DNS域名-IP关系资源表。
较佳地,所述C包括:
对每一条DNS流量信息,获取其中的查询域名和返回域名,将获取到的查询域名和各个返回域名分别构成一个DNS域名-域名关系对,所有DNS流量信息的DNS域名-域名关系对构成DNS域名-域名关系集合;
对每一条DNS流量信息,获取其中的查询域名和服务器响应IP地址,将获取到的查询域名和各个服务器响应IP地址分别构成一个DNS域名-IP关系对,所有DNS流量信息的DNS域名-IP关系对构成DNS域名-IP关系集合。
较佳地,所述D包括:
D1、对所述DNS域名-域名关系集合进行归并操作,得到DNS域名-域名关系字典;
D2、对所述DNS域名-IP关系集合进行归并操作,得到DNS域名-IP关系字典;
D3、对所述DNS域名-域名关系字典和DNS域名-IP关系字典进行整合,得到DNS域名-IP关系资源表。
较佳地,所述D1包括:
D11、输入DNS域名-域名关系集合中的第1个DNS域名-域名关系对,记为(A1,B1);
如果A1!=B1,则生成域名集合C1={A1,B1};
否则,如果A1==B1,则生成域名集合C1={A1};
D12、输入DNS域名-域名关系集合中的第i条(i>=2)DNS域名-域名关系对,记为(Ai,Bi),
如果Ai!=Bi,则将Ai和Bi分别与已有的域名集合中的元素相比较:
a)如果已有的域名集合Cm包含Ai,且Cn包含Bi,且m==n,则执行步骤D13;
b)如果已有的域名集合Cm包含Ai,且Cn包含Bi,且m!=n,则将已有的域名集合Cm和Cn进行合并,将Cn的元素添加到Cm中,并删除Cn;
c)如果已有的域名集合Cm包含Ai,且Bi不被任意已有的域名集合所包含,则将Bi加入到集合Cm中去;或者,如果已有的域名集合Cm包含Bi,且Ai不被任意已有的域名集合所包含,则将Ai加入到集合Cm中去;
d)如果Ai和Bi均不被任意已有的域名集合所包含,则生成域名集合Ci={Ai,Bi};
如果Ai==Bi,则将Ai与已有的域名集合的中的元素相比较:
a)如果Ai不被任意已有的域名集合所包含,则生成域名集合Ci={Ai};
b)如果Ai被域名集合Cm所包含,执行步骤D13;
D13、重复步骤D12,直至DNS域名-域名关系集合中的所有DNS域名-域名关系对处理完毕,得到的所有域名集合构成DNS域名-域名关系字典。
较佳地,所述D2包括:
D21、输入DNS域名-IP关系集合中的第1个DNS域名-IP关系对,按照所述第1个DNS域名-IP关系对生成一个新的DNS域名-IP集合;
D22、输入DNS域名-IP关系集合中的第i条(i>=2)DNS域名-IP关系对,将所述第i个DNS域名-IP关系对中的查询域名记为Ai;
将Ai与已有的DNS域名-IP集合中的元素相比较:
a)如果已有的DNS域名-IP集合Cm包含Ai,则将所述第i条DNS域名-IP关系对中的服务器响应IP地址加入到Cm中;
b)如果Ai不被任意已有的DNS域名-IP集合所包含,则按照所述第i条DNS域名-IP关系对生成一个新的DNS域名-IP集合;
D23、重复步骤D22,直至DNS域名-IP关系集合中的所有DNS域名-IP关系对处理完毕,得到的所有DNS域名-IP集合构成DNS域名-IP关系字典。
较佳地,所述D3包括:
D31、读入整个DNS域名-IP关系字典,生成一个空的DNS域名-IP关系资源表;
D32、按行读入DNS域名-域名关系字典,对于所读入的每一行:
如果该行中的所有域名都没有出现在DNS域名-IP关系字典中,则按照预定的格式将域名输出到DNS域名-IP关系资源表中;
如果该行中至少有1个域名出现在DNS域名-IP关系字典中,则按照预定的格式,先将域名输出到DNS域名-IP关系资源表中,然后将所有对应的服务器响应IP地址输出到DNS域名-IP关系资源表中;
D33、重复步骤D32,直至DNS域名-域名关系字典中的每一行都被处理完毕,得到DNS域名-IP关系资源表。
由上述技术方案可见,本申请提供的DNS流量分析方法通过实时采集网络中的报文信息,对所采集的报文信息进行DNS流量预处理,从中提取出需要的DNS流量信息;然后,对所提取的DNS流量信息进行DNS分析,得到DNS域名-域名关系集合、DNS域名-IP关系集合;最后,对所述DNS域名-域名关系集合和DNS域名-IP关系集合进行归并操作,减少了DNS流量的域名种类,使得对DNS流量的分析更加具有针对性,并能够从整体上更好地了解当前的DNS流量状况。
具体实施方式
为使本申请的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本申请作进一步详细说明。
本申请的主要通过运用域名归并算法,来减少DNS流量中的域名种类,从而简化对DNS流量分析的复杂度。
针对传统的流量分析方法,本申请重点关注和分析DNS数据中3个重要信息之间的深层联系,这3个重要信息分别为:查询域名、返回域名和服务器响应IP地址。在某种程度上,这3个重要信息之间存颇为复杂的映射关系,诸如一对一、一对多、多对一。例如:现实中通常一个域名会有多个别名,一个服务器响应IP地址也会对应多个域名,故本申请通过每一条查询记录将相关的域名归并到一个域名集合中去,指向同一个ISP(Internet ServiceProvider),形如xxx.cn xxx.com.cn xxx.com。在关联性的分析中,很有必要将这些指向同一个ISP的域名或IP聚集在一起,形成一个专属的集合。运用本申请技术方案对海量DNS流量进行分析,可以得到DNS域名和DNS域名之间有关联的域名关系集合,以及相应的域名-IP关系集合,运用此关系集合可以更好理解DNS流量状况。
图1为本申请DNS流量采集和分析过程示意图。图1所示过程的主要步骤说明如下:
首先,通过报文采集装置从运营商网络中实时采集报文信息并存储。
然后,对所采集的报文信息进行DNS流量预处理操作,从中提取出所需要的DNS流量信息。例如,典型的对报文信息进行DNS流量预处理之后得到的DNS流量字段示例如表1所示。
字段名 |
示例 |
注释 |
qsec |
1343527269 |
查询时间(秒) |
qusec |
785887 |
查询时间(微秒) |
intvlsec |
0 |
查询-应答间隔(秒) |
intvlusec |
3839 |
查询-应答间隔(微秒) |
clientIP |
0a124aea |
用户IP |
serverIP |
70040cc8 |
服务器IP |
transID |
50857 |
用于在客户与服务器间唯一标识一对查询应答 |
opCode |
0 |
查询、应答类型(0标准,1反向,2服务器状态请求) |
isAA |
0 |
应答结果是否来自权威服务器 |
isTC |
0 |
应答结果是否被截断 |
isRD |
1 |
是否有递归查询请求 |
isRA |
1 |
是否能够进行递归查询 |
rCode |
0 |
应答的差错状态(0为无错;3为无此域名等) |
queryNum |
1 |
请求数目 |
queryType |
1 |
查询类型(1为A,ipv4;28为AAAA,ipv6) |
queryName |
mobilelogin.sj.91.com |
查询内容 |
resNum |
1 |
应答数目 |
resType |
1 |
应答类型(5是别名;1是IP等) |
resName |
mobilelogin.sj.91.com |
需要解析的数据,在解析之前,和查询内容相同 |
resData |
79cff2ef |
解析得到的内容,在解析之后 |
resTTL |
18 |
应答数据的TTL |
表1
由于DNS流量十分巨大,本申请将海量的DNS流量文件存放到分布式存储集群Hadoop的分布式存储文件***HDFS(Hadoop Distributed File System)上,为下一步进行DNS分析操作做好数据准备。
最后,对DNS流量进行DNS分析,得到DNS域名-域名关系集合、DNS域名-IP关系集合,并最终得到DNS域名-IP关系资源表。下面详细说明本申请DNS流量分析方法。
图2为本申请DNS流量分析方法的时序图,参见图2,主要包括以下步骤:
Action1:MR(Mapreduce)操作,对位于HDFS上的DNS源数据(即DNS流量)中的查询域名和返回域名进行筛选,得到DNS域名-域名关系对。
通过此操作,DNS流量记录中一个查询域名如果有多个返回域名,则被简化成输出多个域名-域名关系对。例如,若一条DNS流量记录中有这样的查询域名www.taobao.com,且其返回域名有3个,分别为11.taobao.com,22.taobao.com,33.taobao.com,则输出的DNS域名-域名关系对为(www.taobao.com11.taobao.com),(www.taobao.com22.taobao.com),(www.taobao.com33.taobao.com)。
Action2:MR操作,对位于HDFS上的DNS源数据中的查询域名和服务器响应IP地址进行筛选,得到DNS域名-IP关系对。
同Action1,通过Action2操作后,DNS流量记录中一个查询域名如果有多个服务器响应IP地址的情况,则被简化成输出多个域名-IP关系对。
上述Action1和Action2中的操作可以运用hadoop的mapreduce分布式编程框架实现,可以并行快速处理海量DNS流量,从而极大地提高数据处理能力。
Action3:Hadoop shell命令操作,将位于HDFS的DNS域名-域名关系对下载到本地待操作目录中。
Action4:Hadoop shell命令操作,将位于HDFS的DNS域名-IP关系对下载到本地待操作目录中。
Action5:对位于本地的DNS域名-域名关系对进行归并操作(具体请见图3及其说明),将得到的结果“DNS域名-域名关系字典”存放到指定的本地待操作目录中。
Action6:对位于本地的DNS域名-IP关系对进行归并操作,将得到的结果“DNS域名-IP关系字典”存放到指定的本地待操作目录中。
Action7:将位于本地的DNS域名-域名关系字典和DNS域名-IP关系字典进行整合,最终得到DNS域名-IP关系资源表并存放到指定的本地目录。
图3为本申请对DNS域名-域名关系对进行域名归并操作的流程示意图,参见图3,首先对域名归并操作的输入、处理和输出说明如下:
输入:N条DNS域名-域名关系对(包括查询域名和返回域名)+DNS域名-域名关系字典。
处理说明:
1)对于DNS域名-域名关系字典生成操作,输入的DNS域名-域名关系字典的值为Null。
2)对于DNS域名-域名关系字典更新操作,输入的DNS域名-域名关系字典为上一次得到的DNS域名-域名关系字典。
输出:DNS域名-域名关系字典。
图3所示域名归并操作算法处理过程如下:
1)输入第1条DNS域名-域名关系对,记为(A1,B1),其中,A1为查询域名,B1为返回域名。
如果查询域名与返回域名不同,即A1!=B1,则将两个域名归并成一个新的域名集合C1={A1,B1};
否则,即A1==B1,则只需要用一个域名来形成一个新的域名集合C1={A1}。
2)输入第i条(i>=2)域名对(Ai,Bi)。
如果Ai!=Bi,则将它们分别与已有的域名集合中的元素相比较:
a)如果已有的域名集合Cm包含Ai,且Cn包含Bi,且m==n,则不做操作;
b)如果已有的域名集合Cm包含Ai,且Cn包含Bi,且m!=n,则将已有的两个域名集合Cm和Cn进行合并,将Cn的元素加到Cm中去,并删除Cn;
c)如果已有的域名集合Cm包含Ai(或Bi),且Bi(或Ai)不被任意已有的域名集合包含,则把Bi(或Ai)加入到集合Cm中去;
d)如果Ai和Bi都不被任意已有的域名集合包含,则形成一个新的域名集合{Ai,Bi}。
如果Ai==Bi,则用Ai与已经存在的域名集合的中元素相比较:
a)如果Ai不被任意已有的域名集合包含,则形成一个新域名集合{Ai};
b)如果Ai被域名集合Cm包含,进入下一步操作。
3)重复步骤2,直至所有域名对都被处理完毕,即可输出归并后的各个域名集合。这里,所有的域名集合构成域名字典。
上述Action6中需要对DNS域名-IP关系对进行归并操作,其输入、处理和输出说明如下:
输入:N条DNS域名-IP关系对(包括查询域名和服务器响应IP地址)+DNS域名-IP关系字典。
处理说明:
1)对于DNS域名-IP关系字典生成操作,输入的DNS域名-IP关系字典的值为Null。
2)对于DNS域名-IP关系字典更新操作,输入的DNS域名-IP关系字典为上一次得到的DNS域名-IP关系字典。
输出:DNS域名-IP关系字典。
生成(或更新)DNS域名-IP关系字典的处理过程如下:
1)从第一条DNS域名-IP关系对开始,输入第i条DNS域名-IP关系对,例如(a.com,192.168.0.1,192.168.0.2);
a)如果a.com存在于DNS域名-IP关系字典中,则将192.168.0.1和192.168.0.2加入到所对应的DNS域名-IP集合中去;
b)如果a.com不存在于DNS域名-IP关系字典中,则将该条记录作为一个新的DNS域名-IP集合加入到DNS域名-IP关系字典中去;
2)直至所有DNS域名-IP关系对都被处理完毕,即可输出生成(或更新之后)的DNS域名-IP关系字典。
图4为本申请DNS域名-IP关系资源表生成(或更新)的流程示意图,即:图2所示DNS流量分析方法的最后一个关键步骤Action7的流程示意图。Action7操作的输入、处理和输出说明如下:
输入:DNS域名-域名关系字典+DNS域名-IP关系字典;
输出:DNS域名-IP关系资源表。
图4所示生成(或更新)DNS域名-IP关系资源表的处理过程如下:
1)整体读入DNS域名-IP关系字典,生成一个空的DNS域名-IP关系资源表;
2)按行读入DNS域名-域名关系字典,对于所读入的每一行来说:
a)如果该行中的所有域名都没有出现在DNS域名-IP关系字典中(即:该行中没有1个域名出现在DNS域名-IP关系字典中),那么按照一定的格式将域名输出到DNS域名-IP关系资源表中;
b)如果该行中至少有1个域名出现在DNS域名-IP关系字典中,那么按照一定的格式,先将域名输出到DNS域名-IP关系资源表中,然后再将所有对应的服务器响应IP地址输出到DNS域名-IP关系资源表中;
3)重复步骤2),直至DNS域名-域名关系字典中的每一行都被处理完毕,即可得到最终的DNS域名-IP关系资源表。
由上述技术方案可见,本申请提供的DNS流量分析方法通过实时采集网络中的报文信息,对所采集的报文信息进行DNS流量预处理,从中提取出需要的DNS流量信息;然后,对所提取的DNS流量信息进行DNS分析,得到DNS域名-域名关系集合、DNS域名-IP关系集合;最后,对所述DNS域名-域名关系集合和DNS域名-IP关系集合进行归并操作,减少了DNS流量的域名种类,使得对DNS流量的分析更加具有针对性,并能够从整体上更好地了解当前的DNS流量状况。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。