5. VLAN
Ethernet
Необходимо напомнить об особенностях оригинального Ethernet, которые во многом определяют принципы работы коммутации в современных сетях.
В оригинальном Ethernet все терминальные узлы подключены к общему коаксиальному проводу - одной физической среде. Сигнал распространялся одновременно до всех участников или не распространялся, если среда не работала. Домен коллизий совпадал с широковещательным доменом, условно "честный" L2.
Весь современный коммутируемый Ethernet по сути является эмуляцией оригинального Ethernet. Разные домены коллизий в нем объединены в общий широковещательный домен.
Сегмент L2 по сути "виртуальный": для терминального узла на MAC-подуровне неотличим от "честного" L2 и количество или вообще наличие транзитных свитчей определить невозможно. На самом деле коммутация - задача L3, не решаемая в рамках IEEE 802.3.
Коммутация с VLAN
Эмуляция нескольких несвязанных сегментов Ethernet:
VLAN - виртуальный широковещательный домен.
Домены коллизий объединены в несколько широковещательных доменов
Обычно VLAN нумеруется с 1 по 4094
На устройстве запускаются несколько таблиц коммутации:
Людой кадр коммутируется только по одной из них
Максимально поддерживаемое число таблиц обычно меньше 4094
Просмотр базы и добавление нового VLAN:
Для создания VLAN важно выйти из контекста config-vlan, потому что только при выходе из контекста VLAN фактически создается.
Локальное отключение VLAN:
Suspended VLAN - VLAN будет отключен для всего домена VTP:
Access-порты
Обычные абоненты ничего не знают про VLAN. В заголовке Ethernet нет указания на VLAN.
В таком случае возникает вопрос как определить принадлежность кадра к VLAN. По информации из содержимого - небезопасно и немасштабируемо. В таком случае проще всего назначить один VLAN всем кадрам на приходящем порту, как правило сделать это лучше статически.
Стоит помнить о такой технологии, как Cisco Dynamic VLAN, требует Membership Policy Server (VMPS) на CatOS.
Trunk-порты
ISL-транки (Inter-Switch Link). По таким портам передаются кадры разных VLAN. Для определения принадлежности кадра к VLAN изменяется формат кадра.
Метки VLAN
Есть несколько способов добавить в кадр информацию о VLAN:
Cisco ISL. Инкапсуляция в другой протокол. Протокол этот проприетарный. Номер VLAN указывается в заголовке ISL. Оверхед при этом занимает 30 байт (26 байт заголовка и 4 - трейлер)
IEEE 802.10. Изменение кадра, возможно с шифрованием.
IEEE 802.1Q. Добавление нового поля в кадр. Поддерживается всеми вендорами. Оверхед занимает 4 байта.
Формат кадра 802.1Q
Особенности кадра 802.1Q
Максимальный размер кадра (MAC Client Data) вырастает до 1504 байт
Формат как у кадра Ethernet II c EtherType 0x8100. TPID по сути заменяет собой Ethertype. Благодаря этому коммутаторы без поддержки 802.1Q могут коммутировать такие кадры. Обычные абоненты вложение 0x8100 не обрабатывают.
У кадра меняется заголовок и, как следствие, FCS. При добавлении метки контрольная сумма пересчитывается.
В поле TCI есть следующая информация:
Priority Code Point (3 бита) - поле для стандарта 802.1p
Drop Eligible Indicator - расширение PCP или самостоятельное поле (до 802.1Q-2011 Сanonical Format Identifier в 1 бит, "0" в Ethernet и "1" в TokenRing)
VLAN Identifier (12 бит) - собственно номер VLAN
Кадры с метками и без
На портах доступа передаются кадры одного VLAN без метки:
untagged - тот самый абонентский VLAN
tagged - не передаются
На транках 802.1Q кадры могут передаваться с меткой и без:
untagged - не более одного VLAN, в терминологии Cisco - Native VLAN
tagged - все остальные VLAN
На транках ISL допустимы только кадры формата ISL
Состояния порта
Порт может быть в одном из состояний:
Static Access: порт принимает только обычные кадры и относит их все к определенному VLAN (характерно для абонентских портов)
Trunk: порт принимает обычные или модифицированные кадры и относит их к определенному VLAN исходя из заголовка кадра (характерно для межкоммутаторных линков)
В зависимости от настроек для определения номера VLAN для кадра могут читаться заголовки 802.1Q или ISL
Если заголовок отсутствует (только для транков 802.1Q), используется преднастроенный номер Native VLAN
Настройки приводят интерфейс к одному из состояний:
Access - обрабатываются только untagged кадры одного VLAN
Trunk - обрабатываются как untagged, так и tagged кадры
Просмотр состояния коммутации:
Switchport mode trunk:
Обрабатывает кадры с указанием метки VLAN.
На некоторых платформах поддерживается проприетарный стандарт ISL
На всех новых платформах есть 802.1Q
Команда switchport trunk encapsulation <#> задает тип транка
Команда switchport mode trunk включает режим транка
В 802.1Q поддерживаются untagged-кадры.
Команда switchport trunk native vlan <#> помечает Native VLAN
Кадры без метки коммутируются по таблице Native VLAN
Кадры Native VLAN отправляются без метки
Команда глобальной конфигурации vlan dot1q tag native изменяет поведение отправки и получения кадров Native VLAN на коммутаторе: кадры, относящиеся к Native VLAN и приходящие без метки, отбрасываются; любые кадры, в том числе относящиеся к Native VLAN, отправляются с меткой.
Настройки транка должны быть одинаковыми с двух сторон (нужно и для CDP, STP)
В качестве Native VLAN крайне рекомендуется вешать несуществующий VLAN
Ограничения VLAN в транке
Команда switchport trunk allowed vlan <list> указывает список VLAN, кадры которых могут отправляться или приниматься через интерфейс (при условии, что VLAN присутствует в базе).
Можно задать список явно или внести в него только изменения макросами
Самый распространенная ошибка при настройке коммутаторов
Иногда называется manual pruning
Сводная таблица транков:
Native VLAN
Изначально концепция Native VLAN предлагалась для поддержки абонентов в сегментах, соединяющих коммутаторы с 802.1Q
Сегодня причин ее использовать больше нет
Более того, на Native VLAN есть несколько атак
Рекомендуется использовать в качестве Native VLAN недоступный VLAN - отсутствующий в базе, выключенный или Honeypot (намеренно созданный VLAN терминирующийся на устройстве безопасности типа IDS)
Атака VLAN Hopping (switch spoofing):
Главная идея атаки - согласование транка между портом коммутатора и атакующим с помощью протокола DTP, получение доступа к VLAN и направление трафика до цели с нужно меткой
VLAN Hopping с двойной меткой:
Атака осуществима, если атакающий может послать кадр с двойной меткой: общей с Native VLAN и целевой VLAN. Промежуточный порт снимает метку Native VLAN и в транк отправляет кадр с нижней меткой до цели атаки.
Voice VLAN
Порт на коммутаторах Catalyst может быть настроен с использованием Voice VLAN, когда к этому порту подключается IP-телефон.
Используется режим на порту static access, кадры телефона помечаются Voice VLAN
IP-телефон может быть настроен автоматически с помощью CDP (свитч использует CDP для сообщения телефону, как тегировать кадры)
Сisco определяет данный тип порта как MultiVLAN, нежели как транк
Задать VLAN для голоса:
Никак не помечать кадры (по сути трафик будет смешан с хостовым):
Задает в метке 802.1Q "5" в Priority Code point, а номер VLAN будет нулевой (по сути отсутствовать):
Свитч не будет сообщать телефону условия тегирования кадров:
Транки на маршрутизаторах
VLAN - обособленный широковещательный домен. В транке приходят обычно несколько VLAN
Настройки IP обычно назначаются на интерфейсе. Каждому VLAN нужен отдельный интерфейс для соответствующих настроек маршрутизатора. Физический интерфейс остается один, но к нему создаются дочерние субинтерфейсы.
Работа с сабинтерфейсами:
Если родительский (физический) интерфейс выключен, субинтерфейсы работать не будут
Можно выключить отдельный субинтерфейс
Все настройки, относящиеся к конкретному VLAN, выполняются на соответствующих субинтерфейсах
Два способа работать с NativeVLAN.
Использовать настройки родительского интерфейса
создать отдельный субинтерфейс и пометить его VLAN параметром native: encapsulation dot1Q <#> native - будут обрабатываться кадры без меток
L3 на коммутаторах Cisco Catalyst
Routed Interface - физический интерфейс, кадры на котором пересылаются напрямую на/от Routing Engine
Создается internal VLAN из начала/конца диапазона Extended VLAN
По большому счету тоже SVI, но они не отражаются в списке VLAN и running-config
Можно поменять нумерацию VLAN для SVI, создаваемых для RI
SVI - Switch Virtual Interface - виртуальный интерфейс Routing Engine, подключенный к VLAN как терминальный узел.
SVI переходит в Up при выполнении условий:
Соответствующий VLAN в базе существует и активен
На коммутаторе должен быть хотя бы один порт, на котором одновременно:
Разрешена коммутация кадров соответствующего VLAN (хоть access, хоть trunk)
Форвардинг соответствующего VLAN не блокируется STP или VTP Pruning
Состояние порта up/down меняется с задержкой порядка 10 мс
Если задан
то SVI сам не поднимется
L3 интерфейсы могут менять состояние с большой задержкой. Команда carrier-delay msec <#> сокращает ее почти до нуля, но не рекомендуется, так в случае флаппинга порт зафлудит лог
Особенности использования VLAN
До IOS 12.4(15)T пользователю были доступны VLAN c 1 по 1001:
1 - служебный VLAN
2 - 1001 - Normal range VLAN
1002 - 1005 - VLAN TokenRing/FDDI
1006 - 4094 - Extended VLAN
Команды show vlan и show vlan brief не показывают транки.
Однако show vlan id <#> показывает
Catalyst под каждый no switchport порт занимает отдельный VLAN.
Internal allocation policy определит порядок назначения VLAN
Extended VLAN
VTP должен быть в режиме Transparent
VTPv3 может распространять все VLAN, но большинство свитчей начального уровня не поддерживают Extended VLAN
Хранится не в vlan.dat
Если VTP переводится в режим Client или Server, VLANы должны быть вручную удалены
Необходимо вручную перенастраивать порты, которые были в Extended VLAN
Multilayer Switch
Multilayer Switch - коммутатор, который умеет работать с заголовками протоколов разных уровней
При этом он не обязательно может быть с поддержкой маршрутизации
Для обеспечения маршрутизации используются SVI
Switched Virtual Interface
Интерфейс SVI ассоциируется с VLAN
Как правило, минимум один SVI на коммутаторе всегда есть, обычно их не меньше двух
Макросы Interface Range
При необходимости часто настраивать один и тот же набор интерфейсов, можно прибегнуть к использованию макроса для этой группы портов.
Создание группы:
Использование группы:
Last updated