Настройка VLAN в RouterOS
Жуём по 20-му разу.
Глядишь кому-нибудь поможет. Своё видение того, как всю эту кухню настраивать.
- С чего начать
- Коммутатор сброшен в чистую конфигурацию
- На bridge обязательно назначен mac адрес
- Сеть Управления
- Что такое Bridge
- Таблица vlan коммутации
- Настраиваем Trunk
- Настраиваем access/untagged
- Почти всё
- Суть
Рассматривать мы будем настройку только на bridge в RouterOS, и я предполагаю, что вы в курсе какие есть аппаратные возможности у вашего маршрутизатора, так как такие возможности могут сказаться сильно на производительность, но в данной статье про настройку, а не про возможности чипа коммутации.
С чего начать
Одной из главных проблем или нюансов заключается в том, что обычно мы настраиваем все порты, в том числе и тот порт, через который производится текущая настройка.
Хорошее решение заключается в том, чтобы временно отказаться от настройки, того порта через которые мы подключены. К сожалению, это не всегда возможно, так как часто нас просят расширить текущую топологию коммутации, и мы находимся в работающей сети. И часто коммутатор подключают будущими Trunk портами в текущую сеть.
Чтобы все прошло удачно, и мы не отстрелили себе хвост, я использую следующие подходы.
- Коммутатор сброшен в чистую конфигурацию.
- На bridge обязательно назначен mac адрес.
- Вы определились, как вы будете настраивать management сеть untagged или tagged vlan.
- Таблица vlan egress коммутации должна быть настроена перед добавлением портов.
- Не обобщайте одной записью несколько vlan в таблице коммутации egress vlan.
- Все Access\untagged добавляться ИСКЛЮЧИТЕЛЬНО через интерфейс листы.
- Trunk порты добавляются вручную.
- Порты коммутации в bridge добавляются на самом последнем этапе в режиме safe mode.
- Настройка обнаружения соседства включается только после проверки работоспособности всей коммутации, т.е. после добавления портов.
А теперь по порядку
Коммутатор сброшен в чистую конфигурацию
Не испытывайте судьбу, выполните и забудьте
/system reset-configuration no-defaults=yes
На bridge обязательно назначен mac адрес
Не испытывайте судьбу, пусть mac адрес у коммутатора будет всегда статичен, а не зависеть от поднятого порта на момент запуска коммутатора.
Я предпочитаю устанавливать такой же mac адрес, как и у первого порта.
На ваш закономерный вопрос почему первый, а не последний или какой-то другой? Ответ в любом коммутаторе\устройстве MikroTik всегда есть ether1, а вот второго может и не быть, вспомните sfp коммутаторы.
/interface/bridge/add name=br0 admin-mac="$[/interface ethernet get value-name=mac-address ether1]" auto-mac=no vlan-filtering=yes
Сеть Управления
Я предпочитаю использовать отдельный логический интерфейс для всяких штук management. Однако если вы не хотите добавлять логические интерфейсы, а хотите апеллировать интерфейсом bridge тогда в настройках bridge укажите значения pvid вашего management vlan.
Например, если ваш management vlan это VID 2, то используйте следующую команду:
/interface/bridge/set pvid=2 br0
Я предпочитаю использовать отдельный логический интерфейс.
/interface/vlan/add name=br0.2 vlan=2 interface=br0 comment=”mgmt”
Обратите внимания, что логический интерфейс назначается не на физический интерфейс, а на сам bridge. Также нам потребуется в случае логического интерфейса добавить vlan в таблицу коммутации egress, однако в случае с pvid, делать этого не нужно.
/interface/bridge/vlan add bridge=br0 tagged=br0 vlan-ids=2
Некоторые из вас наверняка спросят, что за чертовщина тут происходит, похоже на заклинание voodoo.=)
Все дело в контексте или в понимании уровня обструкции работы коммутатора.
Что такое Bridge
Для того чтобы понять «и простить» =), что такое и как работать с bridge, необходимо ознакомиться с простой схемой.
Перед вами схема.

