记阿里云主机部署Tcpcopy 解决:[warn] many connections can't be established

  • 重点

由于,最近业务测试需要:需将流量copy到测试环境,这里使用tcpcopy工具。tcpcopy工具这里我就不复述介绍、原理了,官网上都有,安装方式也很详细。
https://github.com/session-replay-tools/tcpcopy,
git://github.com/session-replay-tools/intercept.git
git://github.com/session-replay-tools/tcpcopy.git


我本来在内网环境物理机上已经搭建了一套tcpcopy环境,过程还算顺利。只有在添加路由方面需要注意目标服务器和辅助服务器需在同一个内网。
好!言归正传。
还是业务需求,需在阿里云上也搭建一套同样的环境。
online server:192.168.10.1
assistant server:192.168.10.2
Target Server:192.168.10.3
步骤与之前相同,在同一个内网环境,环境很快就搭建好了。
服务启动!!!
问题来了:[warn] many connections can’t be established
tcpcopy日志:
[notice] active:31,rel:114,obs del:0,tw:16
[notice] conns:0,resp:0,c-resp:0
[notice] resp fin:0,resp rst:0
[notice] send:275,send content:0
[notice] send syn:145, fin:0,reset:130
[notice] reconnect:0,for no syn:119
[notice] retransmit:0
[notice] recv packs after retransmission:0
[notice] syn cnt:26,all clt:1143,clt cont:380
[notice] total cont retransmit:0, frag:0
[notice] total captured packets:104968
[warn] many connections can’t be established

辅助服务器日志:

目标服务器抓包:

在线上服务器、目标服务器上同时抓包,发现只有发送包,却没有返回包。

去网上到处百度找解决方案,在官网GitHub上找了几个方案:

一、阿里云环境下的tcpcopy环境部署参考 #336
云环境下,安全策略可能会干扰测试的进行。
采用如下步骤可以规避麻烦:
1、测试机器和intercept部署到一台机器
2、tcpcopy端-c参数采用tcpcopy所在的线上机器ip地址
3、在线上机器设置iptables黑洞来过滤掉测试服务器的响应包
iptables -I INPUT -p tcp --sport 测试服务的端口 -j DROP -s 测试服务所在机器的ip地址
4、千万要注意在测试服务器不要设置路由了,否则会受到干扰

问题依旧!pass!

二、在部分云平台环境下,需要用到传统架构,1.0版本如何编译? #279
tcpcopy方式不变,intercept需要如下改变:
如何configure:
./configure --traditional,这种方式等同于1.0以下版本的默认方式
intercept 将采用iptables的方式来获取响应包,并干掉响应包

具体运行方式:
如果采用IP Queue模块(内核<3.5,默认采用IP Queue):
1 # modprobe ip_queue # if not running
2 # iptables -I OUTPUT -p tcp --sport port -j QUEUE
3 # ./intercept
or
如果采用 NFQueue模块(内核>=3.5,默认采用NFQueue):
1 # iptables -I OUTPUT -p tcp --sport port -j NFQUEUE
2 # ./intercept
这里需要注意,iptables命令中的port是变量,应根据具体应用项目而定。
然而,出现了其他问题,pass!

三、看到有人说在云环境中,需要在vpc中设置路由。也去试了,发现没什么用。

重点

最后,在官网issue中看到这篇解答:

新架构解决方案:
先在在线服务器端telnet到测试服务器的端口,看看网络路径是是否是通的,如果不通,先解决掉这个问题再继续下面的诊断。

假设tcpcopy测试过程中,测试服务器上面的上层应用没有收到任何请求

判断第一次握手数据包,即syn数据包,能否到达测试服务器

1、如果syn数据包能够到达测试服务器,分为如下几种情况:

1.1) 抓包仅仅只有syn数据包
在测试服务器利用tcpdump 抓包,能看到被复制的syn数据包都过来了,说明已经到达了测试服务器的数据链路层。
如果利用netstat 查看是否有应用的连接,如果没有,说明数据包在IP 层给drop 掉了,请查看是否有rpfilter 设置,如果有,去掉此设置,一般即可解决此问题。
如果没有设置rpfilter,那么确认一下iptables 设置有没有冲突,如果有,请先整理好iptables 相关规则。

1.2) syn数据包后面紧跟reset数据包(注意:同一个session中,syn和reset数据包相隔不到1s)说明路由设置有问题或者有冲突,导致了响应包直接返回给真实的客户端了.

1.3)测试服务器有响应包(第二次握手数据包)
去辅助服务器进行抓包,看看第二次握手数据包有没有到达辅助服务器:
a)如果没有到达,也说明路由设置没有生效,因此intercept捕获不到第二次握手数据包,回放就无法继续下去,通常可以采用的方案是让intercept直接运行在测试服务器上面(注意:路由设置不变,且tcpcopy的-c参数不能设置成tcpcopy连接intercept所用的ip地址,否则tcpcopy连接不上intercept)
b)如果捕获到了第二次握手数据包,查看是否有ip forward设置,如果设置了,需要关掉此设置,否则这些响应包会直接返回客户端,干扰测试的进行

2、如果不能到达测试服务器,又分为两个部分:

2.1) 在在线服务器利用tcpdump抓包,能抓到tcpcopy转发的数据包
如果能够抓到,说明路途过程中被干掉了,可以尝试利用tcpcopy的-c参数,修改客户端ip地址成合法的ip地址,最极端一点的就是修改成tcpcopy所在机器的ip地址(注意:存在nat的问题,而且如果intercept运行在测试服务器,需要注意tcpcopy的-c参数不能设置成tcpcopy连接intercept所用的ip地址,否则tcpcopy连接不上intercept)

