Tag VLAN non mostrati nell'acquisizione di pacchetti (Linux) tramite tcpdump


15

Sto aggiungendo una VLAN con tag su eth0:

#ip link add link eth0 name eth0.20 type vlan id 20

Questo risulta in:

#ip link
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
 link/ether 9c:c7:a6:95:65:1c brd ff:ff:ff:ff:ff:ff
....
12: eth0.20@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
 link/ether 9c:c7:a6:95:65:1c brd ff:ff:ff:ff:ff:ff

#ip -d link show eth0.20
70: eth0.20@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 9c:c7:a6:95:65:1c brd ff:ff:ff:ff:ff:ff
    vlan id 20 <REORDER_HDR>

#cat /proc/net/vlan/config
VLAN Dev name    | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.234       | 234  | eth0
eth0.20        | 20  | eth0

Ora inizio dhclient:

#dhclient -d -v -1 eth0.20

Quello che vedo in tcpdump è un frame di rilevamento DHCP senza tag:

#tcpdump -i eth0 -XX
0x0000:  ffff ffff ffff 9cc7 a695 651c 0800 4500 
                                       ^^^^

Perché non è taggato?

Il modulo 802.1q sembra essere usato:

#lsmod | grep 8021q
8021q                  28324  0
garp                   14311  1 8021q

(Sistema operativo: kernel SLES11SP2 3.0.13-0.27-predefinito)

BTW altro traffico non è nemmeno taggato (almeno tcpdump non lo mostra) ...


Aggiornamento 16 ottobre

 # tcpdump -Uw - | tcpdump -i eth0 -en -r - &
[1] 7310
 # tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

 # dhclient -d -v -1 eth0.20
Internet Systems Consortium DHCP Client 4.2.3-P2
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0.20/9c:c7:a6:95:65:1c
Sending on   LPF/eth0.20/9c:c7:a6:95:65:1c
Sending on   Socket/fallback
DHCPDISCOVER on eth0.20 to 255.255.255.255 port 67 interval 3
reading from file -, link-type EN10MB (Ethernet)
18:49:14.437882 9c:c7:a6:95:65:1c > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 347: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 9c:c7:a6:95:65:1c, length 305
                                                                       ^^^^^^

Quindi, ancora nessun tag mostrato qui.

Ma in effetti il ​​contatore di trasmissione per eth0.20 in / proc / net / dev aumenta quando si esegue dhclient ...


puoi eseguire "ip -d link show eth0.20"?
Danila Ladner

Certo, ho aggiunto le informazioni alla domanda.
Marki,

Sei sicuro che anche il traffico venga visualizzato sul filo senza tag VLAN? Potrebbe semplicemente essere una stranezza di libpcap con il modo in cui le interfacce VLAN sono implementate ip link.
the-wabbit

ok, anche cosa dice "cat / proc / net / vlan / config"?
Danila Ladner

Ho esteso la domanda con l'output di configurazione. Proverò anche a catturare al di fuori del sistema operativo e ti terrò aggiornato.
Marki,

Risposte:


16

Non è possibile visualizzare il tag VLAN tcpdump -i eth0dall'output sull'architettura i686 / x86_64 a causa dell'accelerazione VLAN. il livello VLAN verrà filtrato dal kernel in modo che appaia sempre senza tag. Fare riferimento al Bug 498981 - tcpdump non può gestire il tag vlan 802.1q

Secondo il tuo caso, puoi ottenere tag VLAN tramite:

tcpdump -i eth0 -Uw - | tcpdump -en -r - vlan 20

Dovresti vedere il seguente output:

<timestamp> <mac-addr-of-eth0> > Broadcast, ethertype 802.1Q (0x8100), length 346: vlan 20, p 0, ethertype IPv4, 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP

Hai sbagliato. Sto parlando di Linux che invia un rilevamento DHCP. Dovrebbe essere taggato. O non lo è, oppure il display è sbagliato. Ciò non ha nulla a che fare con l'interruttore a cui è collegata la macchina.
Marki,

1
@Marki scusa non ho capito bene il tuo punto. ecco la versione aggiornata dopo uno studio di 20 minuti via google. questo commento è la chiave per la tua domanda.
Shawmzhu,

Sì, sembra che tu abbia ragione. Bisogna stare attenti con tutto il livello 2. Si dovrebbe inoltre fare attenzione con il client DHCP in quanto sembra usare socket grezzi in alcuni casi (quindi non è nemmeno possibile acquisire i pacchetti usando iptables). Inoltre, quando si utilizza VMware non è necessario contrassegnare i pacchetti nella VM in ogni caso perché vSwitch li rifiuterà, è necessario configurare un'interfaccia dedicata per quella VM in quella VLAN su vSwitch. Riunire tutto questo non è stato facile ... ;-)
Marki

D'altra parte ... vedi la mia modifica sopra ... dopo tutto non sembra essere così facile. Ma comunque il mio problema è stato risolto, non posso comunque inviare pacchetti con tag dall'interno della VM. Ma per host puramente fisici questo potrebbe essere un problema ...
Marki,
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.