Самый нижний блок, это непосредственно чип коммутации и присоединенные к нему физические интерфейсы. Бывают разные схемы, несколько чипов коммутации или бывает какие-то порты подключены напрямую к CPU, а какие-то к Switch. Нижний блок — это аппаратная составляющая, сам чип коммутации соединен с CPU внутренним интерфейсом и обычно скорость данного интерфейса 1Gbps хотя есть и 2.5Gbps по-разному.
При этом необходимо помнить, что вы можете «натыкать» в настройках Bridge всякие ништяки, но эти ништяки могут не поддерживаться аппаратным (HW) чипом коммутации (например horizon), в таком случае те порты, на которых настроен неподдерживаемый аппаратным чипом функционал переводиться в режим passtruth, и фреймы с такого порта отправляются напрямую в CPU через «узкий» интерфейс. Бывают конфигурации, которые сразу отключает на всех портах HW, например mstp.
Хотя какой-то функционал и не поддерживается аппаратным чипом коммутации, он может и будет запросто поддерживаться программной реализацией в RouterOS (читай Linux). Соответственно чего бы вы «не натыкали» в настройках коммутатора, коммутация работать будет, просто может поменяться контекст исполнения это коммутации HW или Soft.
А теперь непосредственно про вот эту запись.
/interface/bridge/vlan add bridge=br0 tagged=br0 vlan-ids=2
Что на HW или что на Soft коммутаторе всегда присутствует ещё один интерфейс, который соединяет непосредственно с CPU или L3 CPU (логикой). Предположим, у вас пяти портовый коммутатор MikroTik c HW, к switch чипу подключено не пять интерфейсов, а на один больше - шесть. Шестой интерфейс — это тот самый интерфейс, которым подключен сам чип коммутации к CPU.
Такою топологию проще воспринимать как отдельно стоящий маршрутизатор и отдельно стоящий коммутатор соединенные каким-то линком.
В некоторых моделях вы можете найти отдельный раздел switch специально для настройки ТОЛЬКО аппаратной части Switch и в некоторых настройках вы можете увидеть такие порты
[mgm@test] > /interface ethernet switch rule add ports=
ether... sfp-sfpplus1 sfp-sfpplus3 switch1-cpu
qsfpplus... sfp-sfpplus2 sfp-sfpplus4 switch2-cpu
Обратите внимание на switch1-cpu это и есть интерфейс, которым соединён аппаратный коммутатор с CPU. Если с аппаратной коммутацией стало немного проще, то что делать с программной реализацией, где нам взять этот самый интерфейс cpu?
В первых реализациях vlan-ов на bridge был такой интерфейс to-cpu (не вспомнил правильное название).
А далее такой порт переименовали в имя самого Bridge, ведь именно на нём вы поднимаете логический интерфейс, именно с него (от CPU) будут уходить в коммутатор трафик, который необходимо будет коммутировать.
Т.е сам Bridge это ещё и интерфейс, который соединяет L3 CPU с коммутацией, вот и всё.
При этом, в зависимости от уровня абстракции он может быть одновременно и switch1-cpu и L3 CPU.
Таблица vlan коммутации
Существует таблица коммутации процессом обучения каким-то образом заполнена информация, о том в каком vlan в каком интерфейсе находиться определённый мак адрес. Я не буду объяснять, как работает процесс обучения, там всё просто. Однако нужно понять каким образом происходит коммутация с vlan.
В таблице fdb мы видим все три основных параметра обучения mac,vlan,port и прочее

Существует два типа фильтрации
- Egress – Выход (Трафик уходит с коммутатора)
- Ingress – Вход (Трафик пришёл в коммутатор)
Когда фрейм без тэга прилетает на порт коммутатора, коммутатору необходимо понять среди какого vlan тега необходимо искать интерфейс выхода в таблице fdb, для этого используется Ingress фильтр и настраивается он на самом порту bridge-а во вкладке vlan, значение pvid.
Для примера
/interface bridge port add bridge=br0 interface=ether2 pvid=3
В примере выше мы настроили Ingress фильтр таким образом, трафик без тег-a будет искать интерфейс по таблице fdb vlan тег-a 3.
Когда коммутатор поймёт, что необходимо отправить фрейм допустим в пятый порт, он посмотрит в таблицу Egress и поймёт, что необходимо сделать с фреймом, установить тег или убрать из фрейма тег. Непосредственно Egress фильтр находится во вкладке vlan в разделе bridge.
- Tagged - Установить ТЭГ
- Untagged - Снять ТЭГ
В RouterOS используется технология симметричного vlan, когда мы указываем Ingress pvid=2, RouterOS автоматически и без необходимости создаст запись untagged=port в Egress фильтре.
Настраиваем Trunk
Предположим, что наш коммутатор имеет 6 портов Коммутатор проходной, 5 и 6 порт - Trunk остальные четыре порта, это порты доступа (access/untagged) 3 и 4 vlan соответственно, и да у нас есть vlan2 для управления.
- Ether1 и ether2 (vlan 3) - access/untagged
- Ether3 и ether4 (vlan 4) - access/untagged
Как я указывал ваше, только Trunk мы описываем в egress фильтре. Trunk порт – интерфейс, подключенный к другим устройствам, которые поддерживают технологию vlan, обычно коммутаторы.
Заполняем egress
/interface bridge vlan
add bridge=br0 vlan-ids=2 tagged="br0,ether5,ether6”
add bridge=br0 vlan-ids=3 tagged="ether5,ether6”
add bridge=br0 vlan-ids=4 tagged="ether5,ether6”
Обратите внимания, что никакие untagged мы не указываем, когда мы укажем pvid, RouterOS сам всё сделает. Также так как нам нет необходимости вытаскивать на CPU 3 и 4 vlan br0 не указываем как теггированный.
Да, да я знаю, что мы можем сделать так:
/interface bridge vlan
add bridge=br0 vlan-ids=3,4 tagged="ether5,ether6”
Такая запись подходит ТОЛЬКО, если данные теги идут транзитом через коммутатор и не будет сниматься тег иначе «жди беды» особенно если это будет vlan управления. Так как переделать такую контракцию «на живую» под safe-mode не так просто, придётся манипулировать с MAC адресами, чтобы вас не выкинуло.
Настраиваем access/untagged
Я не претендую на идеальную конфигурацию. Просто показываю как можно настроить и использовать функционал. Держите в голове, что у вас может быть сеть не из 6 портов, а и 500 и тогда такая конфигурация не покажется чересчур запутанная.
Так как у нас два тега будут access, то подготовим два интерфейса листа, например vlan3 и vlan4
/interface list
add name=vlan3
add name=vlan4
Далее добавим данный ЛИСТЫ в порты brdige при этом, к примеру включим PBDU Guard. Да вы можете настраивать и другие параметры, я же привел просто как пример.
/interface bridge port
add bridge=br0 bpdu-guard=yes interface=vlan3 pvid=3
add bridge=br0 bpdu-guard=yes interface=vlan4 pvid=4
Почти всё
Осталось дело за малым, добавим Trunk в бридж
/interface bridge port
add bridge=br0 interface=ether5
add bridge=br0 interface=ether6
А Accees порты вы добавляете в интерфейсы листы соответствующему номеру vlan, тем самым обеспечиваете безошибочную конфигурацию портов, относительно разных параметров. Вы не забудете включить bpdu-guard и не забудете указать pvid, так как он и все другие параметры копируется с настроек интерфейс листа. Также если вы решите поменять номер тега или какой-то параметр вам достаточно сделать это на интерфейс лист и настройки тут же будут перенесены на все порты.

Настройка MikroTik
Закажи настройку MikroTik непосредственно сейчас, поможем в поиске решения по любому кейсу связанному с MikroTik.
Предоставляю гарантию две недели на свою работу, оплата постфактум, работаю как с юридическими, так и физическими лицами.
Суть
Если ты до сюда дочитал и всё ровно нечего не понял =), вот тебе краткий ликбез.
- Хочешь сделать Access\untaged то укажи pvid на порту необходимого vlan.
- Хочешь сделать trunk, то укажи tagged порт в bridge->vlan.
- Хочешь сделать hybrid (Есть такое наименование) то выполни для порта первое и второе правила из этого списка естественно с разными тегами.
/interface bridge port
add bridge=br0 interface=ether1 pvid=3
add bridge=br0 interface=ether2
/interface bridge vlan
add bridge=br0 vlan-ids=3 tagged="ether2”
В примере выше ether1 - untaged для vlan 3 и ether2 - tagged для этого же vlan.
Поделиться
Обсуждение
Лицензия
Текст данной статьи распространяется под общедоступной лицензией CC BY-NC-ND 4.0, ознакомиться с тектом лицензии вы можете на данной странице.