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?
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.
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"