NetLab Academy

Сетевые лаборатории в браузере

Войти Начать бесплатно

Теория: VLAN углублённо — VTP, private VLAN и деревья STP

Как список VLAN разъезжается по сети сам, как изолировать устройства внутри одного VLAN и сколько деревьев STP строить, когда VLAN много. Прочитайте материал, а затем пройдите тест — следующий пункт курса откроется после верных ответов.

Что осталось за рамками базовой темы

Базовая тема закрывает то, без чего VLAN не настроить: access-порты, транки, тег 802.1Q. Этого хватает, пока коммутаторов два и VLAN тоже два. Дальше начинается то, ради чего инженеров зовут на собеседования.

Первый вопрос: кто и как раздаёт список VLAN на десятки коммутаторов — вручную заводить VLAN 10 на каждом из сорока устройств никто не станет. Второй: что делать, когда изоляции между VLAN мало и нужно изолировать устройства внутри одного VLAN. Третий: как VLAN уживаются с протоколом STP из предыдущей темы — одно дерево на всю сеть или своё на каждый VLAN, и чем этот выбор оборачивается на практике. Разберём по порядку.

VTP — база VLAN синхронизируется сама

VTP (VLAN Trunking Protocol) — проприетарный протокол Cisco, который распространяет базу VLAN по транкам между коммутаторами одного VTP-домена (домен — просто общее имя, заданное строкой). Завели VLAN 30 на одном коммутаторе — он разошёлся на все остальные сам.

Ролей три. Server — можно создавать и удалять VLAN, изменения рассылаются. Client — свои VLAN заводить нельзя, база принимается извне и в конфиге не хранится. Transparent — коммутатор живёт своей базой, чужие объявления не применяет, но пропускает их дальше по транкам транзитом.

Важная деталь, которую путают: VTP раздаёт список VLAN, а не принадлежность портов. Какой порт в каком VLAN — всегда локальная настройка коммутатора, и никакой протокол за вас её не разнесёт.

Чем VTP знаменит — номер ревизии, стирающий сеть

У базы VLAN есть номер ревизии (revision number): счётчик, растущий при каждом изменении. Коммутатор принимает чужую базу, если пришедший номер ревизии больше его собственного. Роль при этом не спасает: клиент с ревизией 50 перезапишет сервер с ревизией 40.

Отсюда классическая авария, которая случалась у многих. Берут коммутатор с полки — тот самый, на котором месяц назад в лаборатории накрутили полсотни VLAN и накрутили ревизию до сотни. Ставят в стойку, включают транк — и он рассылает свою лабораторную базу по всему домену. Продакшн-VLAN исчезают со всех коммутаторов разом, порты остаются приписанными к несуществующим VLAN, сеть встаёт целиком. Восстановить из памяти нечего: клиенты базу в конфиге не хранят.

Правило, которое стоит выучить один раз и навсегда: перед подключением бывшего в употреблении коммутатора обнулите ревизию. Простейший способ — перевести в режим transparent и обратно, либо сменить имя VTP-домена на любое другое и вернуть назад: и то, и другое сбрасывает счётчик в ноль. Проверять — show vtp status, до того как воткнут кабель, а не после.
Как один коммутатор с полки стирает VLAN во всей сети
Роль коммутатора аварию не предотвращает: клиент с большей ревизией перезаписывает сервер. Решает только номер, и сравнивает его протокол молча.

VTP версии 3 и режим transparent

VTP версии 3 сделан после того, как индустрия набила шишек. Появился primary server: право менять базу нужно явно захватить командой, и одного лишь большого номера ревизии для перезаписи уже мало. Добавилась поддержка расширенного диапазона VLAN (1006–4094), которого версии 1 и 2 не умели, и распространение других баз — например, привязки VLAN к деревьям MST, о которых ниже. Есть и режим off, который не пропускает объявления даже транзитом.

При этом в живых сетях очень часто встречается самое простое решение: перевести всё в transparent и завести VLAN руками. Со стороны выглядит как отказ от автоматизации, но за этим стоит трезвый расчёт: заводить VLAN приходится раз в несколько месяцев, а риск потерять сеть целиком существует постоянно. Сегодня список VLAN всё чаще раскатывают системой автоматизации конфигураций, и тогда VTP не нужен вовсе.

Private VLAN — изоляция внутри одного VLAN

Обычный VLAN изолирует группы друг от друга, но внутри группы все видят всех. Иногда это ровно то, чего быть не должно. Гостевой Wi-Fi: посетителям нужен интернет, но видеть ноутбуки друг друга им незачем. Хостинг: сервера разных клиентов стоят в одной стойке и в одном VLAN, и клиент А не должен видеть клиента Б. Раздавать каждому по отдельному VLAN и по отдельной подсети — расточительно: адреса кончатся быстрее, чем клиенты.

