依赖 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 流量复制的更多相关文章

  1. TCPCopy 线上流量复制工具

    TCPCopy是一种重放TCP流的工具,使用真实环境来测试互联网服务器上的应用程序. 一.描述: 虽然真实的实时流量对于Internet服务器应用程序的测试很重要,但是由于生产环境中的情况很负责,测试 ...

  2. goreplay HTTP-HTTPS流量复制工具

    goreplay相比tcpcopy只能复制HTTP和HTTPS的流量 goreplay编译很麻烦,就直接使用编译好的版本 gor_0.10.1_x64.tar.gz 支持centos5,测试的是cen ...

  3. 高并发 Nginx+Lua OpenResty系列(11)——流量复制/AB测试/协程

    流量复制 在实际开发中经常涉及到项目的升级,而该升级不能简单的上线就完事了,需要验证该升级是否兼容老的上线,因此可能需要并行运行两个项目一段时间进行数据比对和校验,待没问题后再进行上线.这其实就需要进 ...

  4. gor实现线上HTTP流量复制压测引流

    一.使用背景 gor 是一款go语言实现的简单的http流量复制工具,它的主要目的是使你的生产环境HTTP真实流量在测试环境和预发布环境重现.只需要在 代理例如nginx入口服务器上执行一个进程,就可 ...

  5. Nginx流量复制

    1. 需求 将生产环境的流量拷贝到预上线环境或测试环境,这样做有很多好处,比如: 可以验证功能是否正常,以及服务的性能: 用真实有效的流量请求去验证,又不用造数据,不影响线上正常访问: 这跟灰度发布还 ...

  6. 使用traefik进行流量复制

    文章转载自:https://mp.weixin.qq.com/s/nMMN7hAJK6SFn1V1YyxvHA Traefik 2.0 还引入了镜像服务,一种可以将流入流量复制并同时将其发送给其他服务 ...

  7. nginx mirror/post_action+gor实现https流量复制

    关于gor: 参考: https://www.cnblogs.com/jinjiangongzuoshi/p/11773070.html https://github.com/buger/gorepl ...

  8. nginx_mirror_module流量复制在项目中的应用

    参考文档:https://my.oschina.net/andChow/blog/2873870 https://blog.csdn.net/lancerh/article/details/88645 ...

  9. 使用tcpcopy拷贝线上流量压测测试环境

    tcpcopy项目地址:https://github.com/session-replay-tools/tcpcopy 作者地址:http://blog.csdn.net/wangbin579 1:环 ...

随机推荐

  1. [洛谷P2495][SDOI2011]消耗战

    题目大意:有一棵$n(n\leqslant2.5\times10^5)$个节点的带边权的树,$m$个询问,每次询问给出$k(\sum\limits_{i=1}^mk_i\leqslant5\times ...

  2. hdu1950 Bridging signals

    LIS nlogn的时间复杂度,之前没有写过. 思路是d[i]保存长度为i的单调不下降子序列末尾的最小值. 更新时候,如果a[i]>d[len],(len为目前最长的单调不下降子序列) d[++ ...

  3. [AHOI2009]最小割 最小割可行边&必须边

    ~~~题面~~~ 题解: 做这题的时候才知道有最小割可行边和必须边这种东西..... 1,最小割可行边, 意思就是最小割中可能出现的边. 充要条件: 1,满流 2,在残余网络中找不到x ---> ...

  4. JUC包中的分而治之策略-为提高性能而生

    一.前言 本次分享我们来共同探讨JUC包中一些有意思的类,包含AtomicLong & LongAdder,ThreadLocalRandom原理. 二.AtomicLong & Lo ...

  5. POJ.2142 The Balance (拓展欧几里得)

    POJ.2142 The Balance (拓展欧几里得) 题意分析 现有2种质量为a克与b克的砝码,求最少 分别用多少个(同时总质量也最小)砝码,使得能称出c克的物品. 设两种砝码分别有x个与y个, ...

  6. Matrix-Tree定理题表

    矩阵树这个东西……并不懂什么基尔霍夫矩阵……背了一下结论……(顺便用这个东西加强了一下矩阵)(打板子的时候还是该取负取负,因为不取负才有可能是负数,最后答案一定是正数???(ryf说一定是这样))bz ...

  7. 2017-7-18-每日博客-关于Linux下的history的常用命令.doc

    History history命令可以用来显示曾执行过的命令.执行过的命令默认存储在HOME目录中的.bash_history文件中,可以通过查看该文件来获取执行命令的历史记录.需要注意的是.bash ...

  8. Friendship POJ - 1815 基本建图

    In modern society, each person has his own friends. Since all the people are very busy, they communi ...

  9. 【题解】Weird journey Codeforces 788B 欧拉路

    传送门:http://codeforces.com/contest/788/problem/B 好题!好题! 首先图不连通的时候肯定答案是0,我们下面讨论图联通的情况 首先考虑,如果我们每条边都经过两 ...

  10. \(\rm LightOJ 1371 - Energetic Pandas 简单计数+组合\)

    http://www.lightoj.com/volume_showproblem.php?problem=1371 题意:给你n根竹子,和n只熊猫(XD),每个熊猫只能选择重量不大于它的竹子,问有几 ...