目的
为了验证新发版的软件上线后不会出问题,或者现场发生故障后期需要定位故障的时候,需要模拟实际用户的请求(请求速度和并发跟现场原始一致),所以有必要提供一种方法,实现现场用户请求的回放。
工具介绍
tcpreplay是一种回放工具,可以回放ethereal、wireshark、tcpdump抓下来的包。
该工具允许对报文进行修改(二层、三层、四层报文头都可修改)。
centos下安装方法:
#yum install -y tcpreplay
抓包
在linux下通过tcpdump抓UDP包,1小时生成1个文件,方法如下:
$tcpdump-i <nic> -s0 -G 3600 -w %Y_%m%d_%H%M_%S.pcap dst host <ip> and dst port <port> and udp
这里,nic指网卡名,ip:目的ip,port:目的端口
当然也可指定源IP和源端口
回放
回放过程相对复杂点。原因:
(1)源IP必须改掉。若采用抓包文件里的源ip,那么响应还会发给源ip。源ip会把响应数据当成攻击。
(2)源MAC和目的MAC要改掉。测试环境和现场环境服务器变化了,MAC地址也变了。二层包头里的MAC地址要修改,否则测试环境服务器收不到请求。