Private VLAN (PVLAN) решает это, не плодя подсети. Один первичный (primary) VLAN делится на вторичные (secondary), и все они пользуются общей IP-подсетью и общим шлюзом. Изоляция при этом наводится на канальном уровне — устройства просто не видят кадров друг друга, хотя формально находятся в одной сети.

Три роли портов в private VLAN

Promiscuous — «разговаривает со всеми». В этот порт включают шлюз, маршрутизатор или межсетевой экран: он должен быть доступен каждому.

Isolated — порт в изолированном вторичном VLAN. Видит только promiscuous и больше никого, даже соседа по тому же изолированному VLAN. Это режим для гостевой сети: интернет есть, соседей нет.

Community — порт в общем вторичном VLAN. Видит promiscuous и своих по community, но не чужие community. Так включают группу серверов одного клиента: между собой они общаются, наружу к другим клиентам — нет.

Комбинация покрывает почти любой сценарий совместного размещения. Главное помнить: изолированный вторичный VLAN в первичном может быть только один, а community — сколько угодно.
Одна подсеть, один шлюз — и три разных права видеть соседа
Все шесть портов — в одной IP-подсети и с одним шлюзом: изоляцию наводит коммутатор на канальном уровне. Поэтому она и обходится маршрутизацией — если шлюз в promiscuous-порту готов отправить пакет обратно в ту же подсеть, два isolated-порта всё-таки друг друга достанут.

Где private VLAN ломается — и о чём спрашивают на собеседовании

Первое: PVLAN живёт на коммутаторе, а не в проводе. Если между устройствами стоит ещё один коммутатор, который про private VLAN не знает или не настроен, изоляция на нём заканчивается — и трафик спокойно ходит там, где не должен. Через транки вторичные VLAN нужно проносить явно.

Второе, и это любимый вопрос собеседующих: изоляция канального уровня не мешает маршрутизации. Два isolated-порта не видят друг друга напрямую, но если шлюз в promiscuous-порту готов маршрутизировать трафик обратно в ту же подсеть, пакеты пройдут через него — и вся изоляция обойдена. Лечится это не на коммутаторе, а на шлюзе: запретом такой маршрутизации или списком доступа.

Третье: не всякое оборудование умеет PVLAN, а у тех, кто умеет, детали реализации у разных вендоров разъезжаются. Перед проектированием стоит убедиться, что вся цепочка устройств поддерживает нужные роли портов.

VLAN и STP — одно дерево на всех или своё на каждого

Этот и два следующих раздела опираются на тему «STP / RSTP — защита от петель L2» — она разобрана в начальном курсе.

Из темы про STP известно: чтобы кольцо не превратилось в шторм, часть портов протокол блокирует. Вопрос, который там остался за скобками: сколько деревьев строить, если VLAN несколько?

Исходный стандарт 802.1D знал одно дерево на всю сеть — CST (Common Spanning Tree). Просто и дёшево по ресурсам, но обидно: если порт заблокирован, он заблокирован для всех VLAN сразу. Купили второй канал между коммутаторами — он просто стоит выключенным, вместо того чтобы возить хотя бы половину трафика.

Отсюда естественное желание: сделать деревья разными для разных VLAN. Тогда для VLAN 10 заблокирован один канал, а для VLAN 20 — другой, и оба провода работают. Это и называется балансировкой нагрузки средствами STP, и ради неё придумано всё остальное в этом разделе.

PVST+ и RPVST+ — своё дерево на каждый VLAN

PVST+ (Per-VLAN Spanning Tree Plus) — решение Cisco: отдельный экземпляр STP на каждый VLAN. Балансировка получается очень наглядной: у VLAN 10 назначают корнем один коммутатор, у VLAN 20 — другой, и трафик двух отделов расходится по разным каналам. RPVST+ — то же самое, но на быстром RSTP, со сходимостью за секунды вместо десятков секунд.

Цена — ресурсы. Каждый экземпляр дерева шлёт свои BPDU и держит свои таймеры, и расход растёт линейно с числом VLAN. На четырёх VLAN этого никто не замечает, на трёхстах на скромном коммутаторе доступа процессор занят уже только служебным трафиком. Отсюда практический предел: PVST+ хорош, пока VLAN десятки, а не сотни.

Второй подвох — совместимость. PVST+ проприетарен, и стыковка с оборудованием других вендоров, говорящим на стандартном STP, — источник неочевидных проблем, когда часть деревьев схлопывается в одно на границе.

MSTP — компромисс между одним деревом и сотней

