tcpcopy icon indicating copy to clipboard operation
tcpcopy copied to clipboard

mac OS机器上作为测试服务器不起作用

Open mrproliu opened this issue 5 years ago • 7 comments

目前有三台服务器,tcpcopy和interceptor在同一个网段中,test server在另外的网段。 tcpcopy: 10.1.201.128 interceptor: 10.1.200.8 test server: 10.71.11.50

tcpcopy命令: tcpcopy -x 21250-10.71.11.50:30880 -s 10.1.200.8 -c 100.100.100.100 -d -n 1 interceptor命令: intercept -i eth0 -F tcp and src port 30880 -d test server: sudo route -n add -net 100.100.100.100 -netmask 255.255.255.0 10.1.200.8 并且使用go启动30880端口。 在test server中已经关闭防火墙。 image

向tcpcopy服务器的21250机器发送tcp消息,在test server中使用wireshark抓包如下: image

mrproliu avatar Mar 20 '19 11:03 mrproliu

test server跟intercept不在一个网段,设置路由一般没用的。 建议参考来搭建: https://github.com/session-replay-tools/tcpcopy/issues/336

wangbin579 avatar Mar 21 '19 00:03 wangbin579

不好意思,mac os无法运行intercept的情况下,可以采用如下步骤:

1、在10.1.201.128,也即tcpcopy机器上运行intercept ./intercept -i eth0 -F 'tcp and src port 30880 and src host 10.71.11.50' -d

并设置iptables命令来干掉测试服务器返回的响应包: iptables -I INPUT -p tcp --sport 30880 -j DROP -s 10.71.11.50

2、tcpcopy端-c参数采用tcpcopy所在的线上机器ip地址 tcpcopy -x 21250-10.71.11.50:30880 -s 10.1.201.128 -c 10.1.201.128 -d -n 1 目的是利用tcpcopy的机器ip地址去访问测试机器,然后响应会回到tcpcopy机器,从而被intercept捕获,并最终被iptables干掉。

3、测试服务器不要设置路由信息

wangbin579 avatar Mar 21 '19 00:03 wangbin579

感谢您的及时回复!

这样测试是可以的,但是我们还有一个小问题。 我们希望test server是一个集群的模式,意思就是oneline server同样是一台,现在有两种方案,不清楚哪个在tcp copy层面是可实现的?

  1. tcpcopy 指定多个发送目标地址,轮训去发送。
  2. 在test server前增加一个类似于nginx的反向代理服务器,让nginx来进行处理负载机制。

mrproliu avatar Mar 21 '19 10:03 mrproliu

test server前面可以加上lvs如果能够有lvs的话或者nginx反向代理

wangbin579 avatar Mar 22 '19 01:03 wangbin579

但是有一个问题就是、就是不知道为什么没有到达test server? 在nginx上是否需要增加router或者iptables?

mrproliu avatar Mar 22 '19 01:03 mrproliu

如果是lvs,可以参考: https://blog.csdn.net/wangbin579/article/details/8612952

wangbin579 avatar Mar 27 '19 07:03 wangbin579

为什么没有达到test server,可以参考:

https://github.com/session-replay-tools/tcpcopy/issues/173 新架构部分

wangbin579 avatar Mar 27 '19 07:03 wangbin579