我的网络应用程序中有一个我无法重现的错误.所有日志看起来都不错,或者至少我看不到任何异常.但它发生了.因此,我认为我可以记录进出网站的所有流量,等待发生错误,然后在我的测试环境中以某种方式重放它.它确实发生了!所以我有这样的数据:
tcpdump -s 1514 -X tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0) -Z root -C 20 -W 1000 -w capture.cap
而且我不知道我能用它做什么.我有一个运行相同版本的Web应用程序的虚拟机,我想重播其中的记录数据.我该怎么办呢?
[编辑]
我尝试在this example之后使用tcpreplay,但我的网络服务器没有记录任何流量.
我的测试机器(Fedora 8)在VMWare Player中运行.假设机器的IP是192.168.41.128并且它有一个网络接口:eth0(环回除外) – 在我的情况下,示例中的步骤#2和#3应该如何?我应该在同一台机器上还是从另一台机器上运行它?
解决方法
你有几个选择,所有这些选项都很酷,而且没有任何一款产品.需要一些装配.
> PERL application Sprocket能够重播网络流量. Here’s the raw PERL.
>那是TCPReplay.
>如果使用Varnish服务器,则可以使用varnishreplay.
>还有一个名为“PReplay”的工具适用于Windows机器.
> JWireReplay将重播tcpdump捕获.
您可能想要做的是忘记您已经检查过的日志,或者至少放弃重播这些文件的愿望.设置其中一个系统并以受控方式使用它来测试您的流量.