MSTP (802.1s, Multiple Spanning Tree) — стандартный ответ на ту же задачу. Идея простая: деревьев столько, сколько нужно для балансировки, а не сколько VLAN. VLAN раскладывают по экземплярам (instance) — скажем, все «чётные» отделы в первый экземпляр, все «нечётные» во второй. Триста VLAN, два дерева, ресурсов расходуется как на два.

Плата за это — понятие MST-региона. Коммутаторы считаются одним регионом, только если у них совпадают три вещи: имя региона, номер ревизии конфигурации и вся таблица соответствия VLAN экземплярам. Ошиблись в одном символе имени на одном коммутаторе — он оказывается в собственном регионе, и для остальных весь его кусок сети выглядит как один общий мост. Балансировка при этом молча перестаёт работать, хотя все линки подняты и ошибок нигде нет.

Поэтому конфигурацию MST почти всегда раскатывают шаблоном, а не набирают руками, и сверяют командой проверки региона до, а не после включения в сеть.
Три коммутатора в кольце, два VLAN — и три разных ответа, сколько строить деревьев
Топология одна и та же во всех трёх случаях: SW1 — SW2 — SW3 замкнуты в треугольник. Меняется только то, сколько независимых деревьев по ней строится — и, как следствие, работает второй канал или простаивает.

Как проверять / частые ошибки

После подключения бывшего в употреблении коммутатора первым делом смотрите show vtp status: номер ревизии и режим. Если увидели чужую ревизию больше своей — выдёргивайте кабель, пока база не разошлась.

VLAN «пропал» сразу на всех коммутаторах — почти наверняка VTP, а не порты. Смотрите, кто последним менял базу и с какой ревизией.

Устройства в private VLAN видят друг друга — проверьте, не ходит ли трафик через шлюз: изоляция на коммутаторе не запрещает маршрутизацию обратно в ту же подсеть.

Резервный канал так и стоит заблокированным для всех VLAN — вы на общем дереве. Либо переходите на PVST+/MSTP, либо смиритесь.

MSTP настроен, а балансировки нет — сверьте имя региона, ревизию и таблицу VLAN-to-instance на всех коммутаторах побайтово. Расхождение в одном символе даёт ровно этот симптом.

Команды настройки — шпаргалка

# VTP: посмотреть и обезопасить
show vtp status
vtp domain OFFICE         # имя домена: базу принимают только от своего
vtp mode transparent      # режим: transparent сбрасывает ревизию и перестаёт
                          #        принимать чужую базу. Ещё бывают server и client
vtp version 3             # версия протокола, 3 — единственная с защитой
vtp primary vlan          # явно забрать право менять базу (только в v3)

# Private VLAN: числа здесь — номера VLAN, primary и isolated
vlan 101
 private-vlan isolated    # тип: порты этого VLAN не видят даже друг друга
vlan 100
 private-vlan primary     # тип: через него ходит весь трафик наружу
 private-vlan association 101   # привязать вторичный 101 к первичному 100
interface gi0/1
 switchport private-vlan host-association 100 101   # порт клиента:
                          #        сначала номер primary, затем secondary
interface gi0/24
 switchport private-vlan mapping 100 101   # порт шлюза: та же пара номеров,
                          #        но mapping — «выпускать наружу»

# STP и VLAN
show spanning-tree vlan 10                # дерево конкретного VLAN, 10 — номер
spanning-tree vlan 10 root primary        # корень для VLAN 10 — здесь;
                          #        primary = самый низкий приоритет, secondary = запасной
spanning-tree mode mst                    # режим: одно дерево на ГРУППУ VLAN
spanning-tree mst configuration
 name OFFICE              # имя региона: должно совпадать на всех коммутаторах
 revision 1               # номер ревизии: тоже должен совпадать, иначе регионы разные
 instance 1 vlan 10,30,50 # инстанс 1 — одно дерево на перечисленные VLAN
 instance 2 vlan 20,40,60 # инстанс 2 — второе дерево, другой набор VLAN
show spanning-tree mst configuration      # имя региона, ревизия и раскладка
                                          #   VLAN по инстансам — должны совпадать
                                          #   на всех коммутаторах региона
Контрольные вопросы

Следующая тема: Безопасность второго уровня

Теория прочитана. Дальше — руками.

Личный стенд из настоящих роутеров разворачивается за секунды. Платформа проверяет не ответы на тесты, а состояние вашей сети: поднялись ли соседства, сошлись ли маршруты, ходит ли ping. Рядом — AI-наставник, который видит ваши конфиги и ведёт к решению, не выдавая готовое.

Начать бесплатно → бета открыта, доступ бесплатный