Теория: VLAN углублённо — VTP, private VLAN и деревья STP
Как список VLAN разъезжается по сети сам, как изолировать устройства внутри одного VLAN и сколько деревьев STP строить, когда VLAN много. Прочитайте материал, а затем пройдите тест — следующий пункт курса откроется после верных ответов.
Что осталось за рамками базовой темы
Базовая тема закрывает то, без чего VLAN не настроить: access-порты, транки, тег 802.1Q. Этого хватает, пока коммутаторов два и VLAN тоже два. Дальше начинается то, ради чего инженеров зовут на собеседования.
Первый вопрос: кто и как раздаёт список VLAN на десятки коммутаторов — вручную заводить VLAN 10 на каждом из сорока устройств никто не станет. Второй: что делать, когда изоляции между VLAN мало и нужно изолировать устройства внутри одного VLAN. Третий: как VLAN уживаются с протоколом STP из предыдущей темы — одно дерево на всю сеть или своё на каждый 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 — всегда локальная настройка коммутатора, и никакой протокол за вас её не разнесёт.
Ролей три. Server — можно создавать и удалять VLAN, изменения рассылаются. Client — свои VLAN заводить нельзя, база принимается извне и в конфиге не хранится. Transparent — коммутатор живёт своей базой, чужие объявления не применяет, но пропускает их дальше по транкам транзитом.
Важная деталь, которую путают: VTP раздаёт список VLAN, а не принадлежность портов. Какой порт в каком VLAN — всегда локальная настройка коммутатора, и никакой протокол за вас её не разнесёт.
Чем VTP знаменит — номер ревизии, стирающий сеть
У базы VLAN есть номер ревизии (revision number): счётчик, растущий при каждом изменении. Коммутатор принимает чужую базу, если пришедший номер ревизии больше его собственного. Роль при этом не спасает: клиент с ревизией 50 перезапишет сервер с ревизией 40.
Отсюда классическая авария, которая случалась у многих. Берут коммутатор с полки — тот самый, на котором месяц назад в лаборатории накрутили полсотни VLAN и накрутили ревизию до сотни. Ставят в стойку, включают транк — и он рассылает свою лабораторную базу по всему домену. Продакшн-VLAN исчезают со всех коммутаторов разом, порты остаются приписанными к несуществующим VLAN, сеть встаёт целиком. Восстановить из памяти нечего: клиенты базу в конфиге не хранят.
Правило, которое стоит выучить один раз и навсегда: перед подключением бывшего в употреблении коммутатора обнулите ревизию. Простейший способ — перевести в режим transparent и обратно, либо сменить имя VTP-домена на любое другое и вернуть назад: и то, и другое сбрасывает счётчик в ноль. Проверять —
Отсюда классическая авария, которая случалась у многих. Берут коммутатор с полки — тот самый, на котором месяц назад в лаборатории накрутили полсотни VLAN и накрутили ревизию до сотни. Ставят в стойку, включают транк — и он рассылает свою лабораторную базу по всему домену. Продакшн-VLAN исчезают со всех коммутаторов разом, порты остаются приписанными к несуществующим VLAN, сеть встаёт целиком. Восстановить из памяти нечего: клиенты базу в конфиге не хранят.
Правило, которое стоит выучить один раз и навсегда: перед подключением бывшего в употреблении коммутатора обнулите ревизию. Простейший способ — перевести в режим transparent и обратно, либо сменить имя VTP-домена на любое другое и вернуть назад: и то, и другое сбрасывает счётчик в ноль. Проверять —
show vtp status, до того как воткнут кабель, а не после.Роль коммутатора аварию не предотвращает: клиент с большей ревизией
перезаписывает сервер. Решает только номер, и сравнивает его протокол молча.
VTP версии 3 и режим transparent
VTP версии 3 сделан после того, как индустрия набила шишек. Появился primary server: право менять базу нужно явно захватить командой, и одного лишь большого номера ревизии для перезаписи уже мало. Добавилась поддержка расширенного диапазона VLAN (1006–4094), которого версии 1 и 2 не умели, и распространение других баз — например, привязки VLAN к деревьям MST, о которых ниже. Есть и режим off, который не пропускает объявления даже транзитом.
При этом в живых сетях очень часто встречается самое простое решение: перевести всё в transparent и завести VLAN руками. Со стороны выглядит как отказ от автоматизации, но за этим стоит трезвый расчёт: заводить VLAN приходится раз в несколько месяцев, а риск потерять сеть целиком существует постоянно. Сегодня список VLAN всё чаще раскатывают системой автоматизации конфигураций, и тогда VTP не нужен вовсе.
При этом в живых сетях очень часто встречается самое простое решение: перевести всё в transparent и завести VLAN руками. Со стороны выглядит как отказ от автоматизации, но за этим стоит трезвый расчёт: заводить VLAN приходится раз в несколько месяцев, а риск потерять сеть целиком существует постоянно. Сегодня список VLAN всё чаще раскатывают системой автоматизации конфигураций, и тогда VTP не нужен вовсе.
Private VLAN — изоляция внутри одного VLAN
Обычный VLAN изолирует группы друг от друга, но внутри группы все видят всех. Иногда это ровно то, чего быть не должно. Гостевой Wi-Fi: посетителям нужен интернет, но видеть ноутбуки друг друга им незачем. Хостинг: сервера разных клиентов стоят в одной стойке и в одном VLAN, и клиент А не должен видеть клиента Б. Раздавать каждому по отдельному VLAN и по отдельной подсети — расточительно: адреса кончатся быстрее, чем клиенты.
Private VLAN (PVLAN) решает это, не плодя подсети. Один первичный (primary) VLAN делится на вторичные (secondary), и все они пользуются общей IP-подсетью и общим шлюзом. Изоляция при этом наводится на канальном уровне — устройства просто не видят кадров друг друга, хотя формально находятся в одной сети.
Private VLAN (PVLAN) решает это, не плодя подсети. Один первичный (primary) VLAN делится на вторичные (secondary), и все они пользуются общей IP-подсетью и общим шлюзом. Изоляция при этом наводится на канальном уровне — устройства просто не видят кадров друг друга, хотя формально находятся в одной сети.
Три роли портов в private VLAN
Promiscuous — «разговаривает со всеми». В этот порт включают шлюз, маршрутизатор или межсетевой экран: он должен быть доступен каждому.
Isolated — порт в изолированном вторичном VLAN. Видит только promiscuous и больше никого, даже соседа по тому же изолированному VLAN. Это режим для гостевой сети: интернет есть, соседей нет.
Community — порт в общем вторичном VLAN. Видит promiscuous и своих по community, но не чужие community. Так включают группу серверов одного клиента: между собой они общаются, наружу к другим клиентам — нет.
Комбинация покрывает почти любой сценарий совместного размещения. Главное помнить: изолированный вторичный VLAN в первичном может быть только один, а community — сколько угодно.
Isolated — порт в изолированном вторичном VLAN. Видит только promiscuous и больше никого, даже соседа по тому же изолированному VLAN. Это режим для гостевой сети: интернет есть, соседей нет.
Community — порт в общем вторичном VLAN. Видит promiscuous и своих по community, но не чужие community. Так включают группу серверов одного клиента: между собой они общаются, наружу к другим клиентам — нет.
Комбинация покрывает почти любой сценарий совместного размещения. Главное помнить: изолированный вторичный VLAN в первичном может быть только один, а community — сколько угодно.
Все шесть портов — в одной IP-подсети и с одним шлюзом: изоляцию
наводит коммутатор на канальном уровне. Поэтому она и обходится маршрутизацией — если шлюз
в promiscuous-порту готов отправить пакет обратно в ту же подсеть, два isolated-порта
всё-таки друг друга достанут.
Где private VLAN ломается — и о чём спрашивают на собеседовании
Первое: PVLAN живёт на коммутаторе, а не в проводе. Если между устройствами стоит ещё один коммутатор, который про private VLAN не знает или не настроен, изоляция на нём заканчивается — и трафик спокойно ходит там, где не должен. Через транки вторичные VLAN нужно проносить явно.
Второе, и это любимый вопрос собеседующих: изоляция канального уровня не мешает маршрутизации. Два isolated-порта не видят друг друга напрямую, но если шлюз в promiscuous-порту готов маршрутизировать трафик обратно в ту же подсеть, пакеты пройдут через него — и вся изоляция обойдена. Лечится это не на коммутаторе, а на шлюзе: запретом такой маршрутизации или списком доступа.
Третье: не всякое оборудование умеет PVLAN, а у тех, кто умеет, детали реализации у разных вендоров разъезжаются. Перед проектированием стоит убедиться, что вся цепочка устройств поддерживает нужные роли портов.
Второе, и это любимый вопрос собеседующих: изоляция канального уровня не мешает маршрутизации. Два isolated-порта не видят друг друга напрямую, но если шлюз в promiscuous-порту готов маршрутизировать трафик обратно в ту же подсеть, пакеты пройдут через него — и вся изоляция обойдена. Лечится это не на коммутаторе, а на шлюзе: запретом такой маршрутизации или списком доступа.
Третье: не всякое оборудование умеет PVLAN, а у тех, кто умеет, детали реализации у разных вендоров разъезжаются. Перед проектированием стоит убедиться, что вся цепочка устройств поддерживает нужные роли портов.
VLAN и STP — одно дерево на всех или своё на каждого
Этот и два следующих раздела опираются на тему «STP / RSTP — защита от петель L2» — она разобрана в начальном курсе.
Из темы про STP известно: чтобы кольцо не превратилось в шторм, часть портов протокол блокирует. Вопрос, который там остался за скобками: сколько деревьев строить, если VLAN несколько?
Исходный стандарт 802.1D знал одно дерево на всю сеть — CST (Common Spanning Tree). Просто и дёшево по ресурсам, но обидно: если порт заблокирован, он заблокирован для всех VLAN сразу. Купили второй канал между коммутаторами — он просто стоит выключенным, вместо того чтобы возить хотя бы половину трафика.
Отсюда естественное желание: сделать деревья разными для разных VLAN. Тогда для VLAN 10 заблокирован один канал, а для VLAN 20 — другой, и оба провода работают. Это и называется балансировкой нагрузки средствами STP, и ради неё придумано всё остальное в этом разделе.
Из темы про 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, — источник неочевидных проблем, когда часть деревьев схлопывается в одно на границе.
Цена — ресурсы. Каждый экземпляр дерева шлёт свои BPDU и держит свои таймеры, и расход растёт линейно с числом VLAN. На четырёх VLAN этого никто не замечает, на трёхстах на скромном коммутаторе доступа процессор занят уже только служебным трафиком. Отсюда практический предел: PVST+ хорош, пока VLAN десятки, а не сотни.
Второй подвох — совместимость. PVST+ проприетарен, и стыковка с оборудованием других вендоров, говорящим на стандартном STP, — источник неочевидных проблем, когда часть деревьев схлопывается в одно на границе.
MSTP — компромисс между одним деревом и сотней
MSTP (802.1s, Multiple Spanning Tree) — стандартный ответ на ту же задачу. Идея простая: деревьев столько, сколько нужно для балансировки, а не сколько VLAN. VLAN раскладывают по экземплярам (instance) — скажем, все «чётные» отделы в первый экземпляр, все «нечётные» во второй. Триста VLAN, два дерева, ресурсов расходуется как на два.
Плата за это — понятие MST-региона. Коммутаторы считаются одним регионом, только если у них совпадают три вещи: имя региона, номер ревизии конфигурации и вся таблица соответствия VLAN экземплярам. Ошиблись в одном символе имени на одном коммутаторе — он оказывается в собственном регионе, и для остальных весь его кусок сети выглядит как один общий мост. Балансировка при этом молча перестаёт работать, хотя все линки подняты и ошибок нигде нет.
Поэтому конфигурацию MST почти всегда раскатывают шаблоном, а не набирают руками, и сверяют командой проверки региона до, а не после включения в сеть.
Плата за это — понятие MST-региона. Коммутаторы считаются одним регионом, только если у них совпадают три вещи: имя региона, номер ревизии конфигурации и вся таблица соответствия VLAN экземплярам. Ошиблись в одном символе имени на одном коммутаторе — он оказывается в собственном регионе, и для остальных весь его кусок сети выглядит как один общий мост. Балансировка при этом молча перестаёт работать, хотя все линки подняты и ошибок нигде нет.
Поэтому конфигурацию MST почти всегда раскатывают шаблоном, а не набирают руками, и сверяют командой проверки региона до, а не после включения в сеть.
Топология одна и та же во всех трёх случаях: SW1 — SW2 — SW3 замкнуты
в треугольник. Меняется только то, сколько независимых деревьев по ней строится — и,
как следствие, работает второй канал или простаивает.
Как проверять / частые ошибки
После подключения бывшего в употреблении коммутатора первым делом смотрите
VLAN «пропал» сразу на всех коммутаторах — почти наверняка VTP, а не порты. Смотрите, кто последним менял базу и с какой ревизией.
Устройства в private VLAN видят друг друга — проверьте, не ходит ли трафик через шлюз: изоляция на коммутаторе не запрещает маршрутизацию обратно в ту же подсеть.
Резервный канал так и стоит заблокированным для всех VLAN — вы на общем дереве. Либо переходите на PVST+/MSTP, либо смиритесь.
MSTP настроен, а балансировки нет — сверьте имя региона, ревизию и таблицу VLAN-to-instance на всех коммутаторах побайтово. Расхождение в одном символе даёт ровно этот симптом.
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-наставник, который видит ваши конфиги и ведёт к решению, не выдавая готовое.
Начать бесплатно →
бета открыта, доступ бесплатный