VLAN

VLAN (Virtual Local Area Network) — виртуальная локальная сеть, которая логически разделяет одну физическую сеть второго уровня на несколько независимых широковещательных доменов.

Без VLAN все устройства, подключённые к одному коммутатору или группе связанных коммутаторов, обычно находятся в одном широковещательном домене. Широковещательный кадр, например ARP-запрос, распространяется по всей такой сети.

VLAN позволяет разделить устройства на изолированные логические сегменты:

VLAN 10 — рабочие станции
VLAN 20 — серверы
VLAN 30 — гостевые устройства
VLAN 40 — IP-телефоны
VLAN 99 — управление оборудованием

Устройства из разных VLAN не могут обмениваться трафиком напрямую на втором уровне. Для связи между VLAN необходим маршрутизатор или коммутатор третьего уровня.


Для чего используются VLAN

Основные задачи VLAN:

Пример физической сети без VLAN:

                   +----------------+
Компьютер A -------|                |
Компьютер B -------|   Коммутатор   |
Сервер ------------|                |
Гостевой ноутбук --|                |
                   +----------------+

Все устройства находятся в одном широковещательном домене.

Та же сеть с VLAN:

                   +----------------+
Компьютер A -------| VLAN 10        |
Компьютер B -------| VLAN 10        |
Сервер ------------| VLAN 20        |
Гостевой ноутбук --| VLAN 30        |
                   +----------------+

Теперь широковещательный трафик VLAN 10 не передаётся в VLAN 20 и VLAN 30.


VLAN и широковещательный домен

Широковещательный домен — часть сети, в пределах которой распространяются широковещательные кадры Ethernet.

Например, ARP-запрос отправляется на широковещательный MAC-адрес:

ff:ff:ff:ff:ff:ff

Коммутатор передаст такой кадр на все подходящие порты той же VLAN, кроме порта, с которого кадр был получен.

Если на коммутаторе созданы VLAN 10 и VLAN 20, каждый VLAN является отдельным широковещательным доменом:

VLAN 10 → собственные broadcast-кадры
VLAN 20 → собственные broadcast-кадры

Broadcast-кадр из VLAN 10 не должен попасть в VLAN 20.


VLAN и подсеть

VLAN и IP-подсеть относятся к разным уровням:

Обычно используется соответствие:

одна VLAN = одна IP-подсеть

Например:

VLAN Назначение IP-подсеть Шлюз
10 Пользователи 192.168.10.0/24 192.168.10.1
20 Серверы 192.168.20.0/24 192.168.20.1
30 Гости 192.168.30.0/24 192.168.30.1
99 Управление 192.168.99.0/24 192.168.99.1

Это не техническое требование Ethernet, но стандартная и наиболее понятная архитектура.

Не рекомендуется размещать одну IP-подсеть в нескольких изолированных VLAN. В таком случае устройства могут считать друг друга локальными и отправлять ARP-запросы, но не получать ответы из другой VLAN.

Также обычно не размещают несколько пользовательских подсетей в одной VLAN без конкретной причины. Это усложняет диагностику и не создаёт изоляцию на втором уровне.


Идентификатор VLAN

Каждому VLAN назначается числовой идентификатор — VLAN ID, также называемый VID.

При тегировании IEEE 802.1Q под VLAN ID выделяется 12 бит. Возможный диапазон значений:

0–4095

При этом:

На многих коммутаторах VLAN 1 существует по умолчанию. Его поведение зависит от производителя и модели оборудования.

Пример идентификаторов:

VLAN 10  — USERS
VLAN 20  — SERVERS
VLAN 30  — GUEST
VLAN 40  — VOICE
VLAN 99  — MANAGEMENT

Имя VLAN используется для удобства администратора. Передача кадров и логическое разделение выполняются по числовому VLAN ID.


Порты Access и Trunk

Порты коммутатора обычно работают в одном из двух основных режимов:

Названия режимов и точное поведение могут различаться у разных производителей.


Access-порт

Access-порт предназначен для подключения конечного устройства и обычно относится к одной VLAN.

