zoukankan      html  css  js  c++  java
  • Linux 数据包回放工具tcpreplay安装使用

    背景介绍

    tcpreplay是一种pcap包的重放工具, 它可以将用ethreal, wireshark工具抓下来的包原样或经过任意修改后重放回去. 它允许你对报文做任意的修改(主要是指对2层, 3层, 4层报文头), 指定重放报文的速度等, 这样tcpreplay就可以用来复现抓包的情景以定位bug, 以极快的速度重放从而实现压力测试。

    tcpreplay本身包含了几个辅助工具(tcpprep、tcprewrite、tcpreplay和tcpbridge), 用于准备发包的cache, 重写报文等。

    * tcpprep - 简单的说就是划分哪些包是client的, 哪些是server的, 一会发包的时候client的包从一个网卡发, server的包可能从另一个网卡发。即区分pcap数据包的流向,即区分出客户端和服务器。
    * tcprewrite - 简单的说就是修改2层, 3层, 4层报文头部。即改写pcap数据包的2-4层的头部信息,即MAC地址、IP地址和PORT等。
    * tcpreplay - 真正发包, 可以选择主、从网卡, 发包速度等。即回放pcap文件中的数据包。
    * tcpreplay-edit-更写pcap数据并回放,将tcprewrite和tcpreplat一条命令实现。
    * tcpbridge - 利用tcprewrite的功能实现两个网络部分的桥接

    正文

    1、安装

    以centos为例: 直接yum install tcpreplay 安装或者编译离线包安装

     1 解压依赖 tar zxvf libpcap-1.9.1.tar.gz
     2 
     3 编译 ./configure 
     4 
     5 make && make install
     6 
     7 解压安装包 tar zxvf tcpreplay-4.1.0.tar.gz
     8 
     9 编译 ./configure --enable-dynamic-link
    10 
    11 make && make install

    2、tcpreplay工具

    命令格式:tcpreplay [-flags] [-flag [value]] [--option-name[[=| ]value]] <pcap_file(s)>

    命令参数如下图:

     3、示例

    预处理后发包:

    1.预处理生成Cache:
    tcpprep -a client -i test.pacp -o test.cache 
    这条命令将PCAP文件分成客户端和服务端,默认为客户端。发送时packet将分别从客户端和服务端发出。
    
    2.重写IP地址和MAC地址:
    tcprewrite -e 192.85.1.2:192.85.2.2 --enet-dmac=00:15:17:2b:ca:14,00:15:17:2b:ca:15 --enet-smac=00:10:f3:19:79:86,00:10:f3:19:79:87 -c test.cache -i test.pcap -o 1.pcap  
    这条命令将eth0设为服务端接口,eth1设为客户端接口,重写了IP和MAC,可通过wireshark等工具打开1.pcap,查看修改是否成功。
     
    3.重放packet:
    tcpreplay -i eth0 -I eth1 -l 1000 -t -c /dev/shm/test.cache /dev/shm/1.pcap 

    直接发包:

    附带参数即可: tcpreplay -i eth1 -M 10 -l 100 1.pcap
    --使用eth0网口,每秒20个数据包,重复100次

    4、遇到的报错

    包过长导致的报错:

    解决办法: 查看并调整网口mtu:ifconfig eth0 mtu 6000 up

    或增加回放参数:tcpreplay-edit -i eth0 -M20--mtu-trunc xxx.pcap

  • 相关阅读:
    VBScript学习笔记
    C#调用C++库知识点
    .Net面试经验,从北京到杭州
    杭州.Net 相关大公司,希望对大家有帮助
    一起学习《C#高级编程》3--运算符重载
    一起学习《C#高级编程》2--比较对象的相等性
    一起学习《C#高级编程》1--类型的安全性
    博客园的第一天
    基于SpringCloud+Kubernetes 微服务的容器化持续交付实战
    第一节:Docker学习 — 安装
  • 原文地址:https://www.cnblogs.com/chenshengkai/p/14123386.html
Copyright © 2011-2022 走看看