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