tcpreplay 是一种pcap包的重放工具,它可以将用ethreal、wireshark工具抓下来的包原样或经过任意修改后重放回去。它允许你对报文做任意的修改(主要是指对2层、3层、4层报文头),指定重放报文的速度等,这样tcpreplay就可以用来复现抓包的情景以定位bug,以极快的速度重放从而实现压力测试。

语法格式:tcpreplay [参数] [文件]

常用参数:

-A
-vA “nnt”表示以tcpdump风格输出报文信息,并且不打印时间戳、主机名、端口服务名称。注意不要使用-c参数来指定打印的数据报文的个数,这样发送出去的报文也会变少
-c 双网卡回放报文必选参数,后面紧跟cache文件名,该文件为tcpprep根据对应的pcap文件构造出来
-i 双网卡回放报文必选参数,指定主接口
-K 重写从网卡发送报文的源MAC地址
-O 没有测试使用

参考实例

将 ftp.pcap 文件进行 tcpprep 操作,制作 cache 文件:

[root@linuxcool ~]# tcpprep -an client -i ftp.pcap -o ftp.cache –v

重放 tftp 服务器上抓到的报文 * a、在 tftp 服务器上使用 ethereal 抓包,存为 tftp.pcap 文件。 b、将 pcap 文件进行 tcpprep 的操作,制作 cache 文件:

[root@linuxcool ~]# tcpreplay -c ftp.cache -i eth0 -j eth1 ftp.pcap -R –v 
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。