Ich habe ein Netzwerkproblem, bei dem Frames mit einem Quell-MAC, der mit einem der Quell-MACs meines Hosts übereinstimmt, am Host ankommen - ein offensichtlicher doppelter MAC, eine Schleife oder ein anderes L2-Problem.
Ich glaube, dies ist die Situation, weil die MAC-Tabellen (CAM-Tabellen) meiner Linux-Bridge einen lokalen MAC (für eine gehostete virtuelle Maschine) als am Upstream-Port befindlich registrieren und die Kernel-Protokolle Fehler anzeigen:
bridgename: received packet on bond0.2222 with own address as source address
Ich würde gerne mehr Details über diese "Schurken" -Pakete / Frames erfahren, aber ich kann nicht herausfinden, wie ich sie herausfinden kann. Mit tcpdump können Sie nach einem bestimmten Quell-MAC ('ether src MAC') filtern. Dies basiert jedoch auf den Bytes im Frame - nicht darauf, ob der Frame "gesendet" oder "empfangen" wurde. Wir gehen normalerweise davon aus, dass ein Frame mit unserem Quell-MAC bedeutet, dass wir ihn senden. Wenn jedoch ein doppelter Frame empfangen würde, würde der Inhalt für den Filter genauso aussehen.
Wie kann man beobachten, ob bei einer Paketerfassung ein Frame empfangen oder gesendet wurde?
tcpdump -i <interface> inbound
(oder "ausgehend")?tcpdump -L
für siehe unterstützte Schnittstellen,ngrep -d dev
Antworten:
Verwenden Sie die
--direction
Option zum tcpdump:quelle
tcpdump
Manpage unter Ubuntu 14.04 überprüft und es gibt eine Option mit genau der gleichen Beschreibung, die jedoch-P
eher aufgerufen wird als-Q
(und die Langform wird nicht erwähnt).Mit iptables haben Sie unterschiedliche "Ketten" für eingehende und ausgehende Pakete. Aus der Manpage iptables (8):
iptables kann einige Protokollierungen (-l) durchführen, die Ihnen möglicherweise zeigen, was Sie benötigen. Es kann vermutlich auch Kopien von Paketen an eine Schnittstelle zur Protokollierung mit anderen Tools weiterleiten, aber ich hatte keinen Grund dazu.
quelle