Tcpreplay命令详解
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 的下载地址:请点这里
|
评论暂时关闭