Теги VLAN не відображаються при захопленні пакетів (Linux) через tcpdump


15

Я додаю тег VLAN на eth0:

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

Це призводить до:

#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

Тепер я запускаю dhclient:

#dhclient -d -v -1 eth0.20

Те, що я бачу в tcpdump, - це немальований кадр відкриття DHCP:

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

Чому це не позначено?

Можливо, використовується модуль 802.1q:

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

(ОС: ядро ​​SLES11SP2 3.0.13-0.27-за замовчуванням)

Інший трафік BTW теж не позначений (принаймні tcpdump не показує його) ...


Оновлення 16 жовтня

 # 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
                                                                       ^^^^^^

Отже, досі тут не відображається жоден тег.

Але дійсно лічильник передачі для eth0.20 в / proc / net / dev збільшується при запуску dhclient ...


чи можна запустити "ip -d посилання показати eth0.20"?
Даніла Ладнер

Звичайно, я додав інформацію до питання.
Марки

Ви впевнені, що трафік з’являється на проводці і без тегів VLAN? Це може бути якась химерність libpcap із способом реалізації VLAN-інтерфейсів ip link.
the wabbit

Гаразд, також що говорить "cat / proc / net / vlan / config"?
Даніла Ладнер

Я розширив питання з конфігураційним висновком. Я також спробую захопити поза межами ОС і постійно інформувати вас.
Марки

Відповіді:


16

Ви не можете бачити тег VLAN з tcpdump -i eth0виводу архітектури i686 / x86_64 через прискорення VLAN. шар VLAN буде відфільтрований ядром, тому він завжди виглядає без тегів. Будь ласка, зверніться до помилки 498981 - tcpdump не може мати справу з тегом 802.1q vlan

Відповідно до вашого випадку, ви можете отримати теги VLAN за допомогою:

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

Ви повинні побачити такий вихід:

<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

Ви неправильно зрозуміли Я говорю про Linux, що надсилає відкриття DHCP. Це має бути позначено тегами. Або це не так, або дисплей неправильний. Це не має нічого спільного з комутатором, до якого підключена машина.
Марки

1
@ Marki вибачте, що я не зрозумів чітко вашу думку. ось оновлена ​​версія після 20хв дослідження через google. цей коментар є ключовим для вашого питання.
shawmzhu

Так, ти, здається, маєш рацію. Слід бути обережним із усім рівнем 2. Додатково слід бути обережним із клієнтом DHCP, оскільки, здається, в деяких випадках використовується необроблені сокети (тому ви навіть не можете захоплювати пакети за допомогою iptables). Крім того, коли ви використовуєте VMware, ви не повинні тегувати пакети в VM ні в якому разі, оскільки vSwitch їх відхилить, ви повинні налаштувати спеціальний інтерфейс для цієї VM у цій VLAN на vSwitch. Зібрати все це разом було непросто ... ;-)
Marki

З іншого боку ... дивіться мою редакцію вище ..., здається, це не так просто. Але в будь-якому випадку моя проблема виправлена, я не можу надсилати помічені пакети з VM. Але для чисто фізичних господарів це може бути проблемою ...
Marki
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.