tcpreplay删除IP校验和?
我用tcpreplay删除IP校验和?,tcp,ip,checksum,tcpdump,scapy,Tcp,Ip,Checksum,Tcpdump,Scapy,我用scapy伪造了一个数据包跟踪,然后用tcpreplay重新发送。我使用Scapy重新计算IP和传输层校验和,将数据包保存到pcap文件上的磁盘,并在其上调用tcpreplay 通过并行运行tcpdump,我注意到这些传出数据包的所有IP校验和都没有任何值。似乎每次tcpreplay都会删除它 现在,这是故意的吗?我错过什么了吗 校验和应该是正确的,所以我不认为tcpreplay会因为检查失败而删除它们 我不确定发生了什么,但我怀疑tcpreplay检测到接口将用于发送数据包的卸载校验和处于
scapy
伪造了一个数据包跟踪,然后用tcpreplay
重新发送。我使用Scapy
重新计算IP和传输层校验和,将数据包保存到pcap
文件上的磁盘,并在其上调用tcpreplay
通过并行运行tcpdump
,我注意到这些传出数据包的所有IP校验和都没有任何值。似乎每次tcpreplay
都会删除它
现在,这是故意的吗?我错过什么了吗
校验和应该是正确的,所以我不认为
tcpreplay
会因为检查失败而删除它们 我不确定发生了什么,但我怀疑tcpreplay
检测到接口将用于发送数据包的卸载校验和处于活动状态,并让NIC
计算正确的校验和
尝试使用禁用卸载校验和
ethtool -K eth0 rx off tx off
然后重试并让我们知道发生了什么,但我怀疑tcpreplay
检测到用于发送数据包的接口的卸载校验和处于活动状态,并让NIC
计算正确的校验和
尝试使用禁用卸载校验和
ethtool -K eth0 rx off tx off
然后重试,告诉我们您没有指定正在使用的实际tcpreplay命令,但tcpreplay从不编辑数据包。您可以使用tcpreplay edit或tcprewrite编辑数据包,但不能使用tcpreplay。即使这样,tcpreplay edit/tcprewrite也会计算/修复您的校验和;不是把它们归零
您是否在Wireshark中打开了scapy生成的原始pcap,并验证了其中是否存在校验和?老实说,这听起来像是一个简单的垃圾输入,垃圾输出的例子
FWIW,我不知道有什么能让你的校验和归零。。。至少我无法想象内核为什么会对通过PF_数据包接口发送的数据包这样做——这是一个bug
如果您找到了,请告诉我。您没有指定正在使用的实际tcpreplay命令,但tcpreplay从不编辑数据包。您可以使用tcpreplay edit或tcprewrite编辑数据包,但不能使用tcpreplay。即使这样,tcpreplay edit/tcprewrite也会计算/修复您的校验和;不是把它们归零
您是否在Wireshark中打开了scapy生成的原始pcap,并验证了其中是否存在校验和?老实说,这听起来像是一个简单的垃圾输入,垃圾输出的例子
FWIW,我不知道有什么能让你的校验和归零。。。至少我无法想象内核为什么会对通过PF_数据包接口发送的数据包这样做——这是一个bug
如果您找到了,请告诉我。您可以使用tcpreplay edit
解决此问题,它与tcpreplay
包含在同一软件包中,尤其是此选项:
-C, --fixcsum Force recalculation of IPv4/TCP/UDP header checksums
取消激活接口的卸载校验和是没有意义的:当数据包出去时,它将被启用校验和检查的下一台机器拒绝(+99%)您可以使用tcpreplay编辑
解决此问题,该编辑包含在与tcpreplay
相同的数据包中,尤其是此选项:
-C, --fixcsum Force recalculation of IPv4/TCP/UDP header checksums
取消激活接口的卸载校验和是没有意义的:当数据包出去时,它将被启用校验和检查的下一台机器拒绝(+99%)这些数据包是否由收据接收到正确的校验和?我不明白你的问题。这些数据包在接收器处被正确接收,所以我不太担心。只是tcpreplay应用于每个数据包都有正确Ip校验和的数据包跟踪时,似乎正在删除这些校验和。如果您在scapy中使用sendfast,它将使用现成的tcpreplay。通常,如果你有校验和问题,最好的办法就是删除它们。Scapy应该在发送时自动修复它。当涉及到发送和接收时,Scapy是各种问题的根源。我很高兴现在使用自己的sr
实现。不再有数十秒的延迟,不再有负的往返时间,即使对于重复的数据包,数据包的匹配现在也是正确的,等等。这些数据包是通过正确的校验和由收据接收的吗?我不明白你的问题。这些数据包在接收器处被正确接收,所以我不太担心。只是tcpreplay应用于每个数据包都有正确Ip校验和的数据包跟踪时,似乎正在删除这些校验和。如果您在scapy中使用sendfast,它将使用现成的tcpreplay。通常,如果你有校验和问题,最好的办法就是删除它们。Scapy应该在发送时自动修复它。当涉及到发送和接收时,Scapy是各种问题的根源。我很高兴现在使用自己的sr
实现。不再有数十秒的延迟,不再有负的往返时间,即使是重复的数据包,数据包的匹配现在也是正确的,等等。谢谢你的回答。我不想把我的系统搞砸。由于我不熟悉卸载
,上述命令将如何影响我机器的可用性?此外,我似乎找不到rx校验和
和tx校验和
之间的区别。有什么想法吗?在任何情况下,当我运行ethtool
:rx校验和:off[fixed]tx校验和:on-tx-checksum-ipv4:off[fixed]tx校验和ip-generic:on[fixed]tx-checksum-ipv6:off[fixed]tx校验和fcoe-crc:off[fixed]tx校验和sctp:off[fixed]
似乎已为传出数据包激活了校验和卸载。这意味着IP校验和将由NIC硬件而不是软件计算。因为tcpdump捕获了