转载文章(99%)
tcpcopy1.0.0安装使用
在tcpcopy 1.0版本中对整个架构的一个改进,将原本需要运行在测试机上的intercept移除放到一个独立的辅助机上来,使得测试机需要做的操作少到仅仅是添加一条路由而已,对整个测试机的性能损耗可以忽略,排除了intercept运行在测试机上时产生的性能影响,使得测试数据更加接近真实水平。
一、系统环境
centos6.7 x86_64
线上服务器:192.168.241.130 (tcpcopy安装配置)
辅助服务器:192.168.241.131 (intercept安装配置)
测试服务器:192.168.241.132 (添加路由)
二、线上服务器部署tcpcopy-1.0.0
git clone git://github.com/session-replay-tools/tcpcopy.git
cd tcpcopy
./configure # 无特殊需求不需要加其他选项,默认安装在/usr/local/tcpcopy。
make && make install
#先不要启动,需要先启动intercept,而且如果intercept停止,tcpcopy也会停掉。
/usr/local/tcpcopy/sbin/tcpcopy -x 80-192.168.241.132:80 -s 192.168.241.131 -c 192.168.100.x -d -C 4 -l /tmp/tcpcopy.log
# -C 指定线程, -n 指定复制倍数
原理:将80端口收到的流量复制到测试机ip 192.168.241.132的80端口,并设置辅助机的ip地址为192.168.241.131,且将复制过去的流量中的源地址统一更改为192.168.100.x,这样做的好处是我们在测试机上可以直接针对整个更改后的网段设置一条路由即可。
三、辅助服务器部署intercept-1.0.0
yum install -y libpcap
git clone
cd intercept
./configuremake && make install
/usr/local/intercept/sbin/intercept -i eth0 -l /tmp/intercept.log -F 'tcp and src port 80 and src host 192.168.241.132' -d
原理:辅助机的 intercept 通过-F 参数制定捕获规则,捕获tcp连接中源端口为80的所有数据,也即是测试机的回应数据。其作用是将测试机路由过来的响应数据捕获下来,完成整个请求回应的流程且保证测试机产生的回应数据不会流向线上环境。intercept 会监听 tcp 36524 端口,并和线上机192.168.241.130的 tcpcopy 之间建立通信,我们通过ss命令可以观察到。需要注意的是辅助机和测试机一定要是同一网段。
四、测试服务器部署
//添加路由
route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.241.131
原理:线上机tcpcopy复制流量时将源地址改写为192.168.100网段的地址,那么在测试机上看到的流量中源地址全部是来源于这个网段,我们仅仅需要将返回给这个网段的所有客户端的请求全部通过辅助机 192.168.241.131 路由出去,这样在辅助机上就可以对全部的回应包进行截获处理了