目标:

将线上服务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. 从零开始学 Web 之 BOM(四)client系列

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  2. Python核心编程 | 浅谈闭包的使用

    1.函数的引用   >>> def test(): print('test:') >>> test <function test at 0x10ffad488 ...

  3. SpringBoot全局配置文件

    SpringBoot项目使用一个全局的配置文件application.properties或者是application.yml,在resources目录下或者类路径下的/config下,一般我们放到r ...

  4. Linux系列教程(三)——Linux学习技巧

    前面我们讲了Linux系统的详细安装教程,大家跟着教程一步一步的操作,应该能完美的完成安装.那么这篇博客跟大家聊聊如何来学习Linux. 1.工欲善其事必先利其器 ①.第一个问题:通过前面在虚拟软件中 ...

  5. 利用Redis发布订阅完成tomcat集群下的消息通知

    以下为个人想法,如果有说的不对的地方请各位大佬见谅! 这是博主的第一篇博客,可能排版以及一些描述有不合理的地方还请勿喷,希望大家尽可能的多给我这样的新人一些鼓励让我能在写博客的道路上走下去. 进入正题 ...

  6. [NOI 2017]蚯蚓排队

    Description 题库链接 蚯蚓幼儿园有 \(n\) 只蚯蚓.幼儿园园长神刀手为了管理方便,时常让这些蚯蚓们列队表演. 所有蚯蚓用从 \(1\) 到 \(n\) 的连续正整数编号.每只蚯蚓的长度 ...

  7. Struts2之类型转换

    jsp提交的数据全部是String类型,Struts2也是通过request.getParameter(name)取得String类型的数据,并通过拦截器将String转换成各种类型的数据,然后通过g ...

  8. jQuery学习(2)ajax()使用

      在上一篇分享JavaScript之使用AJAX(适合初学者)中,我们学习了如何在JavaScript中使用AJAX.由于jQuery出色的性能和简洁的写法,且它也支持AJAX的使用,所以,本次分享 ...

  9. [转]Building a REST-Backend for Angular with Node.js & Express

    本文转自:https://malcoded.com/posts/angular-backend-express Angular is a single page application framewo ...

  10. Oracle入门《Oracle介绍》第一章1-2 Oracle 实例

    Oracle实例:是后台进程和内存结构的集合 一.内存结构 1.Oracle 实例启动时分配系统全局区 a.数据库信息存储于SGA,由多个数据库进程共享 1.共享池是对SQL.PL/SQL程序进行语法 ...