Я пытаюсь поэкспериментировать с интерфейсом vlan на своем настольном компьютере с Ubuntu. Рабочий стол имеет только один интерфейс (eth0), подключенный к локальной сети компании. После использования vconfig для создания интерфейса vlan при запуске wirehark на интерфейсе исходящие пакеты не отображаются как помеченные vlan. Вот что я сделал:
$ ifconfig
eth0 Link encap:Ethernet HWaddr 84:2b:2b:87:2c:87
inet addr:192.168.0.126 Bcast:192.168.0.255 Mask:255.255.255.0
etc...
Затем добавляю интерфейс vlan:
$ sudo vconfig add eth0 55
$ sudo ifconfig eth0.55 192.168.10.100 netmask 255.255.255.0 up
$ sudo ifconfig eth0.55 mtu 1412
$ ifconfig -a
eth0 Link encap:Ethernet HWaddr 84:2b:2b:87:2c:87
inet addr:192.168.0.126 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::862b:2bff:fe87:2c87/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12195 errors:0 dropped:0 overruns:0 frame:0
TX packets:7435 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6831057 (6.8 MB) TX bytes:1138706 (1.1 MB)
Interrupt:18
eth0.55 Link encap:Ethernet HWaddr 84:2b:2b:87:2c:87
inet addr:192.168.10.100 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::862b:2bff:fe87:2c87/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1412 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:168 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:23515 (23.5 KB)
Пока все хорошо .. Вот дополнительная информация по теме:
$ sudo cat /proc/net/vlan/eth0.55
eth0.55 VID: 55 REORDER_HDR: 1 dev->priv_flags: 1
total frames received 0
total bytes received 0
Broadcast/Multicast Rcvd 0
total frames transmitted 170
total bytes transmitted 23697
Device: eth0
INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0
EGRESS priority mappings:
$ sudo iptables -L -v
Chain INPUT (policy ACCEPT 3317 packets, 2230K bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 1528 packets, 189K bytes)
pkts bytes target prot opt in out source destination
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0.55
Теперь я пытаюсь пропинговать несуществующую машину в диапазоне 192.168.10.xx:
$ ping -I eth0.55 192.168.10.101
Однако при захвате этого интерфейса с помощью wirehark или tcpdump я вижу, что отправляются обычные сообщения arp. Они НЕ имеют тегов vlan. (Меня здесь интересует сначала посмотреть, смогу ли я получить пакеты vlan из моей машины ... работа с реальными vlan будет позже). Я также могу пинговать интерфейс eth0.55 с виртуальной машины vbox на том же компьютере.
$ sudo /usr/sbin/tcpdump -vv -i eth0.55
tcpdump: listening on eth0.55, link-type EN10MB (Ethernet), capture size 65535 bytes
11:55:52.625984 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.10.101 tell 192.168.10.100, length 28
11:55:53.625983 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.10.101 tell 192.168.10.100, length 28
Я даже попробовал команду set_flag, но все равно ничего не вышло:
$ sudo vconfig set_flag eth0.55 0
Что мне не хватает?
Вот похожий вопрос: Теги VLAN не отображаются при захвате пакетов (Linux) через tcpdump
На самом деле то, что вы видели, - это пакеты, отфильтрованные ядром при использовании tcpdump, где уровень vlan удален, поэтому он всегда выглядит нетегированным.
Вы уже видели, что кадры переданы через /proc/net/vlan/eth0.55
так что работает очень хорошо.
В соответствии с вашим случаем используйте эту команду, чтобы увидеть тег VLAN:
tcpdump -Uw - | tcpdump -i eth0 -en -r - vlan 55
Чтобы увидеть актуальный 802.1q
теги, попробуйте захватить в базовом физическом интерфейсе, т.е. eth0
, куда входят / исходят пакеты.
Наверное, вы ничего не пропустите.
Если у вас нет vlan на интерфейсе, вы можете увидеть теги 802.1q с помощью tcpdump.
Когда вы добавляете vlan в интерфейс, модуль 8021q включает аппаратное ускорение и ... вы перестаете видеть теги. Вы увидите разделенный трафик на подинтерфейсах, но tcpdump на главном интерфейсе покажет трафик из все субинтерфейсы с вырезанными тегами.
Если у вас есть современные ethtool
тогда вы можете посмотреть на ethtool -k eth0
вывод, и вы можете попробовать отключить ускорение с помощью ethtool -K eth0 rxvlan off; ethtool -K eth0 txvlan off;
(честно говоря - я никогда не проверяю, помогает ли видеть теги и не имею доступа к хорошему хозяину лаборатории прямо сейчас для проверки).
Но я думаю, вам следует просто настроить остальную часть своей инфраструктуры и попытаться увидеть, работает ли она должным образом (см. Тегированные запросы arp на другом компьютере с не загруженным модулем 8021q).