最近因调试问题,需要一直进行tcpcopy,拿有问题的包进行测试。决定使用tcpcopy对录制脚本进行回放,以下为我操作的具体步骤。主要是三块
1 下载安装具有离线回放功能的tcpcopy
2 使用tcpdump进行脚本录制
3 回放离线文件
一 tcpcopy下载安装
原微博里说0.98版本以上即可支持离线回放功能。保险起见,我下载了最新的即1.0.0版本的tcpcopy和intercept来测试离线回放。
tcpcopy的git路径:https://github.com/wangbin579/tcpcopy
intercept的git路径:https://github.com/wangbin579/intercept
分别上传到对应的服务器和客户端,进行安装
tcpcopy安装步骤:
1 上传至路径/opt/soft,并解压 tar -xzvf tcpcopy-1.0.0.tar.gz 2 cd /opt/soft/tcpcopy-1.0.0/进入路径,执行./configure --offline(若不能执行成功,则使用./configure --help进行查看) 3 make 4 make install
intercept安装步骤:
1 上传至路径/opt/soft,并解压 tar -xzvf intercept-1.0.0.tar.gz 2 cd /opt/soft/intercept-1.0.0/进入路径,执行./configure --offline(若不能执行成功,则使用./configure --offline进行查看) 3 make 4 make install
问题1 :“can't find pcap.h”(网卡流量监控软件),需要安装libpcap-devel。
1 yum list libpcap-devel*查到到对应的lib包名称 2 yum install libpcap-devel.x86_64
二 使用tcpdump录制pcap离线文件
tcpdump -i eth0 -w online.pcap tcp and port 80
-i eth0:eth0为网卡,获取方式可在liunx系统下执行ifconfig查看所有的网卡,选取需要的那个。 -w online.pcap:为获取pcap文件进行回放,可设置路径,e.g. -w /home/user/test.pcap tcp and port 80:截获端口为80的tcp请求,也可添加udp请求,和更改服务端口80,e.g. tcp and port 16001
-s 0:默认的话,tcpdump只显示部分数据包,-s snaplen是控制包长度的,默认是68字节,-s 0 则为全部字节,在使用过程中,如果添加-s则回放时会出现错误。可不使用该参数
三 回放
1 whereis tcpcopy,可在/usr/local/tcpcopy/sbin下发现tcpcopy命令 2 ./tcpcopy -x 16001-服务器ip:16001 -s 服务器ip -i /home/user/test.pcap 3 服务端抓包测试:tcpdump -n port 16001