web-dev-qa-db-fra.com

TCPDump: Capturez l'un des nombreux vlans

Je veux tcpdummp à capturer VLAN 1000 ou VLAN 501. man pcap-filter dit:

L'expression VLAN [VLAN_ID] peut être utilisée plus d'une fois, pour filtrer sur VLAN Hiérarchies. Chaque utilisation de cette expression incrémente les compensations de filtre par 4.

Quand je fais:

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

Je reçois des paquets capturés.

Mais quand je fais:

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

Je ne reçois pas de paquets - je présume à cause de l'incrétation du comportement "d'incréments de 4" décrit dans la page Man.

Comment capturer le trafic sur plus d'un VLAN à la fois?

11
bstpierre

Je me suis souvenu que vous pouvez examiner directement les octets de paquets. Donc, regarder directement dans l'en-tête Ethernet fonctionne:

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 )'

N'oubliez pas le :2, c'est un champ de 2 octets - je suis resté coincé dessus pendant un moment.

15
bstpierre

Cela peut être fait de manière plus simple que d'utiliser un examen de paquets profond, utilisez simplement Grep:

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

- E : Imprimer l'en-tête de niveau de liaison sur chaque ligne de vidage.

il imprimera des lignes comme

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

qui peut être facilement attraper par grep

Si vous voulez attraper plus d'un VLAN ID, vous pouvez utiliser la commande comme:

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