저는 현재 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가 교환된 패킷을 보내지 않는다는 것입니다. 왜냐하면 패킷이 이전에 보낸 패킷을 기반으로 자체적으로 의도된 것임을 알기 때문입니다.