tcpdump: cattura uno dei numerosi Vlan


11

Voglio che tcpdump acquisisca VLAN 1000 o VLAN 501. man pcap-filterdice:

L'espressione vlan [vlan_id] può essere utilizzata più di una volta per filtrare le gerarchie VLAN. Ogni uso di quell'espressione incrementa gli offset del filtro di 4.

Quando io faccio:

tcpdump -vv -i eth1 \( vlan 1000 \) and \( ip host 10.1.1.98 or ip host 10.1.1.99 \)

Ricevo pacchetti catturati.

Ma quando lo faccio:

tcpdump -vv -i eth1 \( vlan 1000 or vlan 501 \) and \( ip host 10.1.1.98 or ip host 10.1.1.99 \)

Non ricevo alcun pacchetto - presumo a causa del comportamento "incremento di 4" descritto nella pagina man.

Come posso catturare il traffico su più di una VLAN alla volta?

Risposte:


15

Ho ricordato che puoi esaminare direttamente i byte di pacchetto. Quindi, guardando direttamente nell'intestazione Ethernet funziona:

tcpdump -vv -i eth1 '( vlan and ( ether[14:2] & 0xfff == 1000 or ether[14:2] & 0xfff == 501 ) ) and ( ip host 10.1.1.98 or ip host 10.1.1.99 )'

Non dimenticare il :2, questo è un campo di 2 byte - mi sono bloccato su questo per un po '.


6

Può essere fatto in modo più semplice rispetto all'utilizzo dell'esame approfondito dei pacchetti, basta usare grep:

tcpdump -n -i eth1 -e | grep "vlan 1000" 

-e: stampa l'intestazione a livello di collegamento su ciascuna linea di dump.

stamperà linee come

ethertype 802.1Q (0x8100), length 60: vlan 1000, p 0, ethertype ARP

che può essere facilmente catturato da grep

Se vuoi catturare più di un ID VLAN puoi usare un comando come:

tcpdump -n -i eth1 -e | grep "vlan 1000\|vlan 501"

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.