К access-порту могут подключаться:

Пример:

Компьютер
    |
    | кадры без VLAN-тега
    |
Access-порт, VLAN 10
    |
Коммутатор

Компьютер отправляет обычные Ethernet-кадры без тега 802.1Q. Коммутатор связывает входящие кадры с VLAN, назначенной порту.

Условная конфигурация:

interface port1
  mode access
  access vlan 10

Cisco-подобный пример:

interface GigabitEthernet0/1
 switchport mode access
 switchport access vlan 10

Команды зависят от операционной системы и производителя оборудования.


Trunk-порт

Trunk-порт передаёт трафик нескольких VLAN по одному физическому соединению.

Trunk обычно используется между:

Пример:

+-------------+                     +-------------+
| Коммутатор A|====== trunk ========| Коммутатор B|
| VLAN 10     | VLAN 10, 20, 30     | VLAN 10     |
| VLAN 20     |                     | VLAN 20     |
| VLAN 30     |                     | VLAN 30     |
+-------------+                     +-------------+

Чтобы принимающее устройство могло определить принадлежность кадра к VLAN, кадр обычно получает тег IEEE 802.1Q.

Условная конфигурация:

interface uplink1
  mode trunk
  allowed vlans 10,20,30

Cisco-подобный пример:

interface GigabitEthernet0/24
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30

Рекомендуется явно ограничивать список разрешённых VLAN, а не передавать через trunk все существующие VLAN.


IEEE 802.1Q

IEEE 802.1Q — стандарт тегирования Ethernet-кадров для передачи трафика VLAN.

В обычный Ethernet-кадр добавляется четырёхбайтовое поле:

Обычный Ethernet:

[Destination MAC][Source MAC][EtherType][Payload][FCS]

Ethernet с 802.1Q:

[Destination MAC][Source MAC][802.1Q Tag][EtherType][Payload][FCS]

Тег 802.1Q занимает 4 байта и содержит:

Общая структура:

802.1Q tag — 32 бита

+----------------+-----+-----+--------------+
| TPID, 16 бит   | PCP | DEI | VID, 12 бит |
+----------------+-----+-----+--------------+

TPID

TPID (Tag Protocol Identifier) указывает, что кадр содержит тег 802.1Q.

Стандартное значение:

0x8100

PCP

PCP (Priority Code Point) — трёхбитное поле приоритета IEEE 802.1p.

Возможные значения:

0–7

PCP может использоваться механизмами качества обслуживания — QoS.

DEI

DEI (Drop Eligible Indicator) показывает, что кадр может быть отброшен при перегрузке сети.

VID

VID (VLAN Identifier) — двенадцатибитный идентификатор VLAN.


Tagged и untagged трафик

Трафик на порту может быть:

Типичное поведение:

Access-порт:
входящие кадры  — untagged
исходящие кадры — untagged

Trunk-порт:
кадры нескольких VLAN — tagged
native VLAN            — иногда untagged

На некоторых устройствах конфигурация задаётся не режимами access и trunk, а членством VLAN:

Port 1:
  VLAN 10 untagged
  PVID 10

Port 24:
  VLAN 10 tagged
  VLAN 20 tagged
  VLAN 30 tagged

Один физический порт обычно может иметь несколько tagged VLAN, но только одну основную untagged VLAN.


PVID

PVID (Port VLAN Identifier) — VLAN, в которую коммутатор помещает входящий кадр без VLAN-тега.

Пример:

Порт:
  VLAN 10 untagged
  PVID 10

Если на этот порт приходит нетегированный кадр, коммутатор обрабатывает его как кадр VLAN 10.

PVID особенно важен на оборудовании, где VLAN настраиваются через tagged/untagged membership.

Частая ошибка — назначить порту VLAN 10 как untagged, но оставить PVID 1. Входящий нетегированный трафик в таком случае может попасть не в ожидаемую VLAN.


Native VLAN

Native VLAN — VLAN, трафик которой может передаваться через trunk без тега.

Например:

