源MAC地址与目的MAC地址互换导致报文无法发送

源MAC地址与目的MAC地址互换导致报文无法发送

我目前正在使用 Python 和 scapy 测试一个场景。

当我发送源 mac 为 80:CA:0E:BD:60:3B 和目标 mac 为 82:DA:0E:BD:60:3A 的数据包时,数据包将发送到指定的接口。

如果我随后交换源 MAC 和目标 MAC,则不再发送数据包。

如果我随后恢复 MAC,则原始数据包也将不再发送。

有趣的是,如果我等待几分钟,交换的 mac 数据包就会被允许通过。

我的Python代码如下:

from scapy.all import *

# this packet is sent
sendp(Ether(src="80:CA:0E:BD:60:3B", dst="82:DA:0E:BD:60:3A")/IP(dst="192.168.0.71",src="192.168.0.75")/UDP(sport=2152,dport=2152), iface="enp0s9")

# this packet does not get sent, until after a few mins
sendp(Ether(dst="80:CA:0E:BD:60:3B", src="82:DA:0E:BD:60:3A")/IP(dst="192.168.0.71",src="192.168.0.75")/UDP(sport=2152,dport=2152), iface="enp0s9")

Linux 是否跟踪源 MAC 地址和目标 MAC 地址来决定是否实际发送数据包?

似乎发生的情况是 Linux 没有发送交换的数据包,因为它根据之前发送的数据包发现该数据包是发给自己的。

相关内容