зачем нужен native vlan
Native VLAN
Материал из Xgu.ru
В некоторых моделях коммутаторов, например, cisco, это можно изменить, указав другой VLAN как native.
Если коммутатор получает нетегированные кадры на транковом порту, он автоматически причисляет их к Native VLAN. И точно так же кадры, генерируемые с не распределенных портов, при попадании в транк-порт причисляются к Native VLAN.
Трафик, который принадлежит другим VLANам, тегируется с указанием соответствующего VLAN ID внутри тега.
Содержание
[править] Примеры настройки Native VLAN
[править] Коммутаторы Cisco
Настройка VLAN 5 как native:
Теперь весь трафик принадлежащий VLAN’у 5 будет передаваться через транковый интерфейс нетегированным, а весь пришедший на транковый интерфейс нетегированный трафик будет промаркирован как принадлежащий VLAN’у 5 (по умолчанию VLAN 1).
Проверить какой VLAN настроен как Native:
Из соображений безопасности (например, для защиты от VLAN Hopping) рекомендуется в транке выполнять тегирование даже для native VLAN. Включить тегирование фреймов для native VLAN глобально можно с помощью команды vlan dot1q tag native, просмотреть текущий статус тегирования можно используя команду show vlan dot1q tag native.
[править] Коммутаторы HP (ProCurve)
Для коммутаторов HP нет явной команды, которая настраивает Native VLAN. Для того чтобы настроить Native VLAN на этих коммутаторах, нужно просто указать, что в нужном VLAN определенный порт будет нетегированный:
Сайт ARNY.RU
Native VLAN — некоторое количество информации о данном виде VLAN. Что это такое, для чего нужна Native VLAN и откуда она взялась.
Все слышали краем уха про Native VLAN (далее NV), расскажу подробнее что это такое (на примере CISCO). Те кто знает про NV «от и до» — вам жму руку и обязуюсь выложить что-то интересненькое и для вас.
Что известно о Native VLAN?
В переводе с английского native — родной, естественный, встроенный:
Дополнительно: любой порт в режиме доступа принадлежит только одной VLAN. Тут есть исключение: Asymmetric VLAN. Это технологию использует D-Link. Вещь специфическая, область применения — SOHO. Кто хочет сломать мозги, подробнее тут.
Почему одинаковой? Любой кадр без тега, поступивший из транка на коммутатор, пересылается в NV. Допустим 2 коммутатора S1 и S2, у S1 NV=VLAN1, у S2 NV=VLAN10. Тогда кадры из VLAN1 с коммутатора S1 будут попадать во VLAN10 на S2 и наоборот. Это ошибка в конфигурации и нарушение безопасности.
Это можно изменить глобальной настройкой. Пользоваться этой настройкой крайне не рекомендуется. Да и честно даже не знаю в каком случае это может пригодиться. Возможно разве при траблшутинге подключения коммутатора CISCO к какому-то специфическому оборудованию.
Тут возникает вопрос: а как тогда вообще возможна атака с двойным тегированием? О чём я говорю и какие тут трудности, разбираю далее.
Для чего же была придумана Native VLAN?
По идее через транк должен ходить только тегированный трафик, но что делать коммутатору, если из транка приходят кадры без тега? Тут два варианта:
Чтобы была возможность обрабатывать трафик без тега, поступающий из транкового канала и отсылать в транк трафик без тега, была придумана Native VLAN:
Отсюда интересное явление: со стороны коммутатора транковый порт, к нему подключен PC. Трафик будет ходить? Будет:
На этом построено подключение компьютера через IP-телефон. К телефону от коммутатора прокинут транк с двумя VLANs, допустим, NV=VLAN3 и ещё VLAN5. Тогда телефон работает через VLAN5 с тегом, а PC через VLAN3 без тега (подробнее: //ciscomaster.ru/node/89 ).
Вот собственно и всё про данное понятие. Далее будут уже более специфичные особенности NV.
Несовпадение NV на концах транка
Что говорит по этому поводу сама CISCO:
Проверим эту ситуацию. Накидал лабу в EVE-NG:
Задал всем трём VPC адресацию 192.168.1.0/24. По идее если транк работоспособен, VPC1 должен пинговать VPC3, так как они в одной VLAN10. И VPC1 должен пинговать VPC2 через NV.
Проверяем: VPC1 пингует VPC2. Проверяем дальше: VPC1 не пингует VPC3. Немного подумав становится понятно, что при пинге VPC3, VPC1 отправит пакеты ARP и кадры содержащие эти пакты будут переданы без тега в транке, а кадры без тега на S2 перенаправляются в NV, то есть в VLAN20. И VPC2 эти ARP увидит, а VPC3 соответственно нет.
Что касается STP, попробовал все три режима MST, PVST+, Rapid PVST+ и каждый раз порты Gi0/0 были в режиме передачи (FWD) для всех VLANs.
Итого: при несовпадении NV транк работает, некорректно но работает. Вот такое расхождение с теорией. Хотя надо учитывать что пробовалось всё не на реальном железе, а на эмуляторе и возможно зависит от версии IOS.
NV на роутере
А может присутствовать NV на роутере? Конечно. Используется это в не очень хорошей схеме Router-on-a-Stick (роутер на палочке).
Схемы применения Router-on-a-Stick
Типовая, в этой схеме роутер связан с коммутатором транковым каналом, на роутере заводятся сабинтерфейсы (sub-interface) или есть русское слово подынтерфейс, но мне оно не нравится. Итак, один сабинтерфейс для одной VLAN. На каждом сабинтерфейсе настраивается IP адрес. Этот адрес используется как шлюз по умолчанию для данной VLAN. Таким образом достигается маршрутизация между VLANs посредством роутера. Недостатки такого метода:
А если данный линк 100 мегабитный, то это просто мрак. CISCO рекомендует настраивать маршрутизацию между VLANs на коммутаторе 3 уровня. В продакшене перевод схемы Router-on-a-Stick со 100Mbit линком в схему маршрутизации на коммутаторе, давал сокращение времени архивации сервера на сервер в другой VLAN в 3 с лишним раза.
Для VRF, когда между двумя роутерами один интерфейс и его надо поделить на несколько VRF, чтобы форвардить через каждый VRF свои VLANs. Это не совсем Router-on-a-Stick в привычном понимании, но принцип тот же (для R1 из рисунка):
Экзотические, в интернете наткнулся на интересную схему Router-on-a-Stick. Можно так сделать? Можно, работать будет. А нужно? Нет, не нужно. У меня даже больше вопросы не по безопасности, хотя данная схема полностью противоречит архитектуре иерархической сети, а то что оба провайдера висят на одном линке. Логичнее было бы каждого провайдера подключить к отдельному интерфейсу роутера напрямую и тогда Router-on-a-Stick просто становится не нужен.
Когда такую схему подключения полезно было бы задействовать? В ситуации когда у ротера остался только 1 рабочий порт, нет другого роутера и нет модулей расширения HWIC. Как временное решение.
Настройка NV на роутере
Возвращаемся к настройке Router-on-a-Stick, создаём логические сабинтерфейсы на роутере для примера выше, когда на коммутаторе настраивались VLANs 10,11,12:
Сабинтерфейсы включать не надо. Они будут включены автоматически, когда включён GigabitEthernet0/0. Теперь смотрим информацию о VLANs:
По умолчанию NV всё та же VLAN1. Теперь сменим её:
Снова смотрим информацию о VLANs:
Что делать если роутер не CISCO?
Если устройство не CISCO и у него нет возможности явной настройки NV на сабинтерфейсе, то NV нужно размещать на основном интерфейсе.
Пример. На коммутаторе NV=VLAN1, на роутере сабинтерфейс для VLAN1 не создаём. Почему? Если его создать, то трафик со стороны роутера будет тегироваться, коммутатор откинет тегированный трафик для NV. То есть IP адрес для NV (VLAN1) должен висеть на самом interface GigabitEthernet 0/0 роутера для примера сверху. Немного странная схема, но она работает.
Проверено на Dionis NX, CISCO ASA 55X0.
Немного о теге
Для того чтобы прикладывать тег, размер кадра пришлось увеличивать на 4 байта. Размер нетегированного кадра от 64 до 1518 байт, тегированного от 68 до 1522.
Процесс тегирования
У меня с коллегой по работе один раз вышел спор: внутри коммутатора кадр перемещается с тегом или без? Однозначного ответа тут нет. Постараюсь пояснить почему.
Нет единого стандарта как делать коммутаторы. Логика работы и начинка коммутатора различается от вендора к вендору. Вспомнить хотя бы D-Link и его Asymmetric VLAN.
Стандартом является только транк 802.1Q: внутри транка кадры передаются с тегом, кроме кадров NV. Это обеспечивает совместимость между коммутаторами разных вендоров.
Если брать коммутаторы CISCO, то по приходу кадра на порт коммутатора, управляющий портом ASIC (Application Specific Integrated Circuit) навесит на кадр дополнительный служебный заголовок. Этот заголовок называется shim header и существует только внутри коммутатора. В этом заголовке точно есть информация о VLAN, так коммутатор различает кадры из разных VLANs.
А что насчёт тега 802.1Q? Если размышлять в рамках CCNA R&S, то:
Поэтому обобщённо-упрощённая рабочая версия процесса тегирования при отсутствии CoS и сабинтерфейсов такая:
Если же используется CoS (маркировка трафика на втором уровне, при этом инфа записывается в поле Pri, соотвественно без тега не обойтись) или сабинтерфейсы то, тег 802.1Q вставляется в заголовок уже по приходу кадра на порт доступа.
Если я не прав — поправьте, вопрос открытый.
Рекомендации CISCO
Что рекомендует CISCO:
Естественно все забивают забывают про эти рекомендации. Если NV транков используется где-то для пользовательского трафика, то может проводиться атака с двойным тегированием.
Суть этой атаки, как объясняет сама CISCO:
Допустим у нас для транков NV = VLAN10. И эта же VLAN10 используется для пользовательских компьютеров. А VLAN20 используется для серверов.
Всё вроде бы хорошо, но есть несостыковки с теорией. Как исходный кадр попадает на первый коммутатор? Что это за порт?
Как-нибудь соберу лабу и поразбираюсь, пока только вопросы без ответов.
Кроме этого есть специальная технология двойного тегирования Q-in-Q (или dot1q tunneling ). С ней работать не приходилось, поэтому подробнее не расскажу. Но надо знать что двойной тег в общем-то возможен, хотя конечно зависит от реализации вендором.
Когда удобно менять Native VLAN?
Хоть NV и не рекомендуется использовать для пользовательского трафика, иногда это бывает весьма удобно.
Пример. Коллега из серверного отдела попросил меня настроить коммутатор. На коммутаторе будут только севера. Все сервера находятся в серверной VLAN. Однако неизвестно в какие порты будут подключены серверы виртуализации. Подключать будет сотрудник первой линии, максимум чего можно ждать, что он привинтит коммутатор, подаст питание, подключит патч-корды. A нужно чтобы 100% всё заработало сразу.
Делаем все «пользовательские» порты коммутатора транками. В качестве NV выбираем серверную VLAN:
Никого не призываю так делать и возможно потом вылезут проблемы (так и получилось), но когда лимит времени и нужен результат сразу очень даже хорошо.
Проблема из продакшена
Чтобы не ограничиваться сухой теорий, небольшой пример из продакшена. Он заставил меня поломать голову. Пример лишь косвенно связан с Native VLAN. С другой стороны роскошь, что хоть такой пример удалось подобрать.
Итак, есть 10 коммутаторов CISCO, 4 коммутатора Qtech и 1 D-Link, подключённых по топологии звезда. «Звезда смерти»: если посмотреть Иерархическую модель сети CISCO, то никакой звезды в продакшене быть не должно.
У каждого периферийного свича 1 транк до центрального CISCO 3750X. Конфигурации однотипные, центральный свич настроен корневым мостом STP. На CISCO используется Rapid PVST+ (1 дерево RSTP на каждую VLAN), на остальных RSTP (1 дерево RSTP на все VLANs).
При этом 4 периферийных Qtech также считают себя корневыми. Поскольку топология звезда, то для возникновения петли надо очень постараться и долгое время всё это так работало.
Самым правильным было бы изменить для всех коммутаторов протокол на MSTP. Но с другой стороны Rapid PVST+ и RSTP совместимы? Совместимы. Значит должно работать.
Разбираемся
Настройка приоритета STP и другие потуги именно с STP ничего не дают. Перекидываем аплинки к центральному коммутатору между одним из проблемных Qtech и нормально работающим D-Link, Qtech начинает «видеть» в разрезе STP корневой свич, D-Link перестаёт. Поэтому проблема, очевидно, не в марке Qtech.
Дальнейшее изучение показывает: проблемные свичи Qtech/D-Link не получают кадров BPDU. Далее обнаруживается, что для всех транков со стороны центрального свича не разрешена явным образом VLAN1. Она же является NV для всех транков. Добавление VLAN1 в список разрешённых сразу решает проблему.
При этом для периферийных коммутаторов CISCO никакой проблемы не было и нет.
Логика человека настраивавшего коммутаторы понятна. Нарезали VLANs, перевели туда все порты, во VLAN1 портов нет? Нет. Стало быть, зачем её разрешать на транке?
Постановка вопроса
Теперь нужно выяснить для D-Link и Qtech:
Проверка №1
Всё нормально, Root Port, Root Bridge. Убираем на центральном коммутаторе для транка на D-Link VLAN1 из списка разрешённых и ждём 20 секунд:
Коммутатор D-Link считает себя корневым.
Проверка №2
Теперь повторяем всё тоже самое с Qtech. Сначала VLAN1 разрешена в явном виде:
Всё гуд. Точно так же убираем на центральном свиче с транка на Qtech VLAN1 из разрешенных:
Количество полученных BPDU не меняется с этого момента. И коммутатор Qtech, рассчитав STP, считает себя корневым. Проблема актуальна.
Проверка №3
Теперь создаём VLAN 99, меняем NV с 1 на 99 с обоих сторон транка, удаляем VLAN 99 из разрешённых, а VLAN 1 наоборот добавляем в разрешённые и ещё раз проверяем. Если ситуация повторится, то данные STP для D-Link/Qtech привязаны к Native VLAN, нет — привязаны к VLAN 1.
Моя ставка была на Native VLAN, так как именно через неё должна передаваться служебная информация в случает CST, но я ошибся. Как оказалось после проверки — данные привязаны к VLAN1 и от NV не зависят. Скорее всего это особенности реализации технологии совместимости Rapid PVST+ и RSTP данными вендорами на данных моделях коммутаторов.
Откуда я вообще взял что именно через NV должна передаваться служебная информация? Для этого конкретного случая инфу нашёл:
Заключение
Первый вывод простой и очевидный: для лучшей совместимости не стоит делать «солянку» из коммутаторов разных вендоров. А если такая солянка уже есть, то не нужно использовать проприетарные протоколы на группе коммутаторов одного вендора. Наоборот необходимо использовать открытые протоколы IEEE на всех коммутаторах сразу.
Вывод второй: работа Native Vlan, тегирование 802.1Q — не такие уж простые вещи, как может показаться на первый взгляд.
Заметки о кошководстве 🙂
или Just Another CCNA Blog
суббота, 14 мая 2011 г.
Маленькое дополнение про Native VLAN.
Так как кадры Native VLAN обязаны проходить по транк-линкам без тегов, появление в транк-линке кадра с тегом номер которого совпадает с номером Native VLAN является не допустимым, и коммутатор получив такой кадр его уничтожает.
Скачать: pkt-файл
PS в pkt-файле есть небольшое изменение. Порты коммутаторов fa 0/2 переведены в режим trunk. Результат точно такой же, кадры идут без тега и дублируются на порты распределенные в первый влан (т.к. он же native) и наоборот. PPS если задать на коммутаторах разные Native vlan, то можно получить ситуацию с отбрасыванием кадров при совпадении тега с номером native vlan.
18 комментариев:
Тогда не должен пройти пинг от pc5 к pc6(транковый vlan совпадет с тегом vlan1), и судя по всему 1 коммутатор должен такой пакет отбросить.Я правильно понимаю?
Пройдёт элементарно этот пинг.
А что значит транковый vlan? Транк тегирует кадр, указывая там принадлежность кадра к определённому vlan, если это кадр native vlan, то транк с ним ничего не делает.
пинг будет проходить потому, что в данной лабе native vlan на коммутаторах совпадает.
тоесть Native vlan совпадает с vlan1(судя по написаному вами выше «Так как кадры Native VLAN обязаны проходить по транк-линкам без тегов, появление в транк-линке кадра с тегом номер которого совпадает с номером Native VLAN является не допустимым, и коммутатор получив такой кадр его уничтожает.»)
Это уточнение к первому вопросу,хочу разобраться.Спасибо.
native vlan совпадает с vlan1 по умолчанию, но вы при желании можете это изменить.
Да, он действительно его уничтожит, потому как это будет означать, что на коммутаторах не совпадает native vlan, эта проблема довольно просто исправляется, на одном из коммутаторов просто меняете native vlan на такой же самый (как и на других устройствах домена).
Если в транк с native vlan 10 попадет тегированный траффик(vlan 10) транк просто снимет этот тэг.
да на входе в транк свич снимет тег с такого кадра.
но если каким то чудом в самом транке появится тегированный кадр и прийдет на порт коммутатора он должен его отбросить.
Я бы немного уточнил последнее предложение, добавив некоторые слова для более лучшего восприятия. Вот как это бы выглядело: «Так как кадры ПРИНАДЛЕЖАЩИЕ Native VLAN обязаны проходить по транк-линкам без тегов, появление в транк-линке кадра с тегом номер которого совпадает с номером Native VLAN КОММУТАТОРА, КОТОРЫЙ ПОЛУЧАЕТ ЭТОТ КАДР, является не допустимым, и коммутатор, получив такой кадр, его уничтожает.»
насчет того, отбрасывается ли такой кадр это еще под вопросом. все никак не проверю на оборудовании
Смоделировал схему в PT по которой коммутатор получив из транка номер Native VLAN’а должен удалять такой VLAN. Ну. Ни хрена. Не удаляет. Коммутатору не фильтрует номера VLAN’ов в транке, если они совпадают с Native VLAN’ом. Он их пропускает через себя без ограничений.
Если интересно, попробуйте сами:
ROUTER1:
interface FastEthernet0/0.10
encapsulation dot1Q 10
ip address 192.168.10.1 255.255.255.0
!
interface FastEthernet0/0.20
encapsulation dot1Q 20
ip address 192.168.20.1 255.255.255.0
ROUTER2:
interface FastEthernet0/0.10
encapsulation dot1Q 10
ip address 192.168.10.2 255.255.255.0
!
interface FastEthernet0/0.20
encapsulation dot1Q 20
ip address 192.168.20.2 255.255.255.0
SW1, SW2:
interface FastEthernet0/1
switchport trunk native vlan 10
switchport mode trunk
!
interface FastEthernet0/2
switchport trunk native vlan 10
switchport mode trunk
Схема: ROUTER1 SW1 SW2 ROUTER2
да я в курсе. последнюю неделю как раз этот вопрос разбирал )))
видимо все таки в курсе ошибка или неверная формулировка.

















