在采用tcpreplay对包实施回放前,需要对包执行预处理,tcpprep就是完成这个任务的。 tcpprep要做的处理就是生成一个cache文件,根据tcpprep wiki的介绍http://tcpreplay.synfin.net/wiki/tcpprep, 其作用是将数据包两部分,通俗点讲就是区分下数据包中的服务端和客户端。当tcpreplay采用多网卡进行发送时,也可以采用tcpprep对包进行处理, 以决定回放包时,数据包走那一块网卡。同时,预处理过的数据包在进行发送时,采用tcpprep处理过后,可以以更高的速度回放。
这里主要介绍下回放IPv6数据包时,如何区分实施数据包的tcpprep工作。基本的tcpprep这部分就不具体介绍了。 通过tcpprep的wiki了解到,目前采用tcpprep进行包处理的模式有8种,包括Auto/Bridge、Auto/Router、Auto/Client、Auto/Server、IPv4/v6 matching CIDR、IPv4/v6 matching Regex、TCP/UDP Port、MAC address。
依照wiki上的文档介绍,目前新版本的tcpprep 3.4.2以上才支持IPv6数据包的处理。并且,auto模式(Bridge、Router、Client、Server)还不能够支持IPv6处理。 按照该说明,就依次验证测试下在对IPv6数据包下的处理过程。
1、IPv4/v6 matching CIDR 通过CIDR(无类别域间路由)的方式,通过手工的方式对数据包中的ip地址进行划分。 只要IPv6的CIDR书写的没有问题,tcppre可以按照设定好的路由规则进行数据包分类。 对于IPv6,其CIDR与IPv4比较相似: 比如:tcpprep --cidr=2001:da8:215:833:bce9:8592:cb2f:56be/128 --pcap=pure6-1.pcap --cachefile=pure6-1.cache 数据包就能够以这个IP为标示分成两部分了。 CIDR的IPv6规则条数还是可以有多条的,比如: tcpprep --cidr=2001:da8:215:833:bce9:8592:cb2f:56be/128 --pcap=pure6-1.pcap --cachefile=pure6-1.cache
2、IPv4/v6 matching Regex 通过IPv6的地址的正则表达式将需要实施IP分类的地址,以正则表达式进行区分。不过在这里,正则表达式只可以有一条。
tcpprep --regex="(2001:da8:215:833:bce9:8592)\:*" --pcap=pure6-1.pcap --cachefile=pure6-1.cache 将以2001:da8:215:833:bce9:8592开头的IP地址作为一类。这里只是比较简单的IP分类,可以按照自己的需要斟酌下正则表达式了。
?
|