Trunk:
  VLAN 10 tagged
  VLAN 20 tagged
  VLAN 99 native

Кадры VLAN 99 могут передаваться без тега, а кадры VLAN 10 и VLAN 20 — с тегами.

Native VLAN на обоих концах trunk-соединения должна совпадать:

Коммутатор A: native VLAN 99
Коммутатор B: native VLAN 99

Если значения различаются, нетегированный кадр может быть отнесён к разным VLAN на разных концах линии.

Пример некорректной конфигурации:

Коммутатор A: native VLAN 10
Коммутатор B: native VLAN 20

Такое расхождение называется native VLAN mismatch и может приводить к:

Если оборудование позволяет, часто рекомендуется:

Конкретные рекомендации зависят от возможностей оборудования.


Передача кадра внутри VLAN

Рассмотрим два компьютера в VLAN 10:

PC-A ---- port 1     Коммутатор     port 2 ---- PC-B
         VLAN 10                     VLAN 10

Пусть:

PC-A:
  IP  192.168.10.11
  MAC AA:AA:AA:AA:AA:AA

PC-B:
  IP  192.168.10.22
  MAC BB:BB:BB:BB:BB:BB

Когда PC-A хочет отправить IP-пакет PC-B:

  1. PC-A определяет, что адрес PC-B находится в локальной подсети.
  2. PC-A проверяет ARP-таблицу.
  3. Если MAC-адрес неизвестен, PC-A отправляет ARP-запрос.
  4. Коммутатор распространяет ARP-запрос только внутри VLAN 10.
  5. PC-B отправляет ARP-ответ.
  6. PC-A формирует Ethernet-кадр с MAC-адресом PC-B.
  7. Коммутатор передаёт кадр через порт PC-B.

Маршрутизатор для такого обмена не требуется.


Таблица MAC-адресов и VLAN

Коммутатор изучает исходные MAC-адреса получаемых кадров и сохраняет их в таблице MAC-адресов.

Записи фактически связаны не только с портом, но и с VLAN:

VLAN  MAC-адрес          Порт
10    AA:AA:AA:AA:AA:AA  Gi0/1
10    BB:BB:BB:BB:BB:BB  Gi0/2
20    CC:CC:CC:CC:CC:CC  Gi0/3

Одинаковый MAC-адрес теоретически может появляться в разных VLAN, поскольку VLAN представляют разные логические сети второго уровня.

Если MAC-адрес назначения неизвестен, коммутатор выполняет unknown unicast flooding — передаёт кадр на другие подходящие порты этой VLAN.

Трафик при этом не должен выходить за пределы соответствующей VLAN.


Связь между VLAN

Устройства из разных VLAN находятся в разных широковещательных доменах. Для обмена данными требуется маршрутизация.

Возможные варианты:


Router-on-a-Stick

Router-on-a-Stick — схема, при которой маршрутизатор обслуживает несколько VLAN через один физический trunk-интерфейс.

VLAN 10 ----\
             \
VLAN 20 ------ Коммутатор ===== trunk ===== Маршрутизатор
             /
VLAN 30 ----/

На физическом интерфейсе маршрутизатора создаются логические подинтерфейсы:

eth0.10 → VLAN 10 → 192.168.10.1/24
eth0.20 → VLAN 20 → 192.168.20.1/24
eth0.30 → VLAN 30 → 192.168.30.1/24

Cisco-подобный пример:

interface GigabitEthernet0/0
 no shutdown

interface GigabitEthernet0/0.10
 encapsulation dot1Q 10
 ip address 192.168.10.1 255.255.255.0

interface GigabitEthernet0/0.20
 encapsulation dot1Q 20
 ip address 192.168.20.1 255.255.255.0

interface GigabitEthernet0/0.30
 encapsulation dot1Q 30
 ip address 192.168.30.1 255.255.255.0

Преимущества:

Недостатки:


SVI и L3-коммутатор

SVI (Switched Virtual Interface) — виртуальный интерфейс VLAN на коммутаторе третьего уровня.

Пример:

