Сети с нуля 13. VLAN и сегментация сети: метка 802.1Q, trunk и маршрутизация
Note
Материал сверен с официальной документацией (RFC, реестры IANA, Microsoft Learn и др.; ссылки — в конце статьи). Примеры вывода — иллюстрации: на вашей системе значения и формат могут отличаться. Перед работой на боевом оборудовании проверьте шаги на тестовом стенде.
Офис вырос: к проводной сети добавились гостевой Wi-Fi, камеры, IP-телефоны и пара серверов. Всё это включено в одни и те же коммутаторы и живёт в одной подсети, поэтому телефон гостя технически находится «в одной комнате» с принтером и сервером. В таких случаях обычно советуют: «разнесите по VLAN». В этой статье мы разберём:
- зачем делить сеть на сегменты и что для этого даёт VLAN (Virtual LAN, виртуальная локальная сеть);
- как коммутаторы различают VLAN: номер VLAN и метка 802.1Q;
- чем порты access и trunk отличаются друг от друга и что такое native VLAN;
- почему одной VLAN, как правило, соответствует одна подсеть и как пакеты ходят между VLAN;
- как увидеть VLAN в Windows и Hyper-V и какие ошибки встречаются чаще всего.
Настройка устройств описана в сериях о Cisco и MikroTik (ссылки — в конце); здесь — теория.
Что нужно знать заранее
- Сети с нуля 02. Ethernet, MAC-адреса, коммутатор и кабели — кадр, EtherType, коммутатор, широковещательный домен.
- Сети с нуля 03. IPv4-адреса и маски подсети и Сети с нуля 05. Как пакет находит путь: шлюз, маршруты и ARP — адрес, маска, шлюз.
- Сети с нуля 06. DHCP: как устройство получает адрес — широковещательный запрос DHCP не выходит за пределы своей VLAN.
В сквозной сети серии все устройства пока стоят в одной подсети 192.168.10.0/24. В этой статье мы мысленно делим её на сегменты: это учебный план, а не описание вашей сети. В сериях Cisco и MikroTik учебные стенды используют свои адреса: сверяйте роли узлов, а не номера. Пробовать VLAN безопаснее всего в лаборатории: Домашняя лаборатория администратора и Hyper-V или Proxmox для начинающих.
Зачем делить сеть на сегменты
Сегментацию сети (network segmentation) CISA определяет как физический или виртуальный архитектурный подход: сеть делится на сегменты, каждый из которых работает как отдельная подсеть и даёт дополнительную безопасность и контроль. На практике причин три.
Широковещательный домен. В обычной коммутируемой сети все порты образуют один широковещательный домен (статья 02): ARP-запросы, DHCP Discover и другие широковещательные кадры получает каждый узел. Чем больше устройств, тем больше «чужих» кадров обрабатывает каждая сетевая карта; деление сети удерживает широковещание внутри своей группы.
Безопасность. Устройство в одной подсети с сервером обращается к нему напрямую, минуя маршрутизатор и межсетевой экран. Если сеть разделена, любое обращение между сегментами проходит через точку, где можно запретить лишнее: камера с устаревшей прошивкой или телефон гостя не получают сразу доступ ко всей сети.
Управляемость. У разных групп разные правила: гостям — только интернет, принтерам — только печать, IP-телефонии — приоритет (статья 16). Адреса по ролям читаются проще: 192.168.40.x — это серверы.
Сегменты можно сделать физически (отдельные коммутаторы и кабели на каждую группу) или логически: VLAN позволяют одному коммутатору обслуживать несколько изолированных логических сетей.
Две оговорки (практика автора). VLAN сама ничего не запрещает: она лишь проводит границу, а что через неё пропускать, решают правила на маршрутизаторе или межсетевом экране. И сегментация усложняет сеть: больше подсетей, шлюзов и мест для ошибки. Для десятка компьютеров и принтера плоская сеть может быть разумным выбором; делить стоит, когда есть причина: гости, камеры, серверы с важными данными.
Что такое VLAN и VLAN ID
VLAN — логическая сеть второго уровня. Коммутатор делит порты на группы, и кадры, включая широковещательные, ходят только между портами одной группы. Соседние порты одного корпуса могут оказаться в разных сетях и «не знать» друг о друге. Между VLAN трафик возможен только через устройство третьего уровня — маршрутизатор (статья 05).
У каждой VLAN есть номер — VLAN ID (VID), 12-битное число. По RFC 4363 (описание объектов управления для коммутаторов) это VLAN-ID из заголовка метки VLAN с допустимым диапазоном 1–4094; значения 0 и 4095, как сообщили авторам RFC в IEEE, не обозначают конкретную VLAN. Значит, на одном коммутаторе доступно до 4094 номеров. Для офиса этого хватает с запасом; в больших центрах обработки данных такой предел считают тесным (RFC 7348), и там применяют другие технологии, например VXLAN, которую мы не разбираем.
Сам по себе номер ничего не значит: смысл «VLAN 40» придаёте вы. Удобная привычка — совпадение номера VLAN с третьим октетом подсети: VLAN 40 — 192.168.40.0/24 (практика автора). Имя VLAN, например SERVERS, — подпись для администратора, в кадре его нет.
Метка 802.1Q
Если между двумя коммутаторами один кабель, а VLAN несколько, коммутатору нужно сообщить соседу, к какой VLAN относится каждый кадр. Для этого кадр помечают: после MAC-адресов вставляют 4 байта — метку стандарта IEEE 802.1Q. Сам стандарт IEEE 802.1Q-2022 доступен бесплатно через программу IEEE GET (нужна регистрация на IEEE Xplore); здесь описание дано по открытым источникам — реестру IANA, RFC, документации Microsoft и Wireshark, а редкие поля и режимы смотрите в самом стандарте.
Обычный кадр:
MAC получателя | MAC отправителя | EtherType | Данные | FCS
Кадр с меткой 802.1Q:
MAC получателя | MAC отправителя | 0x8100 | поле | EtherType | ...
\_ 4 байта __/
Поле метки (2 байта после 0x8100):
PCP: 3 бита | DEI: 1 бит | VID (номер VLAN): 12 бит
FCS на схеме — контрольная сумма кадра (статья 02). Метка состоит из значения 0x8100 и следующего за ним двухбайтного поля:
- 0x8100 стоит там, где у обычного кадра находится EtherType. В реестре IANA это значение названо Customer VLAN Tag Type (C-Tag): оно сообщает приёмнику, что дальше идёт метка, а настоящий EtherType (например,
0x0800для IPv4) записан после неё. - PCP (Priority Code Point, 3 бита) — приоритет кадра. Microsoft Learn описывает 802.1p как 3-битное поле PCP внутри метки 802.1Q с восемью уровнями приоритета; применяют его для QoS (статья 16).
- DEI (Drop Eligible Indicator, 1 бит) — по названию, признак кадра, который допустимо отбросить при перегрузке. В старых версиях стандарта на его месте стоял бит CFI (Wireshark Wiki).
- VID — VLAN ID, те самые 12 бит.
Метка прибавляет к кадру 4 байта: максимальный кадр на проводе вырастает с 1518 до 1522 байт с учётом FCS (статья 02), а поле данных остаётся до 1500 байт (Wireshark Wiki: кадр с меткой на 4 байта длиннее обычного). MTU узлов, как правило, остаётся 1500, но оборудование и драйверы, не рассчитанные на такие кадры, могут уменьшать MTU или отбрасывать кадры (статья 20). У провайдеров встречается «двойная» метка (Q-in-Q) с EtherType 0x88A8 (в реестре IANA — S-Tag).
Обычные устройства меток не видят: компьютер, принтер, сервер отправляют и принимают кадры без метки. Добавляет и снимает метку коммутатор, в зависимости от режима порта.
Порты access и trunk
Названия режимов «access» и «trunk» — привычная лексика документации коммутаторов; там же встречаются слова tagged и untagged — «с меткой» и «без метки». В Hyper-V режимы называются так же, а в Linux те же идеи выражены через pvid и untagged (таблица ниже).
Access-порт принадлежит одной VLAN. Устройство, например PC1, отправляет обычные кадры без метки, а коммутатор считает, что все кадры с этого порта относятся к VLAN 10. При передаче на соседний коммутатор кадр получит метку 10, а на access-порту получателя метку снимают. Компьютер не знает о VLAN.
Trunk-порт передаёт кадры нескольких VLAN, каждый с меткой. Trunk ставят между коммутаторами, между коммутатором и маршрутизатором или межсетевым экраном, к серверу виртуализации и к точке доступа Wi-Fi, у которой несколько сетей (SSID, статья 12).
PC1 (VLAN 10) SW1 SW2 SRV1 (VLAN 40)
| | | |
+-- access 10 ----+== trunk: 10, 40 =+-- access 40 --+
без метки с меткой 10 или 40 без метки
Native VLAN и PVID
На trunk-порт могут прийти и кадры без метки. Коммутатору нужно решить, к какой VLAN их отнести. В терминах стандарта 802.1Q такая VLAN называется PVID (идентификатор VLAN порта): в RFC 4363 это VLAN-ID, назначаемый кадрам без метки, которые получил порт. Тем же понятием пользуется Linux (man-страница ip-link описывает PVID как native/untagged VLAN ID); у многих производителей её называют native VLAN. В Hyper-V в режиме Trunk кадры с NativeVlanId передаются на адаптер без метки. В Linux флаг pvid команды bridge vlan add приписывает этой VLAN любые кадры без метки, а флаг untagged снимает метку при отправке. Access-порт — частный случай: одна VLAN, она же PVID, она же передаётся без метки.
| Идея | Лексика коммутаторов | Hyper-V (Set-VMNetworkAdapterVlan) |
Linux (bridge vlan add) |
|---|---|---|---|
| Порт в одной VLAN, устройство без метки | access | -Access -VlanId 40 |
vid 40 pvid untagged |
| Несколько VLAN, кадры с метками | trunk | -Trunk -AllowedVlanIdList … -NativeVlanId … |
vid 10, vid 40 (без untagged) |
| Кадры без метки на trunk | native VLAN | -NativeVlanId … (только вместе с -Trunk) |
pvid + untagged |
Native VLAN — частый источник путаницы: если на двух концах trunk она задана по-разному, кадры без метки попадут не в ту VLAN, и сегменты окажутся «склеенными». Практика автора: одинаковая native VLAN на обоих концах; не использовать её для пользователей (отдельная VLAN без устройств; в «Cisco с нуля 04» для этого выделена VLAN 999); пропускать по trunk только нужные VLAN; неиспользуемые порты выключать. Защитные настройки — в Cisco с нуля 10: базовая защита коммутатора.
Одна VLAN — одна подсеть
VLAN — граница второго уровня, подсеть — граница третьего. Две подсети в одной VLAN технически возможны, но схема запутается; правило «одна VLAN — одна подсеть» (практика автора) делает сеть читаемой: по адресу видно VLAN, а шлюзом подсети служит один адрес, как правило, первый.
Типичный учебный план для небольшого офиса:
| VLAN | Назначение | Подсеть | Примеры | Базовые правила |
|---|---|---|---|---|
| 10 | Сотрудники | 192.168.10.0/24 |
PC1, PC2 |
в интернет можно; к серверам и принтерам — только нужные порты |
| 20 | Гости | 192.168.20.0/24 |
гостевой Wi-Fi | только интернет |
| 30 | Принтеры, IoT | 192.168.30.0/24 |
PRN1 (192.168.30.50) |
принимают печать, сами ничего не инициируют |
| 40 | Серверы | 192.168.40.0/24 |
SRV1 (192.168.40.10) |
исходящих соединений минимум |
| 99 | Управление | 192.168.99.0/24 |
SW1, точки доступа |
доступ только с рабочих мест администраторов |
IoT (Internet of Things, «интернет вещей») — камеры, датчики и другие «умные» устройства. В сквозной сети серии SRV1 и PRN1 пока стоят в 192.168.10.0/24; в таблице их адреса показаны так, как они выглядели бы после переезда. Переезд устройства в другую VLAN — это смена адреса: меняются IP, шлюз, записи в DNS (статья 07) и правила межсетевого экрана. Отдельная VLAN управления входит в рекомендации по защите сети (Безопасность для начинающих 05).
Маршрутизация между VLAN
Компьютерам из VLAN 10 всё же нужно печатать на PRN1 и ходить на SRV1. Это работа маршрутизатора (статья 05): у каждой VLAN есть свой шлюз — адрес, который маршрутизатор имеет в этой подсети. Распространены две схемы.
- Router-on-a-stick («маршрутизатор на палочке», жаргонное название схемы).
RTR1подключён к коммутатору одним кабелем в режиме trunk. На маршрутизаторе для каждой VLAN создан логический подинтерфейс со своим адресом:192.168.10.1для VLAN 10,192.168.40.1для VLAN 40 и так далее. - L3-коммутатор. Коммутатор третьего уровня умеет маршрутизировать сам: на нём для каждой VLAN создаётся виртуальный интерфейс с адресом шлюза. Трафик между VLAN не ходит к маршрутизатору по кабелю, поэтому такая схема, как правило, быстрее (практика автора).
Интернет
|
RTR1
подинтерфейсы: 192.168.10.1, 192.168.30.1, 192.168.40.1
| один кабель, trunk: VLAN 10, 30, 40
SW1
+-------+----+-----+---------+
PC1 PC2 SRV1 PRN1
VLAN 10 VLAN 10 VLAN 40 VLAN 30
Проследим путь пакета от PC1 (192.168.10.101) к SRV1 (192.168.40.10):
PC1видит, что адрес192.168.40.10не входит в его подсеть, и отправляет кадр на MAC-адрес шлюза192.168.10.1(егоPC1узнаёт по ARP, статья 05).SW1принимает кадр на access-порту VLAN 10 и передаёт на trunk с меткой 10.RTR1получает кадр на подинтерфейсе VLAN 10 и ищет в таблице маршрутов подсеть192.168.40.0/24: она подключена непосредственно к подинтерфейсу VLAN 40.- На этом шаге применяются правила межсетевого экрана или списки доступа (Cisco с нуля 08: списки доступа, MikroTik с нуля 04: Firewall для начинающих). Если пакет разрешён,
RTR1отправляет его обратно в тот же кабель, но уже с меткой 40. SW1снимает метку и выдаёт кадр на access-портSRV1. Ответ идёт обратно тем же путём, поэтому уSRV1в качестве шлюза должен быть192.168.40.1.
Без правил на шаге 4 маршрутизатор с политикой «по умолчанию разрешено» пропустит всё между всеми VLAN: именно здесь «гостей — только в интернет» превращается из пожелания в настройку. У router-on-a-stick есть и недостаток: весь межсегментный трафик дважды проходит по одному кабелю (практика автора). Как настроить подинтерфейсы и маршрутизацию, описано в Cisco с нуля 05: маршрутизация между VLAN и MikroTik с нуля 07: VLAN и bridge VLAN filtering.
DHCP, DNS и IPv6 при нескольких VLAN
Широковещательный запрос DHCP Discover не выходит за пределы своей VLAN (статья 06). Поэтому либо пул для каждой VLAN создают на шлюзе, либо на шлюзе каждой VLAN включают relay, который передаёт запросы единому серверу; тот выбирает пул по полю giaddr («адрес relay-агента»). Клиентам каждой VLAN нужен DNS-сервер, доступный из этой VLAN: если правило межсетевого экрана запрещает запросы к нему, сеть «есть», а имена не открываются. В IPv6 у каждой VLAN будет собственный префикс /64 (статья 14).
Как увидеть VLAN в Windows, Hyper-V и Linux
На обычном компьютере VLAN определяет порт коммутатора, а не сам компьютер, поэтому в настройках ПК номера VLAN, как правило, нет. Косвенный признак — подсеть и шлюз в ipconfig (статья 10): если вы приняли правило «одна VLAN — одна подсеть», адрес 192.168.40.x указывает на VLAN 40. Точный ответ даёт таблица MAC-адресов коммутатора: запись о MAC-адресе, как правило, хранится вместе с номером VLAN.
Если VLAN задана на самом сетевом адаптере (так делают на серверах и тестовых машинах), её видно в свойстве VlanID:
Get-NetAdapter | Format-Table Name, Status, VlanID
Пример вывода:
Name Status VlanID
---- ------ ------
Ethernet Up 0
Значение в примере условное: как правило, 0 означает, что VLAN на адаптере не задана. По справке Set-NetAdapter, не все адаптеры поддерживают настройку VLAN ID.
В Hyper-V настройки VLAN есть у виртуального сетевого адаптера. Просмотр и пример из справки Microsoft (имя ВМ — условное):
Get-VMNetworkAdapterVlan
Set-VMNetworkAdapterVlan -VMName vm1 -Access -VlanId 40
Первая команда показывает настройки VLAN виртуальных адаптеров всех ВМ, вторая переводит адаптер в режим Access: трафик ВМ помечается VLAN 40. Вернуть адаптер в режим без VLAN можно параметром -Untagged. Режим Trunk нужен ВМ, которая сама разбирает несколько VLAN, например виртуальному маршрутизатору; на физическом порту хоста при этом должен быть trunk, пропускающий нужные VLAN (практика автора). Есть ещё режимы Private VLAN (Isolated, Community, Promiscuous): здесь они не разбираются.
В Linux VLAN-интерфейс создаёт ip link (по man-странице ip-link): первая команда создаёт eth0.40 для VLAN 40 поверх eth0, вторая включает его, третья — откат.
sudo ip link add link eth0 name eth0.40 type vlan id 40
sudo ip link set dev eth0.40 up
sudo ip link delete eth0.40 type vlan
Warning
Не меняйте VLAN порта или сетевого адаптера, через который вы подключены (RDP, SSH, управление Hyper-V -ManagementOS): связь оборвётся. Заранее подготовьте консольный доступ или доступ из другой VLAN, выберите окно работ и запишите команду отката. Set-NetAdapter -VlanID, по предупреждению справки Microsoft, может нарушить работу сети.
Метка VLAN в Wireshark
При захвате на самом компьютере метки VLAN можно не увидеть: по Wireshark Wiki, драйвер адаптера нередко убирает метку до захвата. Чтобы увидеть её наверняка, настраивают зеркалирование порта на коммутаторе и подключают к зеркальному порту отдельный компьютер (статья 11). Захватывайте трафик только в своей сети и с разрешения её владельца. Фильтр захвата vlan 40 отбирает кадры VLAN 40, фильтр отображения vlan — кадры с меткой.
Состояние на ноябрь 2026 года (проверьте актуальность). Справка Microsoft по
Set-VMNetworkAdapterVlanиGet-VMNetworkAdapterVlanопубликована для Windows Server 2016–2025. Возможность задать VLAN на физическом адаптере (Set-NetAdapter -VlanID) зависит от драйвера. Страницы Wireshark Wiki о захвате VLAN написаны давно и ссылаются на устаревшие модели адаптеров: проверьте поведение на своём. На момент сверки бесплатный PDF стандарта IEEE 802.1Q-2022 был доступен по программе IEEE GET, а дата последнего обновления реестра IANA «IEEE 802 Numbers» — 3 ноября 2024 года.
Типичные ошибки и недоразумения
- «VLAN — это защита». VLAN лишь разделяет сеть на втором уровне. Если маршрутизатор знает путь, а правил нет, гостевая VLAN дотянется до серверов. Нужны правила межсетевого экрана или списки доступа.
- Порт в «не той» VLAN. Устройство получает адрес чужой подсети или
169.254.x.x, потому что в этой VLAN нет DHCP (статья 06). Начинайте проверку с порта. - VLAN создана, но не разрешена на trunk. На одном коммутаторе всё работает, через соседний — нет. Проверьте список разрешённых VLAN на обоих концах trunk.
- Разные native VLAN на концах trunk. Кадры без метки уходят в другую VLAN; симптомы странные и «плавающие».
- ВМ в нужной VLAN, а на порту хоста trunk её не пропускает. Сеть у ВМ не появляется, хотя настройки Hyper-V верны.
- Забыт шлюз, relay или маршрут обратно. Пакет доходит до сервера, а ответ теряется.
- Управление коммутатором в пользовательской VLAN. Любой пользователь оказывается в одной сети с интерфейсом управления; для него выделяют отдельную VLAN.
Проверьте себя
- Какие значения VLAN ID можно использовать для обычных VLAN? От 1 до 4094; значения 0 и 4095 не обозначают конкретную VLAN (RFC 4363).
PC1подключён к access-порту VLAN 10. Есть ли метка 802.1Q в кадрах междуPC1и коммутатором? Нет: компьютер отправляет и получает кадры без метки, а метку добавляет и снимает коммутатор при передаче через trunk.- Что случится, если на одном конце trunk native VLAN равна 1, а на другом — 99? Кадры без метки окажутся в разных VLAN на двух концах: сегменты «склеятся» там, где этого не ждали, и появятся трудно объяснимые сбои.
PC1в VLAN 10 иSRV1в VLAN 40 подключены к одномуSW1, а ping не проходит. Что проверить? Шлюз на обоих узлах, подинтерфейсы или интерфейсы VLAN на маршрутизаторе, список разрешённых VLAN на trunk к нему и правила межсетевого экрана между VLAN 10 и 40.- Руководитель говорит: «Гости в VLAN 20, значит, до
SRV1в VLAN 40 они не доберутся». Прав ли он? Нет: VLAN лишь отделяет гостей на втором уровне. Если маршрутизатор знает путь к VLAN 40 и правила не запрещают доступ, трафик пройдёт; нужны правила на маршрутизаторе или межсетевом экране.
Что дальше
- Cisco с нуля 04: VLAN, access- и trunk-порты — создание VLAN и настройка портов на коммутаторе Cisco.
- Cisco с нуля 05: маршрутизация между VLAN — подинтерфейсы и маршрутизация на Cisco.
- MikroTik с нуля 07: VLAN и bridge VLAN filtering — то же на RouterOS.
- Безопасность для начинающих 05: сеть и удалённый доступ — как сегментация встраивается в общую защиту сети.
Источники
- IEEE SA: IEEE 802.1Q-2022 — страница стандарта, бесплатный PDF по программе IEEE GET
- CISA: Layering Network Security Through Segmentation Infographic — определение сегментации сети
- RFC 4363: Definitions of Managed Objects for Bridges with Traffic Classes, Multicast Filtering, and Virtual LAN Extensions — VLAN-ID: 12 бит, диапазон 1–4094, значения 0 и 4095, PVID
- RFC 7348: Virtual eXtensible Local Area Network (VXLAN) — предел 4094 VLAN в больших центрах обработки данных
- IANA: IEEE 802 Numbers — EtherType 0x8100 (C-Tag) и 0x88A8 (S-Tag)
- Wireshark Wiki: VLAN — расположение и поля метки, DEI вместо CFI, размеры кадра, фильтры vlan
- Wireshark Wiki: CaptureSetup/VLAN — метки VLAN при захвате, драйверы адаптеров, зеркалирование порта
- Microsoft Learn: IEEE 802.1p Priority Levels — 3-битное поле PCP внутри метки 802.1Q
- Microsoft Learn: Set-VMNetworkAdapterVlan — режимы Access, Trunk, Untagged, NativeVlanId
- Microsoft Learn: Get-VMNetworkAdapterVlan — просмотр настроек VLAN виртуального адаптера
- Microsoft Learn: Set-NetAdapter — параметр
-VlanID, оговорка о поддержке адаптерами - Microsoft Learn: MSFT_NetAdapter class — свойство
VlanIDадаптера - man7.org: ip-link(8) — создание VLAN-интерфейса
type vlan id, PVID как native/untagged VLAN ID - man7.org: bridge(8) — флаги
pvidиuntaggedкомандыbridge vlan add