tcpcopy 流量复制
依赖 libpcap
线上服务器安装
https://github.com/session-replay-tools/tcpcopy.git
下载后解压
#--pcap-capture 默认raw socket方式抓包,添加这个参数后改为pcap方式抓包,默认抓包方式不用加-F
#--pcap-send 测试端获取不到流量,iptables的问题,线上服务器又不允许修改时添加
./configure --prefix=/usr/local/tcpcopy --pcap-capture
make && make install
辅助服务器安装
https://github.com/session-replay-tools/intercept.git
下载后解压
./configure --prefix=/usr/local/intercept
make && make install
1.同网段环境
192.168.1.2 线上服务器
192.168.1.3 测试服务器(可以将辅助服务安装到测试服务上面)
192.168.1.4 辅助服务器
#启动http服务
192.168.1.2 192.168.1.3
python -m SimpleHTTPServer 8055
#启动辅助服务
192.168.1.4
/usr/local/intercept/sbin/intercept -i eth0 -F 'tcp and src port 8055' -d
192.168.1.2
#复制流量-c修改访问的ip
/usr/local/tcpcopy/sbin/tcpcopy -F 'tcp and dst port 8055' -x 8055-192.168.1.3:8055 -s 192.168.1.4 -c 172.16.55.x -d
192.168.1.3
#静态路由,将172.16.55的包全部转到辅助服务器
route add -net 172.16.55.0 netmask 255.255.255.0 gw 192.168.1.4
2.跨网段
192.168.1.2 线上服务器
192.168.2.2 测试服务器(可以将辅助服务安装到测试服务上面)
#启动http服务
192.168.1.2 192.168.2.2
python -m SimpleHTTPServer 8055
#启动辅助服务
192.168.2.2
/usr/local/intercept/sbin/intercept -i eth0 -F 'tcp and src port 8055' -d
192.168.1.2
#复制流量-c 包装为tcpcopy服务器上的网段ip,不能是和192.168.2.2通讯的ip,所以这里包装为192.168.1.3
/usr/local/tcpcopy/sbin/tcpcopy -F 'tcp and dst port 8055' -x 8055-192.168.2.2:8055 -s 192.168.2.2 -c 192.168.1.3 -d
3.iptables问题又无法修改,或者tcpcopy丢包、效率低
#注意这里安装时添加了--pcap-send
./configure --prefix=/usr/local/tcpcopy --pcap-capture --pcap-send #测试端获取不到流量,iptables的问题,线上服务器又不允许修改时添加
make && make install
192.168.1.2 线上服务器
192.168.2.2 测试服务器(可以将辅助服务安装到测试服务上面)
#启动http服务
192.168.1.2 192.168.2.2
python -m SimpleHTTPServer 8055
#启动辅助服务
192.168.2.2
/usr/local/intercept/sbin/intercept -i eth0 -F 'tcp and src port 8055' -d
192.168.1.2
#复制流量-c 包装为tcpcopy服务器上的网段ip,不能是和192.168.2.2通讯的ip,所以这里包装为192.168.1.3
#/usr/local/tcpcopy/sbin/tcpcopy -x 线上服务器端口@线上服务器MAC-测试服务器IP:测试服务器端口@线上服务器到测试服务器的下一跳MAC(同网段则是测试服务器MAC,不同网段则是线上服务器下一跳MAC) -o 与测试服务器通讯的接口 -c 包装的IP -s 辅助服务器IP -d
/usr/local/tcpcopy/sbin/tcpcopy -F 'tcp and dst port 8055' -x 8055@00:A3:81:CC:88:BD-192.168.2.2:8055@00:B3:A1:AC:C8:BA -o eth0 -c 192.168.1.3 -s 192.168.2.2 -d
dst是destination的缩写,表目的
src是source的缩写,表源
tcpcopy与intercept的-F写法与tcpdump的过滤方式一样
#参考#https://www.cnblogs.com/phennry/p/6382755.html?utm_source=itdadao&utm_medium=referral
#https://github.com/session-replay-tools/tcpcopy/issues/173
#https://blog.csdn.net/wangbin579/article/details/10148247
tcpcopy 流量复制的更多相关文章
- TCPCopy 线上流量复制工具
TCPCopy是一种重放TCP流的工具,使用真实环境来测试互联网服务器上的应用程序. 一.描述: 虽然真实的实时流量对于Internet服务器应用程序的测试很重要,但是由于生产环境中的情况很负责,测试 ...
- goreplay HTTP-HTTPS流量复制工具
goreplay相比tcpcopy只能复制HTTP和HTTPS的流量 goreplay编译很麻烦,就直接使用编译好的版本 gor_0.10.1_x64.tar.gz 支持centos5,测试的是cen ...
- 高并发 Nginx+Lua OpenResty系列(11)——流量复制/AB测试/协程
流量复制 在实际开发中经常涉及到项目的升级,而该升级不能简单的上线就完事了,需要验证该升级是否兼容老的上线,因此可能需要并行运行两个项目一段时间进行数据比对和校验,待没问题后再进行上线.这其实就需要进 ...
- gor实现线上HTTP流量复制压测引流
一.使用背景 gor 是一款go语言实现的简单的http流量复制工具,它的主要目的是使你的生产环境HTTP真实流量在测试环境和预发布环境重现.只需要在 代理例如nginx入口服务器上执行一个进程,就可 ...
- Nginx流量复制
1. 需求 将生产环境的流量拷贝到预上线环境或测试环境,这样做有很多好处,比如: 可以验证功能是否正常,以及服务的性能: 用真实有效的流量请求去验证,又不用造数据,不影响线上正常访问: 这跟灰度发布还 ...
- 使用traefik进行流量复制
文章转载自:https://mp.weixin.qq.com/s/nMMN7hAJK6SFn1V1YyxvHA Traefik 2.0 还引入了镜像服务,一种可以将流入流量复制并同时将其发送给其他服务 ...
- nginx mirror/post_action+gor实现https流量复制
关于gor: 参考: https://www.cnblogs.com/jinjiangongzuoshi/p/11773070.html https://github.com/buger/gorepl ...
- nginx_mirror_module流量复制在项目中的应用
参考文档:https://my.oschina.net/andChow/blog/2873870 https://blog.csdn.net/lancerh/article/details/88645 ...
- 使用tcpcopy拷贝线上流量压测测试环境
tcpcopy项目地址:https://github.com/session-replay-tools/tcpcopy 作者地址:http://blog.csdn.net/wangbin579 1:环 ...
随机推荐
- 【刷题】BZOJ 3510 首都
Description 在X星球上有N个国家,每个国家占据着X星球的一座城市.由于国家之间是敌对关系,所以不同国家的两个城市是不会有公路相连的. X星球上战乱频发,如果A国打败了B国,那么B国将永远从 ...
- 【刷题】BZOJ 3527 [Zjoi2014]力
Description 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. Input 第一行一个整数n. 接下来n行每行输入一个数,第i行表示qi. n≤100000,0<qi ...
- BZOJ 1342: [Baltic2007]Sound静音问题 | 单调队列维护的好题
题目: 给n个数字,一段合法区间[l,l+m-1]要求max-min<=c 输出所有合法区间的左端点,如果没有输出NONE 题解: 单调队列同时维护最大值和最小值 #include<cst ...
- POJ 2728 Desert King | 01分数规划
题目: http://poj.org/problem?id=2728 题解: 二分比率,然后每条边边权变成w-mid*dis,用prim跑最小生成树就行 #include<cstdio> ...
- bzoj1297: [SCOI2009]迷路(矩阵乘法+拆点)
题目大意:有向图里10个点,点与点之间距离不超过9,问从1刚好走过T距离到达n的方案数. 当时看到这题就想到了某道奶牛题(戳我).这两道题的区别就是奶牛题问的是走T条边,这道题是每条边都有一个边权求走 ...
- httpclient post请求带参数返回数据乱码问题解决
客户端代码: //带参数的post请求 @Test public void doPostWithParam() throws Exception { CloseableHttpClient httpC ...
- ACE线程管理机制-并发控制(1)
转载于:http://www.cnblogs.com/TianFang/archive/2006/12/04/581771.html ACE Lock类属 锁类属包含的类包装简单的锁定机制,比如互斥体 ...
- Qt ------ 内存回收机制、new对象的回收
写在前面的总结: 建议:对于不能指定父对象的对象(对象通过moveToThread()移入其他线程.没有继承QObject的类产生的对象),在其他线程通过deleteLater()内存回收,其他通过指 ...
- 深入探析 Rational AppScan Standard Edition 多步骤操作
序言 IBM Rational AppScan Standard(下文简称 AppScan)作为面向 Web 应用安全黑盒检测的自动化工具,得到业界的广泛认可和应用.很多人使用 AppScan 时都采 ...
- 理解JavaScript的prototype和__proto__
首先,要明确几个点: 1.在JS里,万物皆对象. 方法(Function)是对象,方法的原型(Function.prototype)是对象.因此,它们都会具有对象共有的特点.即:对象具有属性__pro ...