TCPCopy1.0部署

TCPCopy是一种请求复制(所有基于tcp的packets)工具,可以把在线流量导入到测试系统中去。
新版tcpcopy的架构图
TCPCopy1.0部署
工作流程介绍:
TCPcopy 从数据链路层 copy 端口请求,然后更改目的 ip 和目的端口。
将修改过的数据包传送给数据链路层,并且保持 tcp 连接请求。
通过数据链路层从 online server 发送到 target server。
在数据链路层解封装后到达TS: Application 响应的服务端口。
等用户请求的数据返回结果后,回包走数据链路层。
通过数据链路层将返回的结果从 target server 发送到 assistant server。注:target server 只有一条默认路由指向 assistant server。
数据到达 assistant server 后被 intercept 进程截获。
过滤相关信息将请求状态发送给 online server 的 tcpcopy,关闭 tcp 连接。
线上服务器(online server):想复制流量的那一台服务器,安装tcpcopy将流量复制一份到测试服务器 测试服务器(test server):需要把待测试应用需要被捕获的响应数据包信息路由到辅助服务器assistant server 上面 辅助服务器(assistant server):需要安装intercept,我们在数据链路层截获到响应包,从中抽取出有用的信息,再返回给相应的tcpcopy
github项目介绍,参考地址:https://github.com/wangbin579/tcpcopy
1、配置环境
TCPCopy V1.0.0
OS:线上服务器 –> 10.0.5.150
AS:辅助服务器 –> 10.0.5.152
TS测试服务器 –> 10.0.5.153
2、线上服务器
tcpcopy下载地址:
安装依赖包
yum -y install libpcap-devel
tar tcpcopy-1.0.0.tar.gz
cd tcpcopy-1.0.0
./configure –prefix=/usr/local/tcpcopy/ (默认是raw_socket抓包方式)
make
make install
查看版本:
/usr/local/tcpcopy/sbin/tcpcopy -v
3、辅助服务器:
intercept下载地址:
安装依赖包
yum -y install libpcap-devel libpcap
tar xvf   intercept-1.0.0.tar.gz
cd intercept-1.0.0
./configure –prefix=/usr/local/intercept/ (默认是raw_socket抓包方式)
make
make install
查看版本:
/usr/local/intercept/sbin/intercept -v
实时copy示例:
1、先在辅助服务器上开启intercept,步骤不能错,没有intercept的话,tcpcopy启动不起来:
/usr/local/intercept/sbin/intercept -i eth0 -F ‘tcp and src port 80’ -d
  • -i, intercept会监听端口,和tcpcopy进行通信,-i就是指定监听在哪个端口。tcpcopy启动的时候会来连这个端口,如果连不上,就会启动失败。
  • -F, 过滤规则,语法和pcap一样。
  • -d, 已守护进程方式运行
2、线上机器,装有TCPCopy
/usr/local/tcpcopy/sbin/tcpcopy -x 80-10.0.5.153:80 -s 10.0.5.152 -c 10.0.10.0 d
TCPCopy1.0部署
  • -x, 是指本机80端口的流量copy到10.0.5.153的80端口
  • -s, 指定intercept机器的地址,tcpcopy要和intercept建立连接
  • -c 伪装地址,在把流量复制到测试服务器的时候,修改数据包的源地址为10.0.10.0,这样方便指定路由。也可以写成10.0.10.x,这样源地址就是指定网段中的地址了。
  • -n 流量放大倍数,如果不是压测目的就不用指定这个参数。
  • -d 以守护模式运行。
  • -r 复制百分比
3、测试服务器上开启路由,辅助服务器要和测试服务器在一个子网里。
route add -net 10.0.10.0 netmask 255.255.255.0 gw 10.0.5.152
路由的意思是把发往10.0.10.0/24地址的数据包全部转给辅助服务器。
OS节点:
node-5-150 tcpcopy线上引流
AS节点:
node-5-152 intercpet压力测试请求
TS节点:
node-5-153 路由、链接情况
TCPCopy1.0部署
离线复制流量
使用tcpdump抓包
 tcpdump -i eth0 -w test.pcap tcp and port 80 -c 100
流量回放
./tcpcopy -x 80-10.0.5.153:80 -s 10.0.5.152 -c 10.0.10.0 d -i test.pcap

原创文章,作者:赛福,如若转载,请注明出处:https://www.safecdn.cn/linux/2018/11/tcpcopy1-0-install.html

发表评论

邮箱地址不会被公开。