2.2) 在在线服务器利用tcpdump抓包,不能抓到tcpcopy转发的数据包
2.2.1) 在tcpcopy的log内,看不到任何all clt:xx信息,说明tcpcopy无法从ip层抓包这种时候就采用–pcap-capture的方式来抓包,设置-F参数(例如’tcp and dst port 80 and dst host 10.100.1.2’)和-i参数(网络接口),避开默认的ip层抓包,改为从数据链路层抓包。

2.2.2) 在tcpcopy的log内,能够看到all clt:xx,xx >0,说明tcpcopy抓到数据包了。
这种情况说明tcpcopy发送数据包后,在在线机器的ip层被过滤掉了,检测iptables对output chain的限制等内容。如果是iptables的问题,而在线又不允许修改,采用–pcap-send从数据链路层的方式来发包(有一定难度,可以参考http://blog.csdn.net/wangbin579/article/details/10148247 ).

将辅助服务器和目标服务器放到一起,然后在此机器上设置一条路由:route add -host 192.168.10.100 gw 192.168.10.3
注:192.168.10.100 为内网同网段没有使用的固定ip。
在线上服务器:
/usr/local/tcpcopy/sbin/tcpcopy -x 8011-192.168.10.1:8207 -s 192.168.10.3:36526 -c 192.168.10.100 -l ./tcpcopy.log -d

查看日志,数据正常了
抓包数据也正常了,测试端收到数据。
至此问题解决。

Tcpcopy:[warn] many connections can't be established(阿里云)相关推荐

  1. 云服务器(阿里云)安装kafka及相关报错处理(WARN Connection request from old client /58.247.201.56:31365; will be dropp)

    linux下载:wget http://mirrors.hust.edu.cn/apache/kafka/2.0.0/kafka_2.12-2.0.0.tgz 云服务器安装kafka,部署zookee ...

  2. Prometheus 使用阿里云邮件推送发送告警邮件

    我们在文章 <使用 docker-compose 搭建 prometheus 监控系统> 的基础上,增加 prometheus 的告警功能. Prometheus 指标的收集存储与告警是分 ...

  3. IBM Lotus Connections 2.5 评审指南

    转自:http://www.ibm.com/developerworks/cn/lotus/dw-l-reviewersguide/index.html 1 简介 在过去几年中,Web 2.0 技术的 ...

  4. tcpcopy简单用法

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

  5. The authenticity of host 'izwz9c8l39itikxj328wwuz (IP地址)' can't be established.

    在使用SecureCRT远程连接阿里云ECS时,启动hadoop: 输入命令:./sbin/start-dfs.sh 报错如下: The authenticity of host 'izwz9c8l3 ...

  6. SSH The authenticity of host can’t be established Are you sure you want to continue connecting

    SSH连接云服务器提示The authenticity of host 'ip' can't be established.什么意思?码笔记来详细说下SSH ECDSA key fingerprint ...

  7. established 太多_最近tcp连接数ESTABLISHED一直比较高 显示ip都是cdn的,cpu占用比较高怎么办...

    近几个月以来吧,开始每天会有半小时到一小时连接数特别高,导致CPU100%. 中间变成几周来一次这种情况. 最近几天变成一种常态了,cpu基本在60%-90%之间,一天中这种情况会持续大半天或更久. ...

  8. UserWarning: Workbook contains no default style, apply openpyxl‘s default warn no default style 解决方案

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

  9. 流量复制-----tcpcopy的使用(1)

    前言 TCPCopy是基于网络栈,TCP协议的流量复制,常用的场景是把线上流量复制到测试环境,模拟线上用户操作,让测试机和真实的用户交互,让测试环境在正式灰度前暴露问题,用来排查线下不容易重现的问题, ...

最新文章

  1. 中国科学家研发新的全基因组组装算法
  2. 阿里P8连肝一周整理出这份python自动化测试实战PDF
  3. HDU SPFA算法 Invitation Cards
  4. 计算机设备维修税率是多少,设备维修税率是多少
  5. lync2013 错误: 已为不同的传输层安全性(TLS)目标找到类型为“McxInternal”且完全限定的域名(FQDN)为...
  6. kubernetes in action - Replication Controller
  7. “模块计算机类型“x64”与目标计算机类型“X86”冲突解决方案
  8. linux的shell脚本if语句,Shell脚本编程之判断语句
  9. java构造函数_Java开发人员也会犯的十大错误
  10. java 传绝对路径无效_又传噩耗!知名主持人小济南因突发肺栓塞不幸去世,享年36岁...
  11. java表格数据导出到Excel案例
  12. 能源行业的作业成本法管理
  13. k8s部署prometheus的相关配置
  14. SLAM【十】回环检测
  15. java中的常见异常1 -- 新手上路,减速慢行
  16. Linux 部署开源WAF模块 ModSecurity
  17. VMware安装window8系统
  18. Protobuf3 google protobuf
  19. Android StatusBar 黑底白字
  20. Ajax,Axios,Fetch的学习,对比和使用

热门文章

  1. Text Scanner for Mac(超快速ocr文字识别功能介绍)
  2. SQL语句——对所有员工的薪水按照salary进行按照1-N的排名
  3. DataComOLT 开局配置指导思路
  4. Airsim Python API文档整理(1.3.1版本)
  5. 帝国cms php mip提交,帝国cms mip改造之newstext 中图片标签的处理
  6. 手机锁屏弹出通知 php,Notification通知在OPPO手机上不弹出提示?
  7. iOS 百度定位实现
  8. for循环 while循环 do while循环流程图画法
  9. iPhone 14将采用挖孔屏?不全是,只有两款采用挖孔屏
  10. 类的概念以及定义方法