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 работает преимущественно на канальном уровне — L2;
- IP-подсеть относится к сетевому уровню — L3.
Обычно используется соответствие:
одна 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При этом:
0зарезервирован для кадров с указанием приоритета без обычного VLAN ID;1–4094— рабочий диапазон VLAN;4095зарезервирован.
На многих коммутаторах VLAN 1 существует по умолчанию. Его поведение зависит от производителя и модели оборудования.
Пример идентификаторов:
VLAN 10 — USERS
VLAN 20 — SERVERS
VLAN 30 — GUEST
VLAN 40 — VOICE
VLAN 99 — MANAGEMENTИмя VLAN используется для удобства администратора. Передача кадров и логическое разделение выполняются по числовому VLAN ID.
Порты Access и Trunk
Порты коммутатора обычно работают в одном из двух основных режимов:
- access;
- trunk.
Названия режимов и точное поведение могут различаться у разных производителей.
Access-порт
Access-порт предназначен для подключения конечного устройства и обычно относится к одной VLAN.
К access-порту могут подключаться:
- компьютер;
- принтер;
- сервер;
- камера;
- обычный телефон;
- другое устройство, не использующее VLAN-теги.
Пример:
Компьютер
|
| кадры без VLAN-тега
|
Access-порт, VLAN 10
|
КоммутаторКомпьютер отправляет обычные Ethernet-кадры без тега 802.1Q. Коммутатор связывает входящие кадры с VLAN, назначенной порту.
Условная конфигурация:
interface port1
mode access
access vlan 10Cisco-подобный пример:
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,30Cisco-подобный пример:
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 байта и содержит:
- TPID;
- PCP;
- DEI;
- VID.
Общая структура:
802.1Q tag — 32 бита
+----------------+-----+-----+--------------+
| TPID, 16 бит | PCP | DEI | VID, 12 бит |
+----------------+-----+-----+--------------+TPID
TPID (Tag Protocol Identifier) указывает, что кадр содержит тег 802.1Q.
Стандартное значение:
0x8100PCP
PCP (Priority Code Point) — трёхбитное поле приоритета IEEE 802.1p.
Возможные значения:
0–7PCP может использоваться механизмами качества обслуживания — QoS.
DEI
DEI (Drop Eligible Indicator) показывает, что кадр может быть отброшен при перегрузке сети.
VID
VID (VLAN Identifier) — двенадцатибитный идентификатор VLAN.
Tagged и untagged трафик
Трафик на порту может быть:
- tagged — кадр содержит тег VLAN;
- untagged — кадр передаётся без тега VLAN.
Типичное поведение:
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 как native;
- назначать отдельную неиспользуемую VLAN;
- тегировать native VLAN;
- явно ограничивать разрешённые VLAN на trunk.
Конкретные рекомендации зависят от возможностей оборудования.
Передача кадра внутри 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:
- PC-A определяет, что адрес PC-B находится в локальной подсети.
- PC-A проверяет ARP-таблицу.
- Если MAC-адрес неизвестен, PC-A отправляет ARP-запрос.
- Коммутатор распространяет ARP-запрос только внутри VLAN 10.
- PC-B отправляет ARP-ответ.
- PC-A формирует Ethernet-кадр с MAC-адресом PC-B.
- Коммутатор передаёт кадр через порт 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;
- SVI на коммутаторе третьего уровня;
- виртуальный маршрутизатор или firewall.
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/24Cisco-подобный пример:
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Преимущества:
- требуется только один физический интерфейс маршрутизатора;
- схема подходит для небольших сетей;
- конфигурация относительно проста.
Недостатки:
- весь межвлановый трафик проходит через одно соединение;
- пропускная способность ограничена интерфейсом;
- интерфейс и маршрутизатор могут стать единой точкой отказа;
- производительность обычно ниже, чем у аппаратной маршрутизации L3-коммутатора.
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/24Cisco-подобная конфигурация:
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.1L3-коммутатор может маршрутизировать трафик между VLAN внутри устройства.
Сам факт создания SVI иногда недостаточен. В зависимости от оборудования необходимо:
- создать соответствующую VLAN;
- назначить VLAN хотя бы одному активному порту;
- включить виртуальный интерфейс;
- включить IP-маршрутизацию;
- настроить маршруты;
- проверить ACL и firewall.
Путь пакета между 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Порядок обмена:
- Клиент сравнивает адрес назначения со своей подсетью.
- Адрес
192.168.20.20не относится к192.168.10.0/24. - Клиент решает передать пакет шлюзу
192.168.10.1. - Клиент определяет MAC-адрес шлюза через ARP.
- Ethernet-кадр передаётся в VLAN 10.
- Маршрутизатор получает IP-пакет и выбирает маршрут в сеть
192.168.20.0/24. - Маршрутизатор определяет MAC-адрес сервера в VLAN 20.
- Для передачи в VLAN 20 создаётся новый Ethernet-кадр.
- Сервер получает пакет.
- Ответ отправляется через шлюз сервера в обратном направлении.
При маршрутизации:
- IP-адреса источника и назначения обычно сохраняются;
- MAC-адреса Ethernet меняются на каждом маршрутизируемом участке;
- значение TTL уменьшается.
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 20Cisco-подобный пример:
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.1DHCP Relay сообщает серверу, из какой сети поступил запрос, чтобы сервер выбрал правильный пул адресов.
Voice VLAN
Voice VLAN используется для отделения трафика IP-телефонов от обычного пользовательского трафика.
Типичная схема:
Коммутатор
|
| один физический порт
|
IP-телефон
|
|
КомпьютерЧерез один порт могут передаваться:
- нетегированный пользовательский трафик компьютера;
- тегированный голосовой трафик телефона.
Пример логики:
Data VLAN → VLAN 10
Voice VLAN → VLAN 40Cisco-подобная конфигурация:
interface GigabitEthernet0/5
switchport mode access
switchport access vlan 10
switchport voice vlan 40Телефон может узнать Voice VLAN через протокол обнаружения оборудования, например LLDP-MED, если он поддерживается и настроен.
Для голосового трафика также часто применяются:
- QoS;
- приоритет PCP;
- отдельный DHCP-пул;
- специальные DHCP options;
- политики доступа.
Management VLAN
Management VLAN — отдельная VLAN для управления сетевым оборудованием.
Через неё могут быть доступны:
- SSH;
- HTTPS-интерфейс;
- SNMP;
- Syslog;
- NTP;
- API оборудования;
- системы мониторинга и резервного копирования конфигураций.
Пример:
VLAN 99 — MANAGEMENT
Подсеть 192.168.99.0/24Управляющий адрес коммутатора:
192.168.99.10/24Шлюз управления:
192.168.99.1Доступ к Management VLAN рекомендуется ограничивать:
- разрешать только с административных рабочих станций;
- применять ACL или firewall;
- не предоставлять прямой доступ гостевым и пользовательским VLAN;
- отключать небезопасные протоколы управления;
- использовать SSH и HTTPS вместо Telnet и HTTP;
- не использовать Management VLAN как native без необходимости.
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 могут:
- подключиться к Wi-Fi, но не получить IP-адрес;
- получить адрес неправильной сети;
- не иметь доступа к шлюзу;
- полностью потерять сетевую связность.
VLAN и виртуализация
Сервер виртуализации может принимать трафик нескольких VLAN через один или несколько trunk-интерфейсов.
Физический коммутатор
|
| trunk: VLAN 10, 20, 30
|
Гипервизор
|
+-- VM-1 → VLAN 10
+-- VM-2 → VLAN 20
+-- VM-3 → VLAN 30VLAN может назначаться:
- физическому сетевому интерфейсу;
- виртуальному коммутатору;
- port group;
- виртуальному интерфейсу машины;
- контейнерной или облачной сети.
Важно понимать, где добавляется и удаляется тег:
Вариант 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 требует точного понимания параметров:
vid;pvid;untagged;self;- принадлежность физического порта или самого моста.
Пример назначения 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. Поэтому петля может вызвать:
- broadcast storm;
- многократное копирование кадров;
- нестабильность таблиц MAC-адресов;
- перегрузку каналов;
- потерю сетевой связности.
Для предотвращения петель используются протоколы семейства STP:
- STP;
- RSTP;
- MSTP;
- проприетарные варианты отдельных производителей.
В зависимости от реализации STP может строить дерево:
- для всей сети;
- для группы VLAN;
- отдельно для каждой VLAN.
Необходимо следить, чтобы конфигурация 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Преимущества:
- сокращается лишний broadcast и unknown unicast трафик;
- уменьшается область потенциальных ошибок;
- снижаются риски несанкционированного подключения к VLAN;
- конфигурация точнее отражает архитектуру сети.
VLAN и MTU
Тег 802.1Q добавляет к Ethernet-кадру 4 байта.
Обычный Ethernet-кадр без преамбулы и межкадрового интервала имеет максимальный размер:
1518 байтКадр с тегом 802.1Q может иметь размер:
1522 байтаСовременное сетевое оборудование обычно поддерживает такие кадры. Однако проблемы могут возникнуть при:
- старом оборудовании;
- использовании нескольких тегов;
- Q-in-Q;
- туннелях;
- наложении дополнительных заголовков;
- неправильно настроенном MTU.
Следует различать:
- MTU IP-интерфейса;
- максимальный размер Ethernet-кадра;
- jumbo frame;
- накладные расходы VLAN и туннелей.
Q-in-Q
Q-in-Q, или 802.1ad, позволяет поместить один VLAN-тег внутрь другого.
Упрощённая структура:
[Outer VLAN tag][Inner VLAN tag][Payload]Теги часто называют:
- S-tag — внешний служебный тег;
- C-tag — внутренний клиентский тег.
Пример:
Клиент использует VLAN 10.
Провайдер добавляет внешний VLAN 500.В сети провайдера кадр передаётся как:
S-VLAN 500
└── C-VLAN 10Q-in-Q может использоваться операторами для передачи клиентских VLAN через общую инфраструктуру. Для базовых локальных сетей обычного 802.1Q обычно достаточно.
Private VLAN
Private VLAN (PVLAN) — механизм дополнительной изоляции портов внутри одной основной VLAN.
Типичные категории:
- promiscuous;
- isolated;
- community.
Общее поведение:
- promiscuous port может взаимодействовать со всеми портами PVLAN;
- isolated ports не могут взаимодействовать друг с другом;
- community ports могут взаимодействовать внутри своей группы;
- доступ к шлюзу обычно предоставляется через promiscuous port.
PVLAN может применяться:
- в центрах обработки данных;
- в сетях хостинга;
- в гостиничных сетях;
- в сегментах, где устройства должны видеть шлюз, но не друг друга.
Поддержка и синтаксис зависят от производителя оборудования.
Безопасность VLAN
VLAN обеспечивает логическую сегментацию, но сам по себе не заменяет firewall.
Если между VLAN включена маршрутизация без ограничений, устройства из разных VLAN могут свободно обмениваться трафиком.
Например:
VLAN 10 — пользователи
VLAN 20 — серверыЕсли маршрутизатор разрешает любой трафик, разделение на VLAN не защищает серверы от пользователей на сетевом уровне.
Для контроля доступа применяются:
- ACL на L3-коммутаторе;
- firewall;
- правила межсетевого экрана на маршрутизаторе;
- микросегментация;
- Private VLAN;
- port isolation;
- аутентификация доступа;
- фильтрация на конечных устройствах.
Пример политики:
VLAN 10 → VLAN 20:
разрешить HTTPS к серверу 192.168.20.20
запретить остальной трафик
VLAN 30 → внутренние VLAN:
запретить
VLAN 30 → Интернет:
разрешитьVLAN hopping
VLAN hopping — группа атак или ошибочных сценариев, при которых устройство пытается получить доступ к трафику другой VLAN.
Классические варианты:
- переключение порта в trunk;
- двойное тегирование.
Несанкционированное формирование trunk
Если порт автоматически согласовывает режим trunk, подключённое устройство может попытаться выдать себя за коммутатор.
Меры защиты:
- явно настраивать пользовательские порты как access;
- отключать динамическое согласование trunk, если оно не требуется;
- выключать неиспользуемые порты;
- назначать неиспользуемые порты в отдельную VLAN;
- применять port security и аутентификацию.
Double tagging
При двойном тегировании кадр содержит два VLAN-тега. В определённых условиях первый коммутатор может удалить внешний тег, после чего кадр с внутренним тегом попадёт в другую VLAN.
Риск связан, в частности, с использованием native VLAN.
Меры защиты:
- не использовать пользовательскую VLAN как native;
- применять отдельную неиспользуемую native VLAN;
- тегировать native VLAN, если оборудование это поддерживает;
- явно ограничивать VLAN на trunk;
- не передавать ненужные VLAN;
- корректно настраивать access-порты.
Другие базовые меры защиты
Для повышения безопасности VLAN-инфраструктуры рекомендуется:
- отключать неиспользуемые порты;
- не оставлять активные порты в рабочей VLAN без необходимости;
- использовать отдельную Management VLAN;
- ограничивать административный доступ;
- явно назначать access и trunk режимы;
- разрешать на trunk только необходимые VLAN;
- не использовать VLAN 1 для пользовательского трафика без причины;
- контролировать native VLAN;
- применять DHCP Snooping;
- применять Dynamic ARP Inspection;
- применять IP Source Guard;
- использовать BPDU Guard на пользовательских портах;
- использовать Root Guard там, где это соответствует архитектуре;
- применять storm control;
- вести документацию портов и 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 ID;
- понятное имя;
- назначение;
- IP-подсеть;
- шлюз;
- DHCP-пул;
- DNS-серверы;
- политику доступа;
- разрешённые trunk;
- физические порты;
- требования к QoS;
- требования к мониторингу.
Не следует создавать 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 20Trunk между коммутаторами:
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
Набор команд зависит от производителя, но обычно необходимо проверить:
- существуют ли VLAN;
- какие порты входят в VLAN;
- какой режим используется на порту;
- какие VLAN разрешены на trunk;
- какая VLAN является native;
- какой PVID назначен порту;
- изучены ли MAC-адреса;
- активен ли SVI;
- включена ли маршрутизация;
- есть ли нужные ACL.
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-listsLinux:
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-адрес
Следует проверить:
- Находится ли клиентский порт в правильной VLAN.
- Совпадает ли PVID с untagged VLAN.
- Разрешена ли VLAN на всех trunk-соединениях по пути.
- Создана ли VLAN на промежуточных коммутаторах.
- Работает ли DHCP-сервер.
- Настроен ли DHCP Relay.
- Существует ли DHCP-пул для нужной подсети.
- Не исчерпан ли диапазон адресов.
- Не блокируется ли DHCP механизмами безопасности.
- Нет ли ошибки native VLAN.
Полезные действия на клиенте:
ip address
ip routeLinux — запрос нового адреса:
sudo dhclient -vWindows:
ipconfig /all
ipconfig /release
ipconfig /renewУстройства одной VLAN не видят друг друга
Необходимо проверить:
- назначены ли порты в одну VLAN;
- находятся ли устройства в одной IP-подсети;
- имеют ли они корректные маски;
- разрешена ли VLAN на trunk;
- не включён ли port isolation;
- не блокирует ли трафик локальный firewall;
- изучает ли коммутатор MAC-адреса;
- нет ли блокировки STP;
- отсутствуют ли дублирующиеся IP-адреса.
Команды:
ip address
ip neighbor
ping <IP-адрес>
arp -nНа коммутаторе:
show mac address-table vlan 10
show vlan brief
show interfaces trunkУстройства разных VLAN не видят друг друга
Следует проверить:
- настроены ли шлюзы VLAN;
- существуют ли SVI или подинтерфейсы;
- включена ли IP-маршрутизация;
- корректен ли default gateway на клиентах;
- есть ли обратные маршруты;
- не блокируют ли трафик ACL или firewall;
- активны ли интерфейсы VLAN;
- передаются ли VLAN по trunk до маршрутизатора.
Проверка с клиента:
ip route
ping <локальный шлюз>
traceroute <адрес в другой VLAN>Windows:
route print
ping <локальный шлюз>
tracert <адрес в другой VLAN>VLAN работает на одном коммутаторе, но не проходит на другой
Возможные причины:
- VLAN не разрешена на trunk;
- VLAN не создана на втором коммутаторе;
- один конец соединения работает как access, другой — как trunk;
- различаются native VLAN;
- физический интерфейс неактивен;
- агрегированный канал настроен несогласованно;
- STP заблокировал соединение;
- трафик попадает в неправильный PVID.
Проверка должна выполняться на обоих концах линии.
Связь работает нестабильно
Возможные причины:
- петля второго уровня;
- MAC flapping;
- несогласованный trunk;
- native VLAN mismatch;
- дублирующийся IP-адрес;
- перегрузка broadcast-трафиком;
- ошибка агрегации каналов;
- слишком большое количество MAC-адресов;
- проблема MTU;
- физические ошибки интерфейса.
Признак MAC flapping — один MAC-адрес быстро появляется на разных портах.
Это может указывать на:
- сетевую петлю;
- некорректное подключение;
- ошибку виртуализации;
- неправильно настроенный port channel;
- дублирование 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