tcpreplay输出的tcpdump与输入不匹配

时间:2018-08-13 17:13:26

标签: ethernet pcap tcpdump tcpreplay

我遇到一个问题,在某些计算机上, tcpdump报告tcpreplay输出的字节数与tcpreplay的输入不匹配。

具体来说,tcpdump始终比提供给tcpreplay的pcap多报告14个字节。

要复制,我使用以下命令在scapy中创建了一个简单的数据包: packet = Ether()/IP(dst='1.2.3.4')/TCP()/Raw(load='S:' + ('-' * 64) + ':E') wrpcap("tcp.pcap", packet)

我通过以下方式设置虚拟接口: ip link add front1 type veth peer name back1 ifconfig back1 up ifconfig front1 up

使用以下命令监视接口的输入: sudo tcpdump -XX -Q out -i front1

然后使用以下命令发送生成的数据包: sudo tcpreplay -i front1 tcp.pcap

tcpdump监视器产生: 0x0000: d4ae 52c1 2005 2c59 e547 2ca4 0800 4500 ..R...,Y.G,...E. 0x0010: 006c 0001 0000 4006 d31c 9e82 04e7 0102 .l....@......... 0x0020: 0304 0014 0050 0000 0000 0000 0000 5002 .....P........P. 0x0030: 2000 b4a6 0000 533a 2d2d 2d2d 2d2d 2d2d ......S:-------- 0x0040: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- 0x0050: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- 0x0060: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- 0x0070: 2d2d 2d2d 2d2d 2d2d 3a45 0000 0000 5400 --------:E....T. 0x0080: 0000 0000 0000 0000 ........

原始文件的tcpdump产生: 0x0000: d4ae 52c1 2005 2c59 e547 2ca4 0800 4500 ..R...,Y.G,...E. 0x0010: 006c 0001 0000 4006 d31c 9e82 04e7 0102 .l....@......... 0x0020: 0304 0014 0050 0000 0000 0000 0000 5002 .....P........P. 0x0030: 2000 b4a6 0000 533a 2d2d 2d2d 2d2d 2d2d ......S:-------- 0x0040: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- 0x0050: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- 0x0060: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- 0x0070: 2d2d 2d2d 2d2d 2d2d 3a45 --------:E

也就是说,监视器产生的内容与文件相同,并附加了14个额外的字节。

无论输入大小如何,这似乎都在发生。

我已经确认此问题不在其他计算机上发生,但是无法确定导致此问题发生的设置。

某些版本信息:

$ tcpreplay -V tcpreplay version: 3.4.4 (build 2450) (debug) Copyright 2000-2010 by Aaron Turner <aturner at synfin dot net> Cache file supported: 04 Not compiled with libdnet. Compiled against libpcap: 1.7.4 64 bit packet counters: enabled Verbose printing via tcpdump: enabled Packet editing: disabled Fragroute engine: disabled Injection method: PF_PACKET send() $ tcpdump --version tcpdump version 4.9.2 libpcap version 1.7.4 OpenSSL 1.0.2g 1 Mar 2016

在Ubuntu 16.04.5上运行

1 个答案:

答案 0 :(得分:0)

此问题归结于以下错误报告中报告的linux内核4.15.0中的错误:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1782544