VLAN 10 → interface vlan 10 → 192.168.10.1/24
VLAN 20 → interface vlan 20 → 192.168.20.1/24
VLAN 30 → interface vlan 30 → 192.168.30.1/24

Cisco-подобная конфигурация:

ip routing

interface vlan 10
 ip address 192.168.10.1 255.255.255.0
 no shutdown

interface vlan 20
 ip address 192.168.20.1 255.255.255.0
 no shutdown

interface vlan 30
 ip address 192.168.30.1 255.255.255.0
 no shutdown

Клиенты VLAN 10 используют шлюз:

192.168.10.1

Клиенты VLAN 20 используют:

192.168.20.1

L3-коммутатор может маршрутизировать трафик между VLAN внутри устройства.

Сам факт создания SVI иногда недостаточен. В зависимости от оборудования необходимо:


Путь пакета между VLAN

Пусть компьютер из VLAN 10 обращается к серверу из VLAN 20:

Клиент:
  IP      192.168.10.10/24
  Шлюз    192.168.10.1

Сервер:
  IP      192.168.20.20/24
  Шлюз    192.168.20.1

Порядок обмена:

  1. Клиент сравнивает адрес назначения со своей подсетью.
  2. Адрес 192.168.20.20 не относится к 192.168.10.0/24.
  3. Клиент решает передать пакет шлюзу 192.168.10.1.
  4. Клиент определяет MAC-адрес шлюза через ARP.
  5. Ethernet-кадр передаётся в VLAN 10.
  6. Маршрутизатор получает IP-пакет и выбирает маршрут в сеть 192.168.20.0/24.
  7. Маршрутизатор определяет MAC-адрес сервера в VLAN 20.
  8. Для передачи в VLAN 20 создаётся новый Ethernet-кадр.
  9. Сервер получает пакет.
  10. Ответ отправляется через шлюз сервера в обратном направлении.

При маршрутизации:


DHCP и VLAN

DHCP-клиент начинает работу с широковещательного сообщения. Broadcast не маршрутизируется между VLAN обычным способом.

Если DHCP-сервер расположен в той же VLAN, клиент может получить адрес напрямую:

Клиент VLAN 10 → DHCP-сервер VLAN 10

Если один DHCP-сервер обслуживает несколько VLAN, на маршрутизаторе или L3-коммутаторе настраивается DHCP Relay.

Схема:

Клиент VLAN 10
       |
       | DHCP broadcast
       v
Шлюз VLAN 10 / DHCP Relay
       |
       | unicast
       v
DHCP-сервер VLAN 20

Cisco-подобный пример:

interface vlan 10
 ip address 192.168.10.1 255.255.255.0
 ip helper-address 192.168.20.50

На DHCP-сервере должны существовать отдельные пулы:

VLAN 10:
  сеть    192.168.10.0/24
  шлюз    192.168.10.1

VLAN 20:
  сеть    192.168.20.0/24
  шлюз    192.168.20.1

DHCP Relay сообщает серверу, из какой сети поступил запрос, чтобы сервер выбрал правильный пул адресов.


Voice VLAN

Voice VLAN используется для отделения трафика IP-телефонов от обычного пользовательского трафика.

Типичная схема:

Коммутатор
    |
    | один физический порт
    |
IP-телефон
    |
    |
Компьютер

Через один порт могут передаваться:

Пример логики:

Data VLAN  → VLAN 10
Voice VLAN → VLAN 40

Cisco-подобная конфигурация:

interface GigabitEthernet0/5
 switchport mode access
 switchport access vlan 10
 switchport voice vlan 40

Телефон может узнать Voice VLAN через протокол обнаружения оборудования, например LLDP-MED, если он поддерживается и настроен.

Для голосового трафика также часто применяются:


Management VLAN

Management VLAN — отдельная VLAN для управления сетевым оборудованием.

Через неё могут быть доступны:

Пример:

VLAN 99 — MANAGEMENT
Подсеть 192.168.99.0/24

Управляющий адрес коммутатора:

192.168.99.10/24

Шлюз управления:

