Я пытаюсь выяснить, какие пакеты с тегами vlan мой хост получает или отправляет другим хостам. Я пытался
tcpdump -i eth1 vlan 0x0070
Но это не сработало. Кто-нибудь пробовал просматривать пакеты vlan через tcpdump? Поиск в сети не помог!
решение1
Если ваш хост подключен к порту доступа, коммутатор, скорее всего, удалит тег VLAN до того, как он достигнет вашего хоста. В результате запуск TCPDump на рассматриваемом хосте никогда не увидит теги VLAN.
Вам необходимо настроить порт SPAN и/или внедрить сетевой ответвитель в вашу сеть где-нибудь, чтобы перехватывать трафик до того, как теги будут удалены из пакетов, чтобы увидеть их в сетевом дампе/трассировке.
решение2
на самом деле вы можете использовать Linux для «декодирования» 802.1q (тегирования VLAN). вы можете эффективно превратить Linux в «маршрутизатор на палочке» и маршрутизировать между VLAN с помощью одного порта Ethernet на навороченном коммутаторе Cisco уровня 2 (с множеством VLAN).
основной Ethernet имеет «подынтерфейсы», которые соответствуют идентификатору VLAN. Затем вы можете маршрутизировать и использовать Iptables (брандмауэр) для подынтерфейсов по отдельности.
Это простой способ подключить периметральный межсетевой экран Linux к интернет-провайдеру и создать 10 VLAN-сетей за ним, но используя только один интерфейс Ethernet.
dot q — это стандарт, хотя Cisco считает, что это она его придумала, поэтому он отлично работает на Linux.
EDIT: чтобы включить это
модпроб 8021q
Затем вы можете запустить tcpdump для прослушивания подинтерфейсов.
решение3
Честно говоря, я думаю, что вы используете не тот инструмент — tcpdump больше привязан к IP (L3), тогда как VLAN являются функцией L2 — попробуйте вместо этого использовать Wireshark.