使用 Tcpcopy 复制线上流量进行测试

使用tcpcopy复制线上流量进行测试

  • online server

    • 线上服务所在机器 10.136.11.4

    • 部署tcpcopy

      • cd tcpcopy-xxx
      • sudo yum install libpcap
      • sudo yum install libpcap-devel
      • ./configure --prefix=/usr/local/tcpcopy --pcap-capture
      • make
      • make install
      • XXXXX/tcpcopy -x S_PORT@S_ETH_ADDR-D_IP:D_PORT@D_ETH_ADDR -s INTER_IP -c 10.136.100.x -d -l ./tcpcopy.log
    • sudo /usr/local/tcpcopy/sbin/tcpcopy -x ONLINE_PORT@ONLINE_SERVER_MAC_ADDR-10.136.11.5:TEST_PORT@TEST_SERVER_MAC_ADDR -s 10.136.11.3 -o eth4 -i eth4 -c 10.136.100.x -d -l ./tcpcopy.log

      • -s 表示辅助服务器地址
      • -c 表示伪装的地址,即要把tcpcopy的包的源地址改为这个伪装地址
  • target server

    • 目标服务器,测试服务所在机器 10.136.11.5
    • 设置路由
    • route add -net 10.136.100.0 netmask 255.255.255.0 gw 10.136.11.3
      • 计算结果要回复给ip源地址,即回复给伪装地址,这里需要做转发,即把结果转发到辅助机器上(辅助机器不能开启路由转发)
  • assistant server - AS

    • 辅助服务器 10.136.11.3
    • 部署intercept
    • cat /proc/sys/net/ipv4/ip_forward
      • 结果为0表示禁止路由转发,辅助服务器充当“黑洞”
      • 关闭IP转发 sudo sysctl -w net.ipv4.ip_forward=0
    • sudo /usr/local/intercept/sbin/intercept -i eth4 -F 'tcp and src port TEST_PORT' -d -l ./inter.log
  • 单机部署多个tcpcopy

    • tcpcopy 与 intercept 使用 -p 设置的端口需要一致
  • TS上设置路由

    • 如11.12.13.X为TS,则AS需要在11.12.13.Y,即同一网段上,否则网络不可达
  • target server与assistant server部署在同一台机器上

    • 见参考链接,注意tcpcopy命令中需要将-c参数改写为不存在或无法访问的地址
  • todo

    • 了解tcpcopy的设计与原理

参考

https://github.com/session-replay-tools/tcpcopy
https://blog.csdn.net/wangbin579/article/details/10148247
https://blog.csdn.net/fengfengdiandia/article/details/77776026
https://www.jianshu.com/p/8df317dbf653
tcpcopy简单用法
linux ip 转发设置 ip_forward
linux下route命令
简化配置及操作方法

原文地址:https://www.cnblogs.com/wangzhiyi/p/10640060.html