tcpreplay的安装与使用
tcpreplay的安装与使用
一、前言
tcpreplay是一系列工具的集合。包括(tcpprep、tcprewrite、tcpreplay和tcpbridge)其中tcpreplay是真正实现流量回放功能的工具,其他几个工具可以看作tapreplay的辅助工具,作为流量重放前期的准备工作,比如tcpprep可以划分哪些包是client的, 哪些是server的, 一会发包的时候client的包从一个网卡发, server的包可能从另一个网卡发。tcprewrite可以就是修改2层, 3层, 4层报文头部,也就是可以将IP,MAC等信息修改为你期望的值。
官网: http://tcpreplay.appneta.com/
二、安装
(1)在线安装
CentOS环境下直接,在线安装执行下列命令即可:
yum -y install tcpreplay
查看安装是否成功:
tcpreplay -V
安装成功,会显示如下图所示信息:
查看帮助文档命令如下:
tcpreplay -h
会显示如下图所示信息:
(2)离线安装
当在线安装失败时可以选择离线安装,需要准备Bison、flex、libpcap、m4、tcpreplay依赖包,注意依赖包高低版本不兼容,以上均为离线包。为了节省大家时间,即将相应的依赖包整理好: 点击这里获取依赖包.
1.把所需依赖包和tcpreplay上传至服务器
2.执行脚本 sh libpcap-install
3.执行完脚本,会出现四个安装包分别是Bison、flex、libpcap、m4
4.依次进入Bison、flex、libpcap、m4执行以下命令:
./configure
make
make install
命令完成且无报错后,libpcap才能正常使用。安装完libpcap后,可以安装tcpreplay,进入tcpreplay-4.1.2执行上一步的三个命令编译安装。安装完成后,执行tcpreplay -vesion能查看版本信息,-help查看帮助信息。
注意: 1.编译安装libpacp时,可能会报错configure:error: Your operating system’s lex is insufficient to compile libpcap
2.编译安装bison时,可能会报错 configure:error: GNU M4 1.4 is required”
解决方案: 此时应确认服务器是否安装有GCC编译器,如果没有GCC编译器,请安装后,再次执行下面的安装操作,GCC编译器的安装方法不再阐述。
三、使用
(1)快速使用
tcpreplay -i eth0 p.pcap
快速使用: 其中 p.pcap 是用wireshark或者tcpdump抓取的流量包
(2)高级使用
查看本机网卡信息,命令如下:
tcpreplay --listnics
可以 看到网卡信息,如下
Available network interfaces:
eth0
eth1
any
将 p.pcap 文件进行 tcpprep 操作,制作 cache 文件
tcpprep -an client -i p.pcap -o p.cache –v
执行发包语句参数说明:
tcpreplay -i eno2 -p 1000 -l 100000000 56to300010w.pcap
-i:所使用的网卡,如网卡为ens33或者eth0,那么改为正确的网卡名称
1000:每秒钟向接收机发送的eps速率
1000000000:最大发送的eps数量
56to300010w.pcap:用于tcpreplay回放syslog的.pcap文件
(3)使用tcprewrite修改.pcap文件的相关参数
tcprewrite --srcipmap=0.0.0.0/0:10.0.0.101/24 --dstipmap=0.0.0.0/0:10.41.48.131/32 --enet-dmac=00:50:56:81:a9:fb --infile=57_163.pcap --outfile=test.pcap -C
1.Srcipmap:模拟发送的设备IP、ip后缀/24为子网掩码,可填/24/32
/24为模拟同网络下多个ip回放报文,/32为单个ip回放报文。具体可视情况修改调试。
2.Dstipmap:回放报文的目标IP Enet-dmac: 目标mac,可在目标服务器使用ipconfig或者ip addr查看
3.Infile:打开的.pcap文件名 Outfile: 输出的.pcap文件名
四、常见问题
(1)为什么在服务器上收不到tcpreplay回放的报文?
在目标服务器上使用tcpdump命令进行抓包,抓取接收报文的网卡数据:
检查输出信息,例命令如下:
tcpdump -i eth0 port 514
(2)抓不到包,也接收不到报文。
检查发包机和目标机是否能ping通,能ping通,再检查执行的tcpreplay命令参数和修改.pcap文件的语句是否正确。
(3)常用命令实例:
tcpreplay -i eth0 -p 1000 -l 100000000 --limit=200000 test.pcap
解释:使用eth0网口以每秒1000EPS的速率,向test.pcap文件中改写的 目标IP进行持续发包,限制最大发包数100000000,当发送包数达到200000 时,直接停止发送(–limit的作用)。
tcpreplay -i eth0 -p 5000 -l 100000000 --duration=10 test.pcap
解释:使用eth0网口以每秒5000EPS的速率,向test.pcap文件中改写的 目标IP进行持续发包,限制最大包数100000000,当发包时间达到10秒时 (–duration), 停止发送。
nohup tcpreplay -i eth0 -p 5000 -l 100000000 test.pcap &
解释:语句中的Nohup+&代表该命令会在后台开启一个线程来运行,若要停 止发送,执行ps -ef |grep tcpreplay ,kill -9 进程PID。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)