私は現在Pythonとscapyを使ってシナリオをテストしています。
ソース mac 80:CA:0E:BD:60:3B と宛先 mac 82:DA:0E:BD:60:3A にパケットを送信すると、パケットは指定されたインターフェイスに送信されます。
その後、送信元と宛先の 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が交換されたパケットを送信しないことです。これは、パケットが以前に送信されたパケットに基づいて独自に意図されていることを知っているからです。