Вопрос или проблема
Я пытаюсь разобраться с VLAN-тегированными пакетами, которые мой хост получает или отправляет другим хостам. Я попробовал
tcpdump -i eth1 vlan 0x0070
Но это не сработало. Кто-нибудь пробовал просматривать VLAN-пакеты через tcpdump раньше? Не смог найти много помощи в интернете!
Если ваш хост подключен к access порту, коммутатор, вероятно, снимет тег VLAN до того, как он дойдет до вашего хоста. В результате запуск TCPDump на рассматриваемом хосте никогда не покажет теги VLAN.
Вам нужно настроить SPAN-порт и/или ввести сетевой tap в вашем сетевом окружении, чтобы захватить трафик до снятия тегов с пакетов, чтобы видеть их в сетевом дампе/трейсе.
vlan -i eth1 -e vlan
Вывод будет, например:
16:02:26.693223 c4:c1:e2:4a:9a:06 (oui Unknown) > 00:e0:5c:8f:e0:c9 (oui Unknown), ethertype 802.1Q (0x8100), длина 102: vlan 108, p 0, ethertype IPv4 (0x0800), 192.168.118.11 > 192.168.128.2: ICMP echo request, id 52, seq 2, длина 64
16:02:26.694811 c4:c1:e2:4a:9a:06 (oui Unknown) > 00:e0:5c:8f:e0:c9 (oui Unknown), ethertype 802.1Q (0x8100), длина 102: vlan 108, p 0, ethertype IPv4 (0x0800), 192.168.118.11 > 192.168.128.2: ICMP echo request, id 53, seq 2, длина 64
16:02:26.696331 c4:c1:e2:4a:9a:06 (oui Unknown) > 00:e0:5c:8f:e0:c9 (oui Unknown), ethertype 802.1Q (0x8100), длина 102: vlan 108, p 0, ethertype IPv4 (0x0800), 192.168.118.11 > 192.168.128.2: ICMP echo request, id 54, seq 2, длина 64
Обратите внимание на vlan 108
в середине каждой строки.
Вы можете использовать Linux для “декодирования” 802.1q (VLAN-тегирование). Вы можете эффективно превратить Linux в “роутер на палочке” и маршрутизировать между VLAN, используя единственный Ethernet-порт на модном коммутаторе Cisco второго уровня (который имеет много VLAN).
Основной Ethernet имеет “субинтерфейсы”, которые соответствуют идентификатору VLAN. Затем вы можете маршрутизировать и настраивать iptables (брандмауэр) для субинтерфейсов индивидуально.
Это простой способ иметь периметровый Linux брандмауэр, подключенный к интернет-провайдеру, и 10 VLAN за ним, использую лишь один Ethernet-интерфейс.
dot q — это стандарт, даже если Cisco считает, что они его придумали, так что он отлично работает на Linux.
РЕДАКТИРОВАНИЕ: чтобы включить это
modprobe 8021q
Вы можете затем запустить tcpdump для прослушивания на субинтерфейсах
Я думаю, вы используете не тот инструмент, если честно—tcpdump более подходит для работы с IP (L3), в то время как VLAN — это функция L2 — попробуйте использовать Wireshark вместо этого.
Ответ или решение
Если вы хотите определить VLAN-тегированные пакеты с помощью tcpdump, важно понимать, что этот инструмент может обрабатывать такие данные, но есть некоторые ключевые аспекты, которые следует учитывать. Ниже приводится пошаговое руководство и важные советы, чтобы вам было легче справиться с этой задачей.
Причины, по которым вы не видите VLAN теги
-
Подключение к Access порту: Если ваш хост подключен к Access порту на коммутаторе, то, скорее всего, VLAN теги будут удалены коммутатором, прежде чем пакет достигнет вашего хоста. Это объясняет, почему вы не видите VLAN-теги в tcpdump при стандартной настройке.
-
Необходимость в SPAN порте или сетевом тапе: Чтобы отслеживать трафик с сохранением VLAN-тегов, необходимо настроить SPAN порт на коммутаторе или использовать сетевой тап, чтобы перехватить пакеты до их обработки свитчем.
Использование tcpdump для просмотра VLAN-тегов
-
Правильный синтаксис команды: Используйте следующую команду, чтобы убедиться, что вы улавливаете VLAN-тегированные пакеты:
tcpdump -i eth1 vlan
Эта команда поможет вам идентифицировать трафик, который все еще имеет VLAN-тэги.
-
Загрузите модуль 802.1Q: Для того чтобы ваш Linux хост мог декодировать 802.1Q VLAN теги, загрузите соответствующий модуль:
modprobe 8021q
-
Создание подинтерфейсов на Linux: Вы можете настроить ваш сетевой интерфейс как "router on a stick" с помощью создания подинтерфейсов, которые будут связаны с конкретными VLAN:
ip link add link eth1 name eth1.70 type vlan id 70
Далее вы можете настраивать и управлять этими подинтерфейсами так же, как и с обычными интерфейсами.
Альтернативы tcpdump
Дополнительно можно рассмотреть использование Wireshark для анализа трафика. Wireshark обеспечивает более наглядный интерфейс и инструменты для анализа как сетевых, так и более низкоуровневых данных, таких как VLAN теги и другие протоколы канального уровня.
Заключение
В итоге, важно правильно настроить вашу среду, чтобы успешное выполнение команды, позволяющей видеть VLAN-теги. Использование SPAN или зеркального порта, а также установка подинтерфейсов на Linux, помогут вам эффективно мониторить и анализировать необходимый сетевой трафик.