192.168.99.1

Доступ к Management VLAN рекомендуется ограничивать:


VLAN на точках доступа

Одна точка доступа Wi-Fi может обслуживать несколько SSID и связывать каждый SSID с отдельной VLAN.

Пример:

SSID OFFICE → VLAN 10
SSID GUEST  → VLAN 30
SSID IOT    → VLAN 50

Соединение между точкой доступа и коммутатором обычно работает как trunk:

Access Point ===== trunk ===== Switch
                 VLAN 10
                 VLAN 30
                 VLAN 50

Пример назначения:

VLAN 10 tagged
VLAN 30 tagged
VLAN 50 tagged
Management VLAN 99 untagged или tagged

Конкретный вариант Management VLAN зависит от модели точки доступа и её конфигурации.

Если нужная VLAN не разрешена на trunk, клиенты соответствующего SSID могут:


VLAN и виртуализация

Сервер виртуализации может принимать трафик нескольких VLAN через один или несколько trunk-интерфейсов.

Физический коммутатор
          |
          | trunk: VLAN 10, 20, 30
          |
Гипервизор
    |
    +-- VM-1 → VLAN 10
    +-- VM-2 → VLAN 20
    +-- VM-3 → VLAN 30

VLAN может назначаться:

Важно понимать, где добавляется и удаляется тег:

Вариант 1:
Физический trunk → гипервизор снимает тег → VM получает untagged

Вариант 2:
Физический trunk → тег передаётся внутрь VM → VM обрабатывает VLAN

Одновременное тегирование на нескольких уровнях без понимания схемы может привести к двойному тегированию или потере связи.


VLAN в Linux

В Linux VLAN-интерфейс можно создать поверх физического интерфейса.

Пример с командой ip:

sudo ip link add link eth0 name eth0.10 type vlan id 10
sudo ip address add 192.168.10.10/24 dev eth0.10
sudo ip link set eth0 up
sudo ip link set eth0.10 up

В результате:

eth0    — физический интерфейс
eth0.10 — логический интерфейс VLAN 10

Просмотр конфигурации:

ip -d link show eth0.10
ip address show eth0.10

Создание второго VLAN-интерфейса:

sudo ip link add link eth0 name eth0.20 type vlan id 20
sudo ip address add 192.168.20.10/24 dev eth0.20
sudo ip link set eth0.20 up

Удаление:

sudo ip link delete eth0.10

Такая конфигурация, созданная через ip, обычно не сохраняется после перезагрузки. Для постоянной настройки используются средства конкретного дистрибутива, например NetworkManager, systemd-networkd или Netplan.


VLAN и Linux bridge

Linux bridge может выполнять функции программного коммутатора.

Упрощённый пример создания моста:

sudo ip link add name br0 type bridge
sudo ip link set eth0 master br0
sudo ip link set eth1 master br0
sudo ip link set br0 up
sudo ip link set eth0 up
sudo ip link set eth1 up

Для VLAN-aware bridge можно включить фильтрацию VLAN:

sudo ip link set br0 type bridge vlan_filtering 1

Просмотр VLAN:

bridge vlan show

Настройка VLAN через bridge vlan требует точного понимания параметров:

Пример назначения VLAN 10 порту как untagged с PVID 10:

sudo bridge vlan add dev eth1 vid 10 pvid untagged

Пример разрешения тегированного VLAN 10 на trunk-порту:

sudo bridge vlan add dev eth0 vid 10

Конкретная конфигурация зависит от схемы сети и версии сетевых компонентов Linux.


VLAN и STP

VLAN не устраняет возможность образования петель второго уровня.

Пример петли:

Switch A ===== Switch B
    \           /
     \=========/

Если между коммутаторами существуют избыточные соединения без механизма защиты, кадры могут циркулировать бесконечно.

В Ethernet-кадре нет аналога IP-поля TTL. Поэтому петля может вызвать:

Для предотвращения петель используются протоколы семейства STP:

В зависимости от реализации STP может строить дерево:

Необходимо следить, чтобы конфигурация VLAN и trunk была согласована с используемым режимом STP.


