目标:

将线上服务lighttpd(8000端口)的流量引流到线下测试机

一、测试机:

tcpcopy-server,接收流量

modprobe ip_queue
iptables -L
iptables -I OUTPUT -p tcp --sport 8000 -j QUEUE
./intercept -d -l intercept.log
-d:后台
-l:指定log

二、线上:

tcpcopy-client,复制流量

./tcpcopy -x 8000-10.46.43.14:8000 -d -n 1 -l tcpcopy.log
-d:后台
-l:指定log
-n:流量复制的份数

三、关闭:

killall intercept
killall tcpcopy
iptables -F
注意:
当测试机打开
iptables -I OUTPUT -p tcp --sport 8000 -j QUEUE
将无法直接访问测试机的该服务,只能通过日志观察
 
tcpcopy-0.9.10tcpcopy.tar
 
 
抓包发现有意思的地方
A:发起请求的机器:cq02-map-wpng03.cq02
B:线上机器:cq01-map-lbsop-hbase00.cq01
C:测试机器:cq01-map-lbsop-hbase01.cq01
一:正常copy流量,三个机器和测试机的抓包图
A机器:无和C交互。因为测试机器iptables -I OUTPUT -p tcp --sport 8000 -j QUEUE 把出的流量屏蔽了(放入queue,intercept去捕获,发给B的tcpcopy进程)
 
B机器:有自己和C的交互,也有假A机器和测试机的交互(伪装的,否则本机怎么会抓到来源和目的都不是自己的机器呢,说明肯定实际是过了本机网卡,不过把协议头里的ip改了);每个发给C的请求都有两份,两份的seq完全一样,但是所有包的ack不一样(ack不一样是因为ack需要响应C发的,在测试机发的seq上加1,否则如果照抄自己回复给真A的,会露馅)
 
C机器:有假A发给我的包(伪装的,其实是B机器发的),但没有回复出任何的包(因为iptables封了)。
 
二:去掉C机器iptables的封禁
A机器:有C机器发给A的第二次握手,和A发给C的复位包(第二次握手莫名奇妙,A并没有发给C第一次握手)
B机器:有真A发给B的所有正常包;有假A发给C的第一次握手包。第二次握手没有,因为刚才C收到假A第一次握手,回第二次握手给真A(C无法区分真假),真A莫名奇妙,把这次请求复位了。假A也就没法干活了。还有假A发给C的复位确认包(133s后)
C机器:有假A发来的第一次握手,会给真A的第二次握手,真A发来的复位包,假A发来的复位响应包。

tcpcopy用法的更多相关文章

  1. tcpcopy简单用法

    这篇文章介绍下网易开源的流量重放(replay)工具TCPCopy,说是简单介绍,绝对不是谦虚,因为自己了解的确实也不多.为什么不甚了解呢,大家可以到TCPCopy的官方仓库看看,https://gi ...

  2. 容量测试之tcpcopy引流模式

    tcpcopy 给用户提供了很多命令参数来修改引流的模式和设置,详细可以查阅手册.在这里把几种常见的引流方式做个归纳小结,以tcpcopy传统架构使用命令举例. 1.分布式引流 用法:Tcpcopy可 ...

  3. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  4. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  5. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  6. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  7. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

  8. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  9. 【JavaScript】innerHTML、innerText和outerHTML的用法区别

    用法: <div id="test">   <span style="color:red">test1</span> tes ...

随机推荐

  1. [每天解决一问题系列 - 0005] WiX Burn 如何校验chained package的合法性

    问题描述: 项目中使用Wix burn打包,内部包含了多个MSI.有时候会遇到如下错误 Error 0x80091007: Failed to verify hash of payload: Setu ...

  2. Hadoop2源码分析-RPC探索实战

    1.概述 在<Hadoop2源码分析-RPC机制初识>博客中,我们对RPC机制有了初步的认识和了解,下面我们对Hadoop V2的RPC机制做进一步探索,在研究Hadoop V2的RPC机 ...

  3. win7下安装mongodb

    1.下载mongodb,解压2.新建路径,如D:\mongodb,将解压出来的bin目录复制到该目录下3.在D:\mongodb目录下在新建data目录,在data目录下新建两个目录:db和log.4 ...

  4. CMMI三个过程域的流程及达到特定目标、共性目标的要求(RD需求管理过程,PI产品集成过程,TS技术解决方案)

    RD需求管理过程 通过面谈的方式获取相关干系人关于产品生命周期各阶段的需求.期望,限制条件,接口 将相关干系人的需求.期望,限制条件,接口转化成用户需求说明书 依据客户需求,确定产品或产品组件需求,形 ...

  5. RockChip RK3326 系统编译问题总结

    1. 序言 本文主要记录了RK3326平台系统编译过程中遇到的各种问题,并加以解决! 环境: 宿主Linux:Ubuntu 16.04 目标机:RK3326 (64bit) Toolchain:gcc ...

  6. jQuery中的事件绑定的几种方式

    jQuery目前有on(),bind(),delegate(),live()四种绑定方式,但是随着版本的不断更新,有的方式也相应的被淘汰掉 [band()方式绑定] 3.0版本之前的绑定方式比较常用的 ...

  7. IOS 获取的时间显示为NAN 解决方法

    var regTime= item.BeginDate.replace(/\-/g, "/"); ------ item.BeginDate 我的日期年月日的    (/\-/g, ...

  8. [PHP] 数据结构-二叉树的创建PHP实现

    1.利用递归的原理,只不过在原来打印结点的地方,改成了生成结点,给结点赋值的操作if(ch=='#'){*T=NULL;}else{malloc();(*T)->data=ch;createFu ...

  9. 在CentOS下的docker容器中部署spring boot应用的两种方式

    我们通常在 windows 环境下开发 Java,而通常是部署在Linux的服务器中,而CentOS通常是大多数企业的首选,基于Docker的虚拟化容器技术,多数Java应用选择这种方式部署服务.本文 ...

  10. Git实战手册(三): stash解惑与妙用

    0. 介绍 教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 在实际项目开发中,总会遇到代码写到一半(没法去打commit),去开启新 ...