Tcpreplay命令详解


工具的名称就能猜到工具的作用,就是重放TCP的报文,但是这个工具究竟功能如何,是不是仅仅局限于在一个网卡上回放报文,这篇说明书主要介绍tcprelay的一些与测试有关的使用,在介绍tcpreplay命令的使用之前,先要介绍与之密切相关的一个命令:tcpprep,中文直译就是tcp准备的意思,它的作用可以参见官方网站的介绍说明:

tcpprep is the pcap pre-processor for tcpreplay and tcprewrite. The purpose of tcpprep is to create a cache file which is used to "split" traffic into two sides (often called primary/secondary or client/server). If you are intending to use tcpreplay with two NIC's, then tcpprep is what decides which interface each packet will use. By using a seperate process to generate cache files, tcpreplay can send packets at a much higher rate then if it had to do the calculations to split traffic itself.


个人翻译:(建议大家看man文件,阅读3次就能够比较好的理解了)


P:<list> - Must be one of the listed packets where the list corresponds to the packet number in the capture file.

Ex: -xP:1-5,9,15 would only send packets 1 through 5, 9 and 15.

根据参数后的参数值(报文编号)发送指定的报文。可以在ethereal中确认报文的编号,然后把需要的报文发送。可以用于排除ARP报文。

F:"<filter>" - BPF filter. See the tcpdump(8) man page for syntax.

未知,以后补充。

-X <match> Send all the packets except those specified

可选参数,就是-x参数的取反,参数内容也是一样。

-v Verbose

可选参数,显示trpprep生成cache文件的处理过程,就是一些信息的即时打印。

-V Version

显示版本号。
Tcpprep使用小结

再构造cache文件的过程中我用的比较多的选项参数就-v、-P、-xB、-xP,一般都是client和server的模式,其它两种模式没有实验过,暂时还不知道怎么使用,bridge模式我使用过一次,结果发现报文是从一个网卡送出。

对于tcp和udp协议都做了测试,是可以支持的,icmp还没有成功。对于网络上的BT报文,只要你有pcap文件,也是可以构造cache文件来模拟完全真实的BT流量。

目前的使用就是这么多,感觉还是很有用的,tcpreplay的参数有一部分是和tcpprep重复,下面的帮助文件说明就不详细说明了,但是特殊有好用的参数会使用蓝色字体标记出来给予重视。存在的不足是还没有学会在nat模式下重放报文,现在所有的报文重放都是在透明模式下完成的。
Tcpreplay帮助文件说明

Usage: tcpreplay [args] <file(s)>

-A "<args>" Pass arguments to tcpdump decoder (use w/ -v)

可选参数,在使用tcpdump风格打印输出信息时,同时再调用tcpdump中的参数,默认已经带有“-n,-l”,所以一般看到的都是ip地址,而没有主机名的打印,注意这个是在tcpreplay使用了-v参数时,才能使用,不带-v不会报错,但是没有实际意义。格式:-vA “nnt”表示以tcpdump风格输出报文信息,并且不打印时间戳、主机名、端口服务名称。注意不要使用-c参数来指定打印的数据报文的个数,这样发送出去的报文也会变少。

-b Bridge two broadcast domains in sniffer mode

可选参数,没有用过

-c <cachefile> Split traffic via cache file

双网卡回放报文必选参数,后面紧跟cache文件名,该文件为tcpprep根据对应的pcap文件构造出来。

-C <CIDR1,CIDR2,...> Split traffic by matching src IP

可选参数,

-D Data dump mode (set this BEFORE -w and -W)

可选参数,把应用层的数据,使用dump mode写入到指定文件中去,和-w、-W参数一起使用。

-e <ip1:ip2> Specify IP endpoint rewriting

可选参数,指定端点的ip,即把发送报文的和接收的报文的ip都修改称对应的参数值中指定的ip,但是这样发送的出的报文不会区分client和server,还没有发现使用的地方。

-f <configfile> Specify configuration file

可选参数,指定配置文件,目前不会使用。

-F Fix IP, TCP, UDP and ICMP checksums

可选参数,在发送报文时,自动纠正错误的校验和。对测试DUT的校验和检验还是有用的。

-h Help

显示帮助文件。

-i <nic> Primary interface to send traffic out of

双网卡回放报文必选参数,指定主接口。

-I <mac> Rewrite dest MAC on primary interface

可选参数,重写主网卡发送出报文的目的MAC地址。

-j <nic> Secondary interface to send traffic out of

双网卡回放报文必选参数,指定从接口。

-J <mac> Rewrite dest MAC on secondary interface

可选参数,重写从网卡发送出报文的目的MAC地址。

-k <mac> Rewrite source MAC on primary interface

可选参数,重写主网卡发送报文的源MAC地址。

-K <mac> Rewrite source MAC on secondary interface

可选参数,重写从网卡发送报文的源MAC地址。

-l <loop> Specify number of times to loop

可选参数,指定循环的次数,测试过程发现不是那么好用,有待确认。

-L <limit> Specify the maximum number of packets to send

可选参数,指定最大的发包数量。可以在确认连接的调试时使用。

-m <multiple> Set replay speed to given multiple

可选参数,指定一个倍数值,就是必默认发送速率要快多少倍的速率发送报文。加大发送的速率后,对于DUT可能意味着有更多的并发连接和连接数,特别是对于BT报文的重放,因为连接的超时是固定的,如果速率增大的话,留在session表中的连接数量增大,还可以通过修改连接的超时时间来达到该目的。

-M Disable sending martian IP packets

可选参数,表示不发送“火星”的ip报文,man文件中的定义是0/8、172/8、255/8。

-n Not nosy mode (not promisc in sniff/bridge mode)

可选参数,在使用-S参数,不对混杂模式进行侦听。没有测试过。

-N <CIDR1:CIDR2,...> Rewrite IP's via pseudo-NAT

可选参数,通过伪造的NAT,重写IP地址。这个参数应该有很重要的应用,目前没有测试使用。

-O One output mode

可选参数,没有测试使用

-p <packetrate> Set replay speed to given rate (packets/sec)

Tcpreplay 的详细介绍:请点这里
Tcpreplay 的下载地址:请点这里

  • 1
  • 2
  • 下一页

相关内容