tcp copy

官网

 https://github.com/wangbin579/tcpcopy
 XCopy是由主要由网易的[王斌](http://weibo.com/tcpcopy)开发的一套流量复制测试工具。
 XCopy系列包括 TCPCopy、UDPCopy、MysqlCopy 等开源软件。

组成结构

从传统架构的 rawsocket+iptable+netlink,到新架构的 pacp+route,它经历了三次架构调整,
现如今的 TCPCopy 分为三个角色:
Online Server(OS):上面要部署 TCPCopy,从数据链路层(pcap 接口)抓请求数据包,发包是从IP层发出去;
Test Server(TS):最新的架构调整把 intercept 的工作从 TS 中 offload 出来。TS 设置路由信息,把 被测应用 的需要被捕获的响应数据包信息路由到 AS;
Assistant Server(AS):这是一台独立的辅助服务器,原则上一定要用同网段的一台闲置服务器来充当辅助服务器。AS 在数据链路层截获到响应包,从中抽取出有用的信息,再返回给相应的 OS 上的 tcpcopy 进程。
tcp copy_第1张图片
tcpcopy.png

安装

需要三台机器,线上机器、测试机器、辅助机器

首先,确保机器上的各种软件都具备
1.git软件
  yum install git-core
  apt-get install git    (二选一)
2.编译
   如果执行./configure 报:./configure: error: C compiler cc is not found
   解决方法:yum install gcc gcc-c++ ncurses-devel perl

   make :Command not found
   解决方法:make:avg._clnt.c :Command not found
  
   如果执行 ./configure  报:checking for pcap.h ... not found
   解决方法:yum -y install libpcap-devel

   执行make install 报错:checking for pcap_set_immediate_mode() ... not found
   解决方法:重新执行下configure还不行就重装下make

Online Server 上的抓包(线上机器安装tcp client )
  git clone git://github.com/session-replay-tools/tcpcopy.git
  cd  tcpcopy
  ./configure  --prefix=/目录     #默认/usr/local/bin
  make
  make install

  安装成功后,会在/usr/local 下出现tcpcopy命令

Assistant Server (辅助机器安装tcp intercept )
  git clone https://github.com/session-replay-tools/intercept.git
  cd intercept/
  ./configure
  make
  make install

  安装成功后,会在/usr/local 下出现intercept命令

服务启动

测试机器上加路由
route add -host 10.10.1.245 gw 10.10.2.242
解释:客户端(10.10.1.245)的请求走辅助服务器(10.10.2.242),如果是外网的应用,测试服务器的默认路由可以设置成辅助服务器。

or
route add -net   *.*.*.* netmask 255.255.255.0 gw  *.*.*.*

注意:辅助机器和测试机器是同一个网段

启动辅助服务器intercept(10.10.2.242)的tcpcopy server
/usr/local/bin/intercept -i eth1 -F 'tcp and src host 10.10.2.241 and src port 80' -d  -l intercept.log

启动线上服务器(10.10.2.240)的tcpcopy client
tcpcopy -x 10.10.2.240:80-10.10.2.241:80 -s 10.10.2.242 -i eth1 -d
解释:复制线上10.10.2.240:80的流量到测试服务器10.10.2.241:80,
     -s指定辅助服务器(intercept server),
     -i 指定从那块网卡抓包,
     -d 全流量复制
     -r 20 -d 复制20%的流量
     -n 2  -d 放大2倍流量

测试

 在其他机器上访问线上机器的一个接口
 在测试机器上看access日志看是否有假ip(10.10.2.240)过来的相应接口的请求

 1、如果在测试机上没有收到请求,先用tcpdump看下数据包情况(sudo tcpdump -n -vv -s 3600 -X host 10.10.2.240 and port 80 -w tcpcopy.cap)将生成的tcpcopy.cap文件导入到Wireshake(可分析tcp包)中,如果发现只有SYN和RST,联系OPS改宿主机配置(修改前宿主机会限制收2层信息)
 2、还不行的话看看是不是tcpcopy装的有问题,重装下~还不行就再联系下OPS

参考:
https://github.com/wangbin579/tcpcopy
https://www.oschina.net/p/tcpcopy
http://blog.csdn.net/h348592532/article/details/50547207
http://www.cnblogs.com/yuyijq/p/4541660.html (没有实践过)

你可能感兴趣的:(tcp copy)