目标:

将线上服务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. python-UiAutomator学习&使用

    一.安装 源码地址: https://github.com/xiaocong/uiautomator#basic-api-usages ①下载zip包,解压到本地目录下 ②进入对应目录下,执行 $su ...

  2. OpenStack 单元测试

    OpenStack 单元测试 OpenStack开发——单元测试 本文将介绍OpenStack单元测试的部分.本文将重点讲述Python和OpenStack中的单元测试的生态环境. openstack ...

  3. 微服务架构集大成者—Spring Cloud (转载)

    软件是有生命的,你做出来的架构决定了这个软件它这一生是坎坷还是幸福. 本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义. 1 背景 2 ...

  4. 基于Flume的日志收集系统方案参考

    前言 本文将简单介绍两种基于Flume的日志收集系统可能的架构方案,可根据不同的实际场景参考使用. 方案一 示例图如下: 说明: 每个日志源(http上报.日志文件等)对应一个Agent-c用于收集对 ...

  5. JavaWeb学习 (七)————HttpServletResponse对象(一)

    一.HttpServletResponse对象介绍

  6. shell的编程结构体(函数、条件结构、循环结构)

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.1 shell函数 在shell中,函数可以被当作命令一样 ...

  7. asp.net session mode 几种状态 (转)

    开发asp.net应用时,修改web.config中的SessionState节点. stateserver模式: <sessionState mode="StateServer&qu ...

  8. (转)Visual Studio 2013新功能预览:增代码的透明度和可追溯性

    微软打破了Visual Studio两年升级一次的传统,Visual Studio 2012发布还不足一年,微软就计划发布了Visual Studio 2013了.在今天的TechEd大会上,微软宣布 ...

  9. [PHP] 算法-镜像二叉树的PHP实现

    操作给定的二叉树,将其变换为源二叉树的镜像. 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 思 ...

  10. Java高级类特性(一)

    一.继承性 1)继承的使用:权限修饰符 class A extends B{}:2)子类:A 父类(基类 SuperClass):B3)子类继承父类后,父类中声明的属性.方法,子类都可以获取到明确:当 ...