Один коммутатор — это одна общая L2-сеть, где все слышат друг друга. Это плохо для безопасности
(бухгалтерия видит broadcast серверов), плохо для производительности (один большой broadcast-домен), плохо для
проектирования. Решается это VLAN'ами.
Когда в сети появляется резервирование (две связки между свитчами на случай обрыва), возникает другой подвох —
петля L2, которая за секунды кладёт всю сеть. Лечится STP/RSTP.
Что узнаешь
Что такое VLAN и зачем разделять одну сеть на несколько логических
Формат тега 802.1Q (4 байта в Ethernet-кадре)
Access vs trunk порты, native VLAN, voice VLAN
Как Pod в одном VLAN говорит с Pod в другом (inter-VLAN routing, SVI, router-on-a-stick)
Зачем нужен STP и что произойдёт без него
Как STP выбирает root bridge и блокирует порты
RSTP, BPDU guard, root guard, BPDU filter
QinQ (802.1ad) и провайдерская инкапсуляция
1. Что такое VLAN — и зачем
VLAN (Virtual LAN) — это способ логически разделить один физический коммутатор
на несколько независимых сетей. Хосты в разных VLAN не слышат друг друга на L2, даже если воткнуты в один и тот же свитч.
Физическая топология vs логическая (с VLAN)
Один и тот же физический коммутатор — но «как будто три разных свитча» с точки зрения хостов.
Зачем нужны VLAN — реальные причины
Безопасность. Гость в офисе через Wi-Fi не должен видеть серверы. Бухгалтерия — не должна видеть R&D.
Уменьшение broadcast-домена. В сети из 500 устройств broadcast'ы (ARP, DHCP) забивают канал. Разделили на VLAN'ы по 50 — broadcast в 10 раз меньше.
QoS. На VoIP VLAN можно дать приоритет, чтобы голос не лагал из-за бэкапа на серверах.
Гибкость. Перевести сотрудника из «офиса» в «лабораторию» — это сменить VLAN на его порту, без перепрокладки кабеля.
Multi-tenancy. В одном здании работают две компании — каждой свой VLAN, изоляция на L2.
2. Формат тега 802.1Q
Когда кадр идёт между свитчами по trunk-порту, ему нужно нести информацию: «я из VLAN 10».
Это делается через тег 802.1Q — 4 байта, вставляемые в Ethernet-кадр.
Кадр Ethernet с тегом 802.1Q
Тег 802.1Q добавляет 4 байта overhead. Максимальный размер фрейма становится 1522 байт (или 9022 для jumbo).
Reserved VLAN IDs
VID
Назначение
0
Priority-only tag (есть PCP, но нет принадлежности к VLAN)
1
Default VLAN на большинстве коммутаторов (Cisco). НЕ используется в production.
2-1001
Стандартный диапазон, доступен везде.
1002-1005
Зарезервированы Cisco для legacy (Token Ring, FDDI). Не использовать.
1006-4094
Расширенный диапазон, доступен на современных свитчах.
4095
Reserved (служебный).
3. Access vs Trunk порты
Порт коммутатора может работать в одном из двух режимов:
Access port vs Trunk port
Access — между свитчем и хостом. Trunk — между свитчами или между свитчем и роутером/гипервизором.
Native VLAN — нюанс trunk-порта
На trunk-порту один из VLAN объявляется native — его кадры идут без тега.
По умолчанию native = VLAN 1.
безопасностьVLAN hopping атака. Если native VLAN на trunk = 1, и обычный access-порт стоит в VLAN 1 — атакующий
может отправить кадр с двумя 802.1Q тегами подряд (double-tagging). Первый тег снимется на первом свитче,
второй пройдёт дальше → попал в другой VLAN, минуя файрвол. Защиты: 1) native = неиспользуемый VLAN (например 999),
2) на каждом trunk явно прописать switchport trunk native vlan tag.
4. Inter-VLAN routing — как VLAN общаются между собой
L2-коммутатор внутри VLAN'а — это L2. А чтобы пакет ушёл из VLAN 10 в VLAN 20, нужен L3.
Между разными VLAN — всегда маршрутизация.
Три способа inter-VLAN routing
Современный ДЦ — это spine-leaf с routing на каждом leaf. VLAN живёт только в пределах одного rack.
5. STP — зачем нужен и что без него
Представь сеть с резервированием — два uplink'а между свитчами на случай обрыва одного.
Это правильно с точки зрения надёжности. Но без специальной защиты — это смерть сети.
Без STP: broadcast-storm — почему сеть умирает за секунды
В IP есть TTL (счётчик хопов). В Ethernet — нет. Loop в L2 = катастрофа. Поэтому нужен STP.
6. Как STP всё это лечит
STP (Spanning Tree Protocol, 802.1D) умеет одну простую вещь: построить из топологии с кольцами
логическое дерево (без циклов), заблокировав избыточные порты. Если основной линк падает —
заблокированный «оживает» автоматически. Эластичность + защита от петель.
STP в действии: выбор root и блокировка лишнего
Один линк намеренно заблокирован. Если уйдёт SW-A↔SW-B — за 30-60 сек STP переключится на резерв.
Состояния портов STP (классический)
Состояния порта STP
Между Disabled и Forwarding порт проходит три промежуточных состояния, итого ~50 секунд.
RSTP — современная замена
RSTP (Rapid Spanning Tree Protocol, 802.1w) сократил время сходимости с 50с до ~6с.
Состояний теперь три: Discarding → Learning → Forwarding. Используется по умолчанию
на всех современных свитчах.
Расширения STP — must know
Фича
Зачем
BPDU Guard
На access-портах. Если кто-то воткнул свой свитч (а тот шлёт BPDU) → порт мгновенно err-disabled. Защита от подделки root.
Root Guard
На trunk-портах в сторону «не root». Если оттуда приходит BPDU с лучшим priority — порт блокируется. Защита, что root не «переедет» внезапно.
BPDU Filter
Запрещает порту участвовать в STP. Использовать ОСТОРОЖНО — можно создать loop, если ошибся в топологии.
PortFast / edge port
На access-портах. Порт сразу в Forwarding, не ждёт STP. Для DHCP-клиентов, серверов — важно (быстрая загрузка).
Loop Guard
Защита от «unidirectional link» (когда BPDU перестали приходить, но физически линк жив) — блокирует порт вместо ошибочного forwarding.
UDLD (Unidirectional Link Detection)
Cisco-specific. Активная проверка двунаправленности линка. Часто включают на оптике.
7. EtherChannel / LAG — альтернатива STP
Когда нужно несколько линков в одну сторону, но не хочется блокировать половину через STP — собирают
их в EtherChannel (Cisco) / Link Aggregation Group (стандарт IEEE 802.3ad / 802.1AX).
Несколько физических линков становятся одним логическим, с балансировкой по hash.
STP vs LAG
LAG настраивается через LACP (динамический, стандарт) или PAgP (Cisco-only). Стандарт: LACP.
8. Cisco-конфиги для практики
Создать VLAN
switch# configure terminal
switch(config)# vlan 10
switch(config-vlan)# name USERS
switch(config-vlan)# exit
switch(config)# vlan 20
switch(config-vlan)# name SERVERS
switch(config-vlan)# exit
Провайдеру нужно пропустить через свою сеть клиентские VLAN'ы, не трогая их. Решение —
QinQ: добавляет ещё один внешний 802.1Q-тег поверх клиентского. Клиент думает,
что его кадры идут «как есть»; провайдер коммутирует по своему внешнему тегу.
Провайдер пропускает 4096 клиентов × 4096 VLAN каждого = 16 миллионов виртуальных сетей.
10. Частые ошибки и сценарии
сценарий 1«VLAN не работает между двумя свитчами» →
1) Проверь, что VLAN существует на обоих (show vlan brief).
2) Проверь, что trunk правильно поднят (show interfaces trunk).
3) Проверь, что в switchport trunk allowed vlan есть нужный номер.
4) Если разные native VLAN на сторонах — увидишь warning «native VLAN mismatch».
сценарий 2«После подключения нового свитча половина сети легла» →
Самое вероятное: новый свитч прибыл с дефолтным STP priority (32768) и более низким MAC,
стал root для всего домена → топология перестроилась → пакеты «потерялись» на 30 секунд.
Профилактика: на core-свитчах spanning-tree priority 4096, на новых
устанавливай bpduguard на все access-порты.
сценарий 3«PC получает IP из «чужого» DHCP» →
Кто-то воткнул роутер с DHCP в офисную сеть → broadcast DISCOVER пошёл к нему первому
→ клиент получил «не тот» IP, default gateway уводит в никуда. Защита: DHCP snooping
на свитчах + access-порты с BPDU guard.
Ключевое за этот урок
VLAN изолирует broadcast и L2-трафик. Один свитч = N логических подсетей.
Тег 802.1Q = 4 байта между Src MAC и EtherType. VID — 12 бит (4096 максимум).
Access — без тега, один VLAN. Trunk — с тегами, много VLAN.
Native VLAN на trunk → кадры без тега. Делать неиспользуемым ради безопасности.
Между VLAN — всегда L3. На L3-свитче через SVI, в старой школе — router-on-a-stick.
Без STP петля = broadcast storm = смерть сети за секунды. Ethernet не имеет TTL!