You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

tcpreplay无数据发送:UDP抓包重放失败排查及正确用法咨询

tcpreplay重放抓包未被Wireshark捕获的原因及解决方法

常见原因

  • 接口拼写错误:你抓包时用了etho0(字母o),但实际网络接口大概率是eth0(数字0),若抓包命令指向错误接口,会导致捕获的数据包为空,重放自然无数据。
  • 网卡未开启混杂模式:普通模式下网卡只会接收目标MAC为自身的数据包,抓包中的原始目的MAC可能并非当前PC的MAC,导致数据包被网卡直接丢弃,Wireshark无法捕获。
  • 数据包校验和失效:抓包中的校验和基于原始网络环境生成,重放时网络参数(如MAC/IP)变化会导致校验和无效,网卡或系统会丢弃该包。
  • 接口名称不匹配:部分现代Linux系统的网络接口命名已改为enpXXX格式而非eth0,若重放时指定的接口不存在,tcpreplay无法发送数据包。

正确使用tcpreplay的步骤

  1. 修正抓包命令:确保抓包接口正确,重新捕获有效数据包:

    sudo tcpdump -i eth0 -s 0 -w data.pcap udp
    

    可通过ip link show命令确认当前系统的网络接口名称。

  2. 开启Wireshark混杂模式:在Wireshark的「捕获选项」中勾选「混杂模式」,让网卡接收所有经过的数据包。

  3. 重放时修正数据包参数:

    • 先查看抓包中的MAC地址信息:
      tcpdump -e -r data.pcap
      
    • 重放时指定当前PC的eth0接口MAC为目的MAC,并修复校验和:
      sudo tcpreplay --fixcsum --enet-dmac <你的PC eth0 MAC地址> -i eth0 data.pcap
      
      替换<你的PC eth0 MAC地址>为实际值,可通过ip addr show eth0查看。
  4. 验证重放结果:执行tcpreplay后,查看输出信息,若显示类似Actual: X packets (Y bytes) sent,说明数据包已发送成功,此时Wireshark应能捕获到重放数据。

内容的提问来源于stack exchange,提问作者borune

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:07:22