VLAN Pruning

VLAN pruning — ограничение распространения трафика VLAN по trunk-соединениям, где эта VLAN не требуется.

Например:

Switch A --- Switch B --- Switch C

VLAN 10 используется на A и B.
На C VLAN 10 отсутствует.

Нет необходимости разрешать VLAN 10 на trunk между B и C.

Явное ограничение:

A ↔ B: VLAN 10,20,30
B ↔ C: VLAN 20,30

Преимущества:


VLAN и MTU

Тег 802.1Q добавляет к Ethernet-кадру 4 байта.

Обычный Ethernet-кадр без преамбулы и межкадрового интервала имеет максимальный размер:

1518 байт

Кадр с тегом 802.1Q может иметь размер:

1522 байта

Современное сетевое оборудование обычно поддерживает такие кадры. Однако проблемы могут возникнуть при:

Следует различать:


Q-in-Q

Q-in-Q, или 802.1ad, позволяет поместить один VLAN-тег внутрь другого.

Упрощённая структура:

[Outer VLAN tag][Inner VLAN tag][Payload]

Теги часто называют:

Пример:

Клиент использует VLAN 10.
Провайдер добавляет внешний VLAN 500.

В сети провайдера кадр передаётся как:

S-VLAN 500
  └── C-VLAN 10

Q-in-Q может использоваться операторами для передачи клиентских VLAN через общую инфраструктуру. Для базовых локальных сетей обычного 802.1Q обычно достаточно.


Private VLAN

Private VLAN (PVLAN) — механизм дополнительной изоляции портов внутри одной основной VLAN.

Типичные категории:

Общее поведение:

PVLAN может применяться:

Поддержка и синтаксис зависят от производителя оборудования.


Безопасность VLAN

VLAN обеспечивает логическую сегментацию, но сам по себе не заменяет firewall.

Если между VLAN включена маршрутизация без ограничений, устройства из разных VLAN могут свободно обмениваться трафиком.

Например:

VLAN 10 — пользователи
VLAN 20 — серверы

Если маршрутизатор разрешает любой трафик, разделение на VLAN не защищает серверы от пользователей на сетевом уровне.

Для контроля доступа применяются:

Пример политики:

VLAN 10 → VLAN 20:
  разрешить HTTPS к серверу 192.168.20.20
  запретить остальной трафик

VLAN 30 → внутренние VLAN:
  запретить

VLAN 30 → Интернет:
  разрешить

VLAN hopping

VLAN hopping — группа атак или ошибочных сценариев, при которых устройство пытается получить доступ к трафику другой VLAN.

Классические варианты:

Несанкционированное формирование trunk

Если порт автоматически согласовывает режим trunk, подключённое устройство может попытаться выдать себя за коммутатор.

Меры защиты:

Double tagging

При двойном тегировании кадр содержит два VLAN-тега. В определённых условиях первый коммутатор может удалить внешний тег, после чего кадр с внутренним тегом попадёт в другую VLAN.

Риск связан, в частности, с использованием native VLAN.

Меры защиты:


Другие базовые меры защиты

Для повышения безопасности VLAN-инфраструктуры рекомендуется:

Доступность функций зависит от оборудования.


Проектирование VLAN

При проектировании важно определить назначение каждой VLAN.

Пример плана:

VLAN ID Имя Назначение Подсеть
10 USERS Рабочие станции 10.10.10.0/24
20 SERVERS Серверы 10.10.20.0/24
30 GUEST Гостевой Wi-Fi 10.10.30.0/24
40 VOICE IP-телефония 10.10.40.0/24
50 IOT IoT-устройства 10.10.50.0/24
60 CAMERAS Камеры 10.10.60.0/24
99 MANAGEMENT Управление 10.10.99.0/24

Для каждой VLAN желательно определить:

Не следует создавать VLAN только ради формального разделения. Каждая VLAN должна иметь понятную функцию и правила взаимодействия с другими сегментами.


Типовая конфигурация коммутатора

