TCPCopy

简介

TCPCopy是一种请求复制(所有基于tcp的packets)工具,可以把在线流量导入到测试系统中。

Architecture

如上图所示,tcpcopy由以下三个部分组成

online server

online server上运行tcpcopy,在网络层复制raw packets,tcpcopy修改包的目地址,发给测试机target server

target server

被测应用处理tcpcopy转发的请求,通过路由转发将结果传给assistant server

assistant server

运行intercept,接收从target server得到的response packets,从中抽取header,并将header发给运行在online server上的tcpcopy进程

安装

tcpcopy安装, online server

git clone http://github.com/session-replay-tools/tcpcopy
./configure --prefix=PATH --with-debug
make
make install

可选config参数:

--offline                   replay TCP streams from the pcap file
--pcap-capture              capture packets at the data link
--pcap-send                 send packets at the data link layer instead of the IP layer
--with-pfring=PATH          set path to PF_RING library sources
--set-protocol-module=PATH  set tcpcopy to work for an external protocol module
--single                    if intercept and tcpcopy are both configured with "--single" option, 
                            only one tcpcopy works together with intercept, 
                            and better performance is achieved.
--with-debug                compile tcpcopy with debug support (saved in a log file)

如果想要在Data Link层复制数据包,同时通过制定PF_RING库路径可以降低丢包率

如果想在Data Link层发送包,可以在config时添加–pcap-send来提高性能

intercept安装,assistant server

//Install GUN M4
wget http://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz
tar xvf m4-1.4.17.tar.gz
make 
make install

//Install flex
wget http://downloads.sourceforge.net/project/flex/flex-2.5.39.tar.xz
tar xvf wget flex-2.5.39.tar.xz
./configure
make 
make install 

//Install Bison
wget http://ftp.gnu.org/gnu/bison/bison-3.0.4.tar.gz
tar vxf bison-3.0.4.tar.gz
./configure
make
make install

//install libpcap
wget http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz
tar xvf ibpcap-1.0.0.tar.gz
cd ibpcap-1.0.0
./configure
make
make install


git clone http://github.com/session-replay-tools/intercept
./configure --prefix=PATH --with-debug
make
make install

配置运行

共三台测试docker 容器:

online server: 172.17.0.5
assistant server: 172.17.0.4
target server: 172.17.0.13

Online server, 启动tcpcopy

以root权限运行

./tcpcopy -x 80-172.17.0.13:80 -s 172.17.0.4 -d

-x,指定将80端口数据转发给172.17.0.13:80

-s,指定intercept所在的机器ip

Target server, 设置route

需要关闭ip_forward

route add -host 172.17.0.5 gw 172.17.0.4 

表示对客户ip为172.17.0.5的响应走网关172.17.0.4

assistant server,启动intercept

以root权限运行intercept服务器

./intercept -i eth0 -F 'tcp and src port 80' -d

注意事项

tcpcopy复制请求包,默认只更改包的目标地址,而源地址依然是客户端,所以复制过来的包在传输过程中可能会因为安全策略被当作无效或伪造的包被丢掉。要检测是否处于这一情况,可以通过让target server处于和online server同一网段和不同网段进行测试,若同一网段可到达而不同网段不可到达,那么存在上述的问题。

解决这一问题可以让online, assistant, target处于同一网段,不位于同一网段可以通过设置porxy,将tcpcopy路由到和assistant和target同一网段的ip上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值