一种基于多路径报文检测分析的NAT关联检测方法与流程

文档序号:21926552发布日期:2020-08-21 14:47阅读:131来源:国知局

本发明涉及计算机领域,具体涉及一种基于多路径报文检测分析的nat关联检测方法。



背景技术:

nat(networkaddresstranslator,网络地址转换),它是一种把内部私有网络ip地址翻译成公有网络ip地址的技术,在ipv4地址日益缺乏的情况下,nat的主要目的是使地址能够重用。nat很好地解决了地址紧缺的问题,隐藏并保护网络内部的计算机,但也使得网络变得更复杂,当网络服务出现故障时,定位问题也变得更困难。

由于nat技术会转换ip地址及传输层端口,在终端设备(如服务器、个人电脑)发出的一条流在经过nat设备转换后会变为另一条新的流,新旧两条流除payload数据净荷相同外,传输层以下各层协议的数据可能都不相同,wireshark等报文分析软件也会视其为两条不同的流,即使是资深的网络专家,在面对大量的数据流时,也不能快速的从成千上万条流中分析出有哪些流是nat关联的流,这就给分析网络中的流量路径造成了极大的困难,还会付出很大的时间和金钱成本。



技术实现要素:

针对现有技术中的上述不足,本发明提供的一种基于多路径报文检测分析的nat关联检测方法解决了不能快速找出nat关联流的问题。

为了达到上述发明目的,本发明采用的技术方案为:

提供一种基于多路径报文检测分析的nat关联检测方法,其包括以下步骤:

s1、解析pcap格式的网络报文文件,获取源mac地址、目的mac地址、以太网类型、五元组、ttl、tcpsequence序列号、tcpack序列号、tcpflag、payload数据长度,以及捕获报文时的时间戳;并根据捕获报文时的时间戳设置该报文的报文id;

s2、对于tcp协议报文和udp协议报文,判断是否可以根据其五元组在内存报文流数据结构中查找到其所属的流,若是则获取并进入步骤s4,否则进入步骤s3;

s3、将该报文的五元组为基础数据添加至内存中,并根据该报文的长度设置其所属流的接收总字节和发送总字节,根据该报文的捕获时间设置其所属流id和流的起始时间戳;设置这个报文在这条流的发送次序和接收次序,进入步骤s5;

s4、将该报文所属流的接收总字节或发送总字节与该报文的长度相加,并设置该报文在这条流的发送次序和接收次序;

s5、将tcp协议报文和udp协议报文解析得到的数据、所属的流id和被捕获的时间戳保存至数据库中,使每条记录对应一条报文,即报文记录;将内存报文流数据结构中的每一条流的数据添加到数据库中,使每条记录对应一条流;

s6、对数据库中的所有流按照流id升序进行排序,判断两两相邻的流的起始时间戳差值是否在第一时差阈值内,若是则进入步骤s7,否则判定该两条流不是nat关联的流;

s7、判断该两条流的l4层协议是否相同,若是则将该两条流作为关联流组合并进入步骤s8,否则判定该两条流不是nat关联的流;

s8、从数据库中获取流发送次序和流接收次序小于次序阈值、且非重传的报文记录,并将获取的报文记录按照流id和报文id进行升序排序;

s9、对于步骤s8中得到的报文记录,从第一个报文开始将其流id与关联流组合中的流id进行比较,取出该报文序列中流id等于关联流组合的流id的2组报文;

s10、对比步骤s9中同时取出的2组报文的长度和payload净荷指纹特征值是否都相同,若是则进入步骤s11,否则判定该两条流不是nat关联的流;

s11、判断步骤s9中同时取出的2组报文的时间戳差值是否在第二时差阈值内,若是则判定该两条流是nat关联的流;否则判定该两条流不是nat关联的流。

进一步地,步骤s11之后还包括步骤s12:

比较该2组报文的ip地址和tcp/udp端口,若源ip地址和源端口均相同,则判定为dnat关联;若目的ip地址和目的端口相同,则判定为snat关联。

进一步地,步骤s1中根据捕获报文时的时间戳设置该报文的报文id的具体方法为:

将该报文的捕获时间戳的秒数乘以1000000000后加上该报文的序号作为该报文的id,即报文id为64位无符号数;捕获时间戳的秒数即posix时间;报文的序号从1递增。

进一步地,步骤s3中根据该报文的捕获时间设置其所属流id和流的起始时间戳的具体方法为:

将该报文的捕获时间戳的秒数乘以1000000000后加上该条流的序号作为该条流的流id,即流id为64为无符号数;其中捕获时间戳的秒数即posix时间;流的序号从1递增。

进一步地,步骤s6中第一时差阈值为10ms。

进一步地,步骤s8中的次序阈值为5。

进一步地,步骤s10中payload净荷指纹特征值为payload数据前80个字节的md5hash值。

进一步地,步骤s11中第二时差阈值为10ms。

本发明的有益效果为:本发明通过分析大量报文的各层协议字段和payload净荷数据,以及时间戳和累计字节数等统计信息,找出nat关联的流。还可通过分析这些关联流的源mac地址和目的mac地址确定关联流的转发路径,即报文经过的网络设备,帮助运维人员更直观的了解网络运行情况,以及排查网络故障。

具体实施方式

下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

该基于多路径报文检测分析的nat关联检测方法包括以下步骤:

s1、解析pcap格式的网络报文文件,获取2层至4层的协议字段,包括源mac地址、目的mac地址、以太网类型、五元组、ttl、tcpsequence序列号、tcpack序列号、tcpflag、payload数据长度,以及捕获报文时的时间戳;并根据捕获报文时的时间戳设置该报文的报文id;

s2、对于tcp协议报文和udp协议报文,判断是否可以根据其五元组在内存报文流数据结构中查找到其所属的流,若是则获取并进入步骤s4,否则进入步骤s3;

s3、将该报文的五元组为基础数据添加至内存中,并根据该报文的长度设置其所属流的接收总字节和发送总字节,根据该报文的捕获时间设置其所属流id和流的起始时间戳;设置这个报文在这条流的发送次序和接收次序,进入步骤s5;

s4、将该报文所属流的接收总字节或发送总字节与该报文的长度相加,并设置该报文在这条流的发送次序和接收次序;

s5、将tcp协议报文和udp协议报文解析得到的数据、所属的流id和被捕获的时间戳保存至数据库中,使每条记录对应一条报文,即报文记录;将内存报文流数据结构中的每一条流的数据添加到数据库中,使每条记录对应一条流;

s6、对数据库中的所有流按照流id升序进行排序,判断两两相邻的流的起始时间戳差值是否在第一时差阈值内,若是则进入步骤s7,否则判定该两条流不是nat关联的流;

s7、判断该两条流的l4层协议是否相同,若是则将该两条流作为关联流组合并进入步骤s8,否则判定该两条流不是nat关联的流;

s8、从数据库中获取流发送次序和流接收次序小于次序阈值、且非重传的报文记录,并将获取的报文记录按照流id和报文id进行升序排序;

s9、对于步骤s8中得到的报文记录,从第一个报文开始将其流id与关联流组合中的流id进行比较,取出该报文序列中流id等于关联流组合的流id的2组报文;

s10、对比步骤s9中同时取出的2组报文的长度和payload净荷指纹特征值是否都相同,若是则进入步骤s11,否则判定该两条流不是nat关联的流;

s11、判断步骤s9中同时取出的2组报文的时间戳差值是否在第二时差阈值内,若是则判定该两条流是nat关联的流;否则判定该两条流不是nat关联的流;

s12、比较该2组报文的ip地址和tcp/udp端口,若源ip地址和源端口均相同,则判定为dnat关联;若目的ip地址和目的端口相同,则判定为snat关联。

步骤s1中根据捕获报文时的时间戳设置该报文的报文id的具体方法为:将该报文的捕获时间戳的秒数乘以1000000000后加上该报文的序号作为该报文的id,即报文id为64位无符号数;捕获时间戳的秒数即posix时间;报文的序号从1递增。

步骤s3中根据该报文的捕获时间设置其所属流id和流的起始时间戳的具体方法为:将该报文的捕获时间戳的秒数乘以1000000000后加上该条流的序号作为该条流的流id,即流id为64为无符号数;其中捕获时间戳的秒数即posix时间;流的序号从1递增。

在本发明的一个实施例中,步骤s6中第一时差阈值为10ms。步骤s8中的次序阈值为5。步骤s10中payload净荷指纹特征值为payload数据前80个字节的md5hash值。步骤s11中第二时差阈值为10ms。在具体使用过程中,根据2组报文的源mac地址,确定报文捕获点位置,进而可以确定流的转发路径。

综上所述,本发明可以快速的从大量报文中提取出多对nat关联的流,可以帮助运维人员了解网络运行状况,并在发生故障时帮助运维人员定位问题。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1