zoukankan      html  css  js  c++  java
  • 引流测试-tcpcopy安装和使用

    tcpcopy架构:

    实验拓扑:

    TCPCopy 是一种请求复制(复制基于 TCP 的 packets)工具 ,通过复制在线数据包,修改 TCP/IP 头部信息,发送给测试服务器,达到欺骗测试服务器的TCP 程序的目的,从而为欺骗上层应用打下坚实基础。
    一、安装
    online server安装Tcpcopy:
    1. 下载Tcpcopy
        git clone git://github.com/session-replay-tools/tcpcopy.git
    2. 安装(需要root权限)
        yum -y install gcc gcc-c++
        yum install  libpcap-devel 
        ./configure --pcap-capture
        make
        make install
    cd /usr/local/tcpcopy/sbin
    3. tcpcopy可配置参数
        编译参数:可以不设置,默认安装在/usr/local/tcpcopy/sbin
        --offline 从pcap文件重放TCP流
        --pcap-capture 在数据链路层抓包(默认在网络层)
        --pcap-send 在数据链路层发包(默认在网络层)
        --with-pfring=PATH 将路径设置为PF_RING库源
        --set-protocol-module=PATH 设置tcpcopy为外部协议模块工作
        --single 如果intercept和tcpcopy都设置为单机模式,只有一个tcpcopy和一个intercept一起工作,将会获得更好的性能
        --with-debug 以debug模式编译tcpcopy(保存在日志文件中)
     
    辅助服务器安装intercept:
    1. 安装Intercept(需要root权限)
        git clone git://github.com/session-replay-tools/intercept.git
        yum -y install gcc gcc-c++
        yum install  libpcap-devel 
    ./configure (可选择适当的配置参数)
    make
        make install
        cd /usr/local/intercept/sbin
    2. intercept的配置参数
    --single            intercept运行在单机情况下
        --with-pfring=PATH  将路径设置为PF_RING库源
        --with-debug        以debug模式编译intercept(保存在日志文件中)
        
    二、配置环境
    1、online server和test server开启一样的服务,这里开启了web服务
    online服务端口为80,test server服务端口为3389
    2、在test server配置路由,将test server的响应包发送到辅助服务器;
    route add -host 10.0.4.172 netmask 255.255.255.255 gw 192.168.39.49
    三、开启tcpcopy和intercept:
    首先在辅助服务器上开始intercept:(intercept是tcpcopy服务的server端,)
    语法:
    ./intercept -F <filter> -i <device,>
    本测试环境执行命令:
    intercept -i eth3 -F 'tcp and src port 3389' -d
    intercept将捕获基于TCP应用的响应,该应用监听在设备的3389端口上
     另外:默认监听端口36525,tcpcopy连接辅助服务器时使用
    参数说明:
    -i 指定捕获响应包的网卡
    -F 过滤响应包内容
    -d 执行demo
    请注意:
    过滤器格式与pcap过滤器相同;
    辅助服务器要确保没有开启路由模式 cat /proc/sys/net/ipv4/ip_forward,为0表示没有开启。
    一次性配置:echo "0">/proc/sys/net/ipv4/ip_forward
    永久性配置:/etc/sysctl.conf里面的net.ipv4.ip_forward=1注释,sysctl -p 立即生效
     
    在online server端开启tcpcopy:
    语法:
    ./tcpcopy -x localServerPort-targetServerIP:targetServerPort -s <intercept server,>  [-c <ip range,>]
    本测试环境执行命令:
    tcpcopy -x 80-192.168.39.47:3389 -s 192.168.39.49
    含义:复制在线服务器80端口的数据包到192.168.39.47上面的3389端口,-s 指定运行intercept服务的机器地址;
    “-c”参数,可以将客户端ip地址伪装成指定的ip,虽然是可选的,但在此设置以便简化路由命令
    本测试中未使用此参数
    三、测试效果:
    10.0.4.174访问online server 192.168.39.48 的80端口;
    在test server抓包可以看到复制过来的请求包;
    四、注意事项
        1)只能在linux上测试(kernal 2.6 or above)
        2)tcpcopy可能丢包,因此丢失请求
        3)root权限或socket权限是必须的(例如 setcap CAP_NET_RAW = ep tcpcopy)
        4)TCPCopy现在只支持客户端启动的连接
        5)TCPCopy不支持使用SSL / TLS的服务器应用程序的重放
        6)对于MySQL会话重放,请参考 https://github.com/session-replay-tools
        7)不应该在辅助服务器上设置ip转发
        8)请执行“./tcpcopy -h”或“./intercept -h”以获取更多详细信息

  • 相关阅读:
    廖雪峰的多线程 1
    保持良好的心态 戒骄戒躁
    Break camelCase
    int32 to IPv4 (int32到IPv4地址转换)
    Stop gninnipS My sdroW!
    Find The Parity Outlier 找到奇偶校验异常值
    今日新闻整理 2020-7-31
    改造rabbitmq demo 到 jpa
    Flink实战(110):FLINK-SQL应用场景(11)connector(十九)Flink 与 hive 结合使用(七) Flink Hive Connector 使用
    Hadoop基础(六十):面试题 Hadoop数据切片(二)切片机制源码
  • 原文地址:https://www.cnblogs.com/pymi/p/9416026.html
Copyright © 2011-2022 走看看