Acquisizione di pacchetti: filtro su RX vs TX


8

Ho un problema di rete in cui i frame con un MAC di origine che corrisponde a uno dei MAC di origine del mio host arrivano all'host - un apparente duplicato MAC, o loop, o altro problema L2.

Credo che questa sia la situazione perché le tabelle MAC (tabelle CAM) del mio bridge Linux registrano un MAC locale (per una macchina virtuale ospitata) come sulla porta upstream e i log del kernel mostrano errori:

bridgename: received packet on bond0.2222 with own address as source address

Vorrei ottenere maggiori dettagli su questi pacchetti / frame "canaglia", ma non riesco a capire come concentrarsi su di essi. Con tcpdump puoi filtrare su un MAC sorgente specifico ('ether src MAC'), ma questo si basa sui byte nel frame - non se il frame è stato "inviato" rispetto a "ricevuto in". Di solito supponiamo che un frame con il nostro MAC di origine significhi che lo stiamo inviando, ma se fosse ricevuto un frame duplicato, il contenuto sembrerebbe esattamente lo stesso al filtro.

Come si può osservare se un frame è stato ricevuto anziché trasmesso in una cattura di pacchetti?


1
Non funziona tcpdump -i <interface> inbound(o "in uscita")?

La pagina man sembra indicare che è limitato a SLIP. Quando lo provo con una qualsiasi delle mie interfacce (loopback, eth / em, bond, vlan, tap ...) tcpdump dice: "tcpdump: inbound / outbound non supportato sul linktype 1"
Joshua Miller,

2
Non risponde alla tua domanda, ma usando iptables e ulogd sarai in grado di ottenere un pcap con solo i pacchetti interessanti al suo interno.
Smooth

utilizzare tcpdump -Lper vedere le interfacce supportate,
PersianGulf

usongrep -d dev
PersianGulf

Risposte:


7

Usa l' --directionopzione per tcpdump:

-Q direction
--direction=direction
       Choose send/receive direction direction for which packets should be
       captured. Possible values are `in', `out' and `inout'. Not available on
       all platforms.

1
Questa opzione sembra essere disponibile solo con l'ultima versione stabile di tcpdump - 4.6.2. Ma dopo averlo creato su Ubuntu, sembra differenziare con successo tra frame inbound e outbound. Huzzah!
Joshua Miller,

1
@JoshuaMiller Ho appena controllato la tcpdumppagina man su Ubuntu 14.04, e esiste un'opzione con la stessa identica descrizione, ma si chiama -Ppiuttosto che -Q(e la forma lunga non è menzionata).
Kasperd,

@kasperd Hai ragione! tcpdump 4.5.1 attualmente ha -P. Forse la funzionalità non è nuova come pensavo inizialmente.
Joshua Miller,

0

Con iptables, hai diverse "catene" per i pacchetti in entrata e in uscita. Dalla pagina man iptables (8):

... the chains INPUT and OUTPUT are only traversed for packets coming into 
the local host and originating from the local host  respectively.   Hence 
every  packet  only  passes  through one of the three chains (except 
loopback traffic, which involves both INPUT and OUTPUT chains) ...

iptables può fare un po 'di log (-l), che potrebbe mostrarti ciò di cui hai bisogno. Presumibilmente può anche inoltrare copie di pacchetti a un'interfaccia per la registrazione con altri strumenti, ma non ho avuto motivo di farlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.