博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tcpcopy用法
阅读量:4689 次
发布时间:2019-06-09

本文共 1253 字,大约阅读时间需要 4 分钟。

目标:

将线上服务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.10
 
 
抓包发现有意思的地方
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发来的复位响应包。
posted on
2017-10-30 11:05 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/zlingh/p/7753619.html

你可能感兴趣的文章
全排列与 康托展开
查看>>
eclipse不格式化注释
查看>>
C语言结构体初始化(转载)
查看>>
系统剪切板的使用UIPasteboard
查看>>
arcgis for flex 学习笔记(一)
查看>>
Bootstrap如何禁止响应式布局 不适配
查看>>
C语言流程控制
查看>>
多线程—4种线程池
查看>>
函数(1)
查看>>
ip xfrm命令是做什么的?
查看>>
AtCoder - 2567 RGB Sequence
查看>>
谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解
查看>>
Jquery的parent和parents(找到某一特定的祖先元素)
查看>>
es6 属性及常用新属性汇总
查看>>
ASP.NET MVC 缓存使用示例
查看>>
Hash算法
查看>>
Android实现传感器应用及位置服务
查看>>
测试用例
查看>>
关于typedef的用法总结
查看>>
oracle常用函数
查看>>