Ниже приведён Cisco-подобный пример. Точные команды зависят от платформы.

Создание VLAN:

vlan 10
 name USERS

vlan 20
 name SERVERS

vlan 30
 name GUEST

vlan 99
 name MANAGEMENT

Пользовательский access-порт:

interface GigabitEthernet0/1
 description USER-PC
 switchport mode access
 switchport access vlan 10
 spanning-tree portfast
 spanning-tree bpduguard enable

Серверный access-порт:

interface GigabitEthernet0/2
 description SERVER
 switchport mode access
 switchport access vlan 20

Trunk между коммутаторами:

interface GigabitEthernet0/24
 description UPLINK-TO-SW2
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30,99

Интерфейс управления:

interface vlan 99
 ip address 10.10.99.10 255.255.255.0
 no shutdown

Шлюз для L2-коммутатора:

ip default-gateway 10.10.99.1

На L3-коммутаторе вместо ip default-gateway обычно используется маршрутизация и маршрут по умолчанию.


Проверка VLAN

Набор команд зависит от производителя, но обычно необходимо проверить:

Cisco-подобные команды:

show vlan brief
show interfaces switchport
show interfaces trunk
show mac address-table
show spanning-tree
show ip interface brief
show ip route
show access-lists

Linux:

ip link show
ip -d link show
ip address show
ip route show
bridge link show
bridge vlan show
bridge fdb show

Просмотр VLAN-тегов через tcpdump:

sudo tcpdump -eni eth0 vlan

Трафик конкретной VLAN:

sudo tcpdump -eni eth0 vlan 10

Подробный захват:

sudo tcpdump -vvv -eni eth0

Иногда сетевой адаптер удаляет VLAN-тег аппаратно до передачи кадра системе. Из-за VLAN offloading тег может быть не виден в захвате на ожидаемом интерфейсе.


Диагностика проблем VLAN

Устройство не получает IP-адрес

Следует проверить:

  1. Находится ли клиентский порт в правильной VLAN.
  2. Совпадает ли PVID с untagged VLAN.
  3. Разрешена ли VLAN на всех trunk-соединениях по пути.
  4. Создана ли VLAN на промежуточных коммутаторах.
  5. Работает ли DHCP-сервер.
  6. Настроен ли DHCP Relay.
  7. Существует ли DHCP-пул для нужной подсети.
  8. Не исчерпан ли диапазон адресов.
  9. Не блокируется ли DHCP механизмами безопасности.
  10. Нет ли ошибки native VLAN.

Полезные действия на клиенте:

ip address
ip route

Linux — запрос нового адреса:

sudo dhclient -v

Windows:

ipconfig /all
ipconfig /release
ipconfig /renew

Устройства одной VLAN не видят друг друга

Необходимо проверить:

Команды:

ip address
ip neighbor
ping <IP-адрес>
arp -n

На коммутаторе:

show mac address-table vlan 10
show vlan brief
show interfaces trunk

Устройства разных VLAN не видят друг друга

Следует проверить:

Проверка с клиента:

ip route
ping <локальный шлюз>
traceroute <адрес в другой VLAN>

Windows:

route print
ping <локальный шлюз>
tracert <адрес в другой VLAN>

VLAN работает на одном коммутаторе, но не проходит на другой

Возможные причины:

Проверка должна выполняться на обоих концах линии.


Связь работает нестабильно

Возможные причины:

Признак MAC flapping — один MAC-адрес быстро появляется на разных портах.

Это может указывать на:


Типичные ошибки

VLAN создана только на одном коммутаторе

Если кадр должен пройти через несколько коммутаторов, VLAN должна быть корректно настроена на всём необходимом пути.

Switch A → Switch B → Switch C

Недостаточно создать VLAN только на Switch A.

VLAN не разрешена на trunk

Даже если VLAN существует на обоих коммутаторах, трафик не пройдёт, если её нет в списке разрешённых VLAN.

allowed VLANs: 10,20

Трафик VLAN 30 через такой trunk не передаётся.

Неправильный PVID

Порт может отправлять VLAN 10 как untagged, но принимать нетегированный трафик в VLAN 1 из-за неверного PVID.

Несовпадение native VLAN

Нетегированные кадры относятся к разным VLAN на концах trunk.

Неправильный шлюз

Устройство VLAN 10 должно использовать шлюз своей подсети:

IP:      192.168.10.25/24
Шлюз:    192.168.10.1

Шлюз из VLAN 20 не будет правильным:

192.168.20.1

Есть VLAN, но нет маршрутизации

Создание VLAN разделяет сеть. Оно не включает автоматическую связь между сегментами.

Маршрутизация включена без правил безопасности

После включения inter-VLAN routing все VLAN могут получить взаимный доступ, если ACL или firewall не ограничивают трафик.

Тегирование выполняется дважды

Гипервизор, операционная система и сетевой адаптер могут одновременно пытаться добавлять VLAN-теги. Необходимо определить единственную понятную точку тегирования.


Практический пример

Требуется создать сеть:

VLAN 10 — сотрудники
VLAN 20 — серверы
VLAN 30 — гости

Адресация:

VLAN 10:
  сеть  192.168.10.0/24
  шлюз  192.168.10.1

VLAN 20:
  сеть  192.168.20.0/24
  шлюз  192.168.20.1

VLAN 30:
  сеть  192.168.30.0/24
  шлюз  192.168.30.1

Физическая схема:

ПК сотрудника ---- access VLAN 10 ---\
                                      \
Сервер ------------ access VLAN 20 ---- L3-коммутатор
                                      /
Точка доступа ----- trunk 10,30 -----/

Политика доступа:

VLAN 10 → VLAN 20:
  разрешить необходимые сервисы

VLAN 10 → Интернет:
  разрешить

VLAN 30 → VLAN 10:
  запретить

VLAN 30 → VLAN 20:
  запретить

VLAN 30 → Интернет:
  разрешить

Создание VLAN:

vlan 10
 name USERS

vlan 20
 name SERVERS

vlan 30
 name GUEST

Порты:

interface GigabitEthernet0/1
 switchport mode access
 switchport access vlan 10

interface GigabitEthernet0/2
 switchport mode access
 switchport access vlan 20

interface GigabitEthernet0/3
 switchport mode trunk
 switchport trunk allowed vlan 10,30

Шлюзы:

ip routing

interface vlan 10
 ip address 192.168.10.1 255.255.255.0

interface vlan 20
 ip address 192.168.20.1 255.255.255.0

interface vlan 30
 ip address 192.168.30.1 255.255.255.0

После этого необходимо настроить правила ACL или firewall в соответствии с политикой доступа.


Краткая памятка

VLAN
  = отдельный широковещательный домен L2

Access-порт
  = обычно одна VLAN без тегов для конечного устройства

Trunk-порт
  = несколько VLAN по одному соединению

802.1Q
  = стандарт добавления VLAN-тега в Ethernet-кадр

VLAN ID
  = идентификатор VLAN, рабочий диапазон 1–4094

PVID
  = VLAN для входящего нетегированного трафика

Native VLAN
  = VLAN, которая может передаваться через trunk без тега

Inter-VLAN routing
  = маршрутизация между разными VLAN

SVI
  = виртуальный L3-интерфейс VLAN на коммутаторе

Router-on-a-Stick
  = маршрутизация нескольких VLAN через один trunk-интерфейс

DHCP Relay
  = пересылка DHCP-запросов из VLAN на удалённый DHCP-сервер

Основной принцип:

Одна VLAN обычно соответствует одной IP-подсети.
Внутри VLAN работает коммутация.
Между VLAN работает маршрутизация.
Доступ между VLAN контролируется ACL или firewall.

При диагностике следует последовательно проверять:

физическое соединение
→ режим порта
→ PVID и untagged VLAN
→ наличие VLAN
→ список VLAN на trunk
→ MAC-таблицу
→ IP-адрес и маску
→ шлюз
→ маршрутизацию
→ ACL и firewall
→ DHCP и DNS