-
Notifications
You must be signed in to change notification settings - Fork 36
tcpcopy
遇见王斌 edited this page Sep 10, 2024
·
3 revisions
TCPCopy 是用来做 TCP 重放的,常用的场景是把线上流量复制到测试环境,用来排查线下不容易重现的问题,或者对测试环境做压力测试。 TCPCopy 分为两部分,tcpcopy 和 intercept,很多文档都不会告诉你什么是 intercept。以把线上服务器流量复制到线下的场景为例,tcpcopy 运行在线上服务器,intercept 并不是运行在用来测试的服务器上,而是运行在一台辅助的服务器上。 备注:可以将测试服务器和辅助服务器放在一起
git 地址 tcpcopy
TCPCopy --> TCPCopy V1.1.0
- 线上服务器 --> 192.168.1.2【执行 tcpcopy 需要 root 权限】
- 测试 / 辅助服务器 --> 192.168.1.3 【执行 intercept 需要 root 权限】
wget https://github.com/session-replay-tools/tcpcopy/archive/v1.1.0.tar.gz
tar -zxvf v1.1.0.tar.gz
cd tcpcopy-1.1.0
./configure --prefix=/usr/local
make
make install
sudo yum install libpcap-devel
wget https://github.com/session-replay-tools/intercept/archive/1.0.0.tar.gz
tar -zxvf 1.0.0.tar.gz
cd intercept-1.0.0
./configure --prefix=/usr/local
make
make install
线上服务器
$python -m SimpleHTTPServer
辅助服务器
$python -m SimpleHTTPServer
#intercept -i eth0 -F 'tcp and src port 8000' -d
线上服务器
tcpcopy -x 8000-192.168.1.3:8000 -s 192.168.1.3 -c 192.168.2.x
tcpcopy 常用参数:
-x <transfer,>
Transfer 具体格式如下 :
服务器对外IP地址 : 服务器应用端口号 - 测试服务器 IP 地址 : 测试服务器应用端口 tcpcopy -x 80-42.62.30.205:80
-n 参数:
如果你要进行多重复制,那么此参数的值就是代表复制过去的流量是在线的n倍,倍数小,效果越好,因为多重复制的原理是修改端口号,因此复制的倍数越大,端口冲突的概越大,特别是源IP地址非常少,短连接的的内网应用场合。系统默认最大值为 1023 倍。
举例:
./tcpcopy -x 80-192.168.0.2:8080 -n 3
-r 参数:
如果你想复制在线服务器应用的部分流量,可以采用-r参数来实现,参数范围是1~99 ,其它值都是全流量复制。
举例:
./tcpcopy -x 80-192.168.0.2:8080 -r 20 #复制20%的量
intercept 默认端口为 36524 ,需要先查看下此端口是否有使用,否则会启动失败