Table of Contents

TCPCopy 线上流量复制工具.

Github上的README讲的非常详细.

架构原理

当前版本是v1.0, 架构原理图:

Architecture Advance

以前的架构是(网上一些博客还是基于这个架构):

Architecture Traditional

(图片来源wangbin579/auxiliary)

以新架构为例,主要分三个部分:

两个工具:

测试程序在target server上运行

大致流程:

target server唯一要做的就是保证有路由可以让包发送到assistant server

几点注意的地方:

遇到的问题:

在编译安装intercept时, 遇到错误:

checking for pcap.h  not found

需要先安装:

 apt-get install libpcap0.8-dev

例子

服务器A(1.1.1.1)是线上机器, 服务器B(2.2.2.2)是测试机器, 需要将A的80端口流量复制到B的80端口

根据新架构, 将assistant server和target server放在一台机器上就行, 其实也就是在assistant server上部署web server来处理请求, 然后返回给自身的intercept.

assistant server/target server:

/usr/local/intercept/sbin/intercept -l /var/log/intercept.log -b 2.2.2.2 -i eth1 -F 'tcp and src port 80' -d

这里有一点需要注意, intercept默认监听的端口是36524, 所以相应的防火墙需要对这个端口打开.

online server:

/usr/local/tcpcopy/sbin/tcpcopy -l /var/log/tcpcopy.log -x 80-2.2.2.2:80 -s 2.2.2.2 -d

还有-c参数用于修改请求的client ip, 但是我这里改了后有问题, 暂时未解决.

另外还有个需要注意的地方, 因为tcpcopy的通信端口默认是36524, 所以如果有规则限制则要把这个端口做相应范围的开放

iptables -A INPUT -i eth1 -p tcp -s x.x.x.x/32 -m multiport --dports 36524 -j ACCEPT

参考