Начиная с версии RouterOS 6.41 разработчики изменили синтаксис настройки VLAN. Давайте разберемся в изменениях и выделим некую «дельту» относительно настроек VLAN посредством старого синтаксиса, т.к. мануалов в сети полно и хотелось бы понять, что надо добавить или убрать, чтобы эту «старую» информацию можно было применить.
Задачу возьмем из предыдущей лабораторной.
На схеме 3 коммутатора. Центральный из них принадлежит провайдеру, два крайних — конечному потребителю.
С провайдером заключены 2 договора:
— договор 1: хождение VLAN7 между площадками №1 и №2;
— договор 2: хождение VLAN14,15,16,17 между площадками №2 и №3.
Что либо менять провайдер у себя не может, т.к. есть договорные обязательства.
Оборудование в наличии:
— на площадке №1: маршрутизатор RB951G-2HnD использующий чип коммутации;
— на площадке №2: коммутатор CRS125-24G-1S-RM;
— на площадке №3: коммутатор CRS125-24G-1S-RM.
Т.к. в наличии коммутатора CRS3xx у меня нет, буду использовать имеющийся CRS125. На нем я применю синтаксис для CRS3xx, что деактивирует чип коммутации на коммутаторе, т.е. трафик будет обрабатываться через CPU. В работе так конечно делать нельзя, но для отработки написания нового синтаксиса вполне сойдет.
Требуется:
— объединить трафик VLAN7 в VLAN14 на CRS125-24G-1S-RM расположенным на площадке №2;
— доступ к управлению оборудованием обеспечить из VLAN7 и VLAN14.
Настройка коммутатора на площадке №2
Начнем настройку с данного оборудования как самого сложного элемента в сети.
Трансляцию VLAN7<=>VLAN14 настроим на выделенных портах и соединим их патч-кордом. Не знаю как настроить трансляцию средствами чипа коммутации без такой перемычки. Если кто подскажет как, то пишите в комментариях, добавлю в статью.
Схема хождения трафика внутри коммутатора:
— Задействуем чип коммутации.
Создаем бриджевый интерфейс BR_MAIN на который CPU будет принимать трафик.
/interface bridge add name=BR_MAIN protocol-mode=none
Добавляем интерфейсы в данный бридж.
/interface bridge port add bridge=BR_MAIN interface=ether1 add bridge=BR_MAIN interface=ether2 add bridge=BR_MAIN interface=ether3 add bridge=BR_MAIN interface=ether4 add bridge=BR_MAIN interface=ether5 add bridge=BR_MAIN interface=ether6 add bridge=BR_MAIN interface=ether7 add bridge=BR_MAIN interface=ether8 add bridge=BR_MAIN interface=ether9 add bridge=BR_MAIN interface=ether10 add bridge=BR_MAIN interface=ether11 add bridge=BR_MAIN interface=ether12 add bridge=BR_MAIN interface=ether13 add bridge=BR_MAIN interface=ether14 add bridge=BR_MAIN interface=ether15 add bridge=BR_MAIN interface=ether16 add bridge=BR_MAIN interface=ether17 add bridge=BR_MAIN interface=ether18 add bridge=BR_MAIN interface=ether19 add bridge=BR_MAIN interface=ether20 add bridge=BR_MAIN interface=ether21 add bridge=BR_MAIN interface=ether22 add bridge=BR_MAIN interface=ether23 add bridge=BR_MAIN interface=ether24 add bridge=BR_MAIN interface=sfp1
Проверяем, что чип коммутации задействован.
[admin@MikroTik] > /interface bridge port print Flags: X - disabled, I - inactive, D - dynamic, H - hw-offload # INTERFACE BRIDGE HW PVID PRIORITY PATH-COST INT-PATH-COST HORIZON 0 H ether1 BR_MAIN yes 1 0x80 10 10 none 1 I H ether2 BR_MAIN yes 1 0x80 10 10 none 2 H ether3 BR_MAIN yes 1 0x80 10 10 none 3 H ether4 BR_MAIN yes 1 0x80 10 10 none 4 I H ether5 BR_MAIN yes 1 0x80 10 10 none 5 I H ether6 BR_MAIN yes 1 0x80 10 10 none 6 I H ether7 BR_MAIN yes 1 0x80 10 10 none 7 I H ether8 BR_MAIN yes 1 0x80 10 10 none 8 I H ether9 BR_MAIN yes 1 0x80 10 10 none 9 I H ether10 BR_MAIN yes 1 0x80 10 10 none 10 I H ether11 BR_MAIN yes 1 0x80 10 10 none 11 I H ether12 BR_MAIN yes 1 0x80 10 10 none 12 I H ether13 BR_MAIN yes 1 0x80 10 10 none 13 I H ether14 BR_MAIN yes 1 0x80 10 10 none 14 I H ether15 BR_MAIN yes 1 0x80 10 10 none 15 I H ether16 BR_MAIN yes 1 0x80 10 10 none 16 I H ether17 BR_MAIN yes 1 0x80 10 10 none 17 I H ether18 BR_MAIN yes 1 0x80 10 10 none 18 I H ether19 BR_MAIN yes 1 0x80 10 10 none 19 I H ether20 BR_MAIN yes 1 0x80 10 10 none 20 I H ether21 BR_MAIN yes 1 0x80 10 10 none 21 I H ether22 BR_MAIN yes 1 0x80 10 10 none 22 I H ether23 BR_MAIN yes 1 0x80 10 10 none 23 I H ether24 BR_MAIN yes 1 0x80 10 10 none 24 I H sfp1 BR_MAIN yes 1 0x80 10 10 none
Флаг «Н» напротив интерфейсов указывает на поддержку аппаратной обработки трафика.
— Создаем интерфейс VLAN14_MGMT для управления и назначаем ему IP адрес.
/interface vlan add interface=BR_MAIN name=VLAN14_MGMT vlan-id=14 /ip address add address=192.168.0.1/24 interface=VLAN14_MGMT
— Создаем таблицу VLAN’ов. Указываем VLAN’ы и принадлежащие им порты.
/interface ethernet switch vlan add ports=ether1,ether3 vlan-id=7 add ports=ether1,ether4,switch1-cpu vlan-id=14 add ports=ether1,ether19,ether20 vlan-id=15 add ports=ether1,ether21,ether22 vlan-id=16 add ports=ether1,ether23,ether24 vlan-id=17
— Правила тегирования для ВХОДЯЩЕГО трафика.
/interface ethernet switch ingress-vlan-translation add ports=ether19,ether20 new-customer-vid=15 add ports=ether21,ether22 new-customer-vid=16 add ports=ether23,ether24 new-customer-vid=17
Настраиваем порты, соединяющие трафик VLAN7 и VLAN14. Происходит замена тега VID 7 в VID 14 на порту ether4 и на порту ether3 замена тега VID 14 на VID 7.
/interface ethernet switch ingress-vlan-translation add ports=ether3 new-customer-vid=07 add ports=ether4 new-customer-vid=14
— Снимаем все теги для ИСХОДЯЩЕГО трафика на нетегированных (ACCESS) портах.
/interface ethernet switch egress-vlan-translation add ports=ether19,ether20,ether21,ether22,ether23,ether24 new-customer-vid=0
— Запрещаем чипу коммутации передачу тегов VLAN отсутствующих в таблице (secure mode).
/interface ethernet switch set forward-unknown-vlan=no
Настройка маршрутизатора на площадке №1
Схему хождения трафика внутри маршрутизатора рисовать не стал, т. к. она идентична предыдущей схеме с разницей в принадлежности портов VLAN’ам.
— Задействуем чип коммутации.
Создаем бриджевый интерфейс BR_MAIN на который CPU будет принимать трафик.
/interface bridge add name=BR_MAIN protocol-mode=none
Добавляем интерфейсы в бридж.
/interface bridge port add bridge=BR_MAIN interface=ether1 add bridge=BR_MAIN interface=ether2 add bridge=BR_MAIN interface=ether3 add bridge=BR_MAIN interface=ether4
Порт Ether5 не будем включать в обработку чипом коммутации, оставим его под управление на время настройки, иначе в случае ошибки можем потерять управление устройством. После настройки VLAN’ов и проверки доступа к управлению, порт можно будет добавить в бридж BR_MAIN.
Данное правило применимо и к имеющимся коммутаторам, но поскольку я выполняю их настройку через консольный порт, то на коммутаторах порт под управление я выделять не стал.
— Создаем интерфейс VLAN14_MGMT для управления и назначаем ему IP адрес.
/interface vlan add interface=BR_MAIN name=VLAN14_MGMT vlan-id=14 /ip address add address=192.168.0.2/24 interface=VLAN14_MGMT
— Создаем таблицу VLAN’ов. Указываем VLAN’ы и принадлежащие им порты.
/interface ethernet switch vlan add ports=ether1,ether3 vlan-id=7 add ports=ether1,ether2,switch1-cpu vlan-id=14 add ports=ether1,ether2 vlan-id=15 add ports=ether1,ether2 vlan-id=16 add ports=ether1,ether2 vlan-id=17
— Настроим правила обработки тегов VLAN портами чипа коммутации маршрутизатора.
/interface ethernet switch port set ether1 vlan-header=add-if-missing vlan-mode=secure set ether2 vlan-header=add-if-missing vlan-mode=secure set ether3 vlan-header=always-strip vlan-mode=secure default-vlan-id=7 set switch1-cpu vlan-header=leave-as-is vlan-mode=secure
vlan-mode=secure — строгий режим обработки тегов VLAN при котором проверяется наличие VID в таблице VLAN’ов, а также проверяется соответствие VID своим портам;
vlan-header=always-strip — всегда удалять у исходящего кадра тэг VLAN;
default-vlan-id=7 — входящий кадр без тега VLAN будет протегирован данным номером VID, который должен присутствовать в таблице VLAN при secure режиме обработки тегов VLAN;
vlan-header=add-if-missing и vlan-header=leave-as-is — понятно из названия: добавлять теги и не модифицировать теги VLAN для исходящих кадров.
Настройка коммутатора на площадке №3
Настройку будем производить используя новый синтаксис, который на данный момент аппаратно поддерживается только на коммутаторах CRS3xx.
— Создаем бриджевый интерфейс BR_MAIN с выключенной обработкой тегов VLAN.
/interface bridge add name=BR_MAIN protocol-mode=none vlan-filtering=no
— Добавляем интерфейсы в созданный бридж с указанием VLAN ID ACCESS портов. Для транковых портов VLAN ID не указываем.
/interface bridge port add bridge=BR_MAIN interface=ether1 add bridge=BR_MAIN interface=ether2 add bridge=BR_MAIN interface=ether3 add bridge=BR_MAIN interface=ether4 add bridge=BR_MAIN interface=ether5 add bridge=BR_MAIN interface=ether6 add bridge=BR_MAIN interface=ether7 add bridge=BR_MAIN interface=ether8 add bridge=BR_MAIN interface=ether9 add bridge=BR_MAIN interface=ether10 add bridge=BR_MAIN interface=ether11 add bridge=BR_MAIN interface=ether12 add bridge=BR_MAIN interface=ether13 add bridge=BR_MAIN interface=ether14 add bridge=BR_MAIN interface=ether15 add bridge=BR_MAIN interface=ether16 add bridge=BR_MAIN interface=ether17 pvid=14 add bridge=BR_MAIN interface=ether18 pvid=14 add bridge=BR_MAIN interface=ether19 pvid=15 add bridge=BR_MAIN interface=ether20 pvid=15 add bridge=BR_MAIN interface=ether21 pvid=16 add bridge=BR_MAIN interface=ether22 pvid=16 add bridge=BR_MAIN interface=ether23 pvid=17 add bridge=BR_MAIN interface=ether24 pvid=17
Проверяем:
[admin@MikroTik] > /interface bridge port print Flags: X - disabled, I - inactive, D - dynamic, H - hw-offload # INTERFACE BRIDGE HW PVID PRIORITY PATH-COST INT-PATH-COST HORIZON 0 ether1 BR_MAIN yes 1 0x80 10 10 none 1 I ether2 BR_MAIN yes 1 0x80 10 10 none 2 I ether3 BR_MAIN yes 1 0x80 10 10 none 3 I ether4 BR_MAIN yes 1 0x80 10 10 none 4 I ether5 BR_MAIN yes 1 0x80 10 10 none 5 I ether6 BR_MAIN yes 1 0x80 10 10 none 6 I ether7 BR_MAIN yes 1 0x80 10 10 none 7 I ether8 BR_MAIN yes 1 0x80 10 10 none 8 I ether9 BR_MAIN yes 1 0x80 10 10 none 9 I ether10 BR_MAIN yes 1 0x80 10 10 none 10 I ether11 BR_MAIN yes 1 0x80 10 10 none 11 I ether12 BR_MAIN yes 1 0x80 10 10 none 12 I ether13 BR_MAIN yes 1 0x80 10 10 none 13 I ether14 BR_MAIN yes 1 0x80 10 10 none 14 I ether15 BR_MAIN yes 1 0x80 10 10 none 15 I ether16 BR_MAIN yes 1 0x80 10 10 none 16 ether17 BR_MAIN yes 14 0x80 10 10 none 17 I ether18 BR_MAIN yes 14 0x80 10 10 none 18 I ether19 BR_MAIN yes 15 0x80 10 10 none 19 I ether20 BR_MAIN yes 15 0x80 10 10 none 20 I ether21 BR_MAIN yes 16 0x80 10 10 none 21 I ether22 BR_MAIN yes 16 0x80 10 10 none 22 I ether23 BR_MAIN yes 17 0x80 10 10 none 23 I ether24 BR_MAIN yes 17 0x80 10 10 none
Обращаем внимание, что флаг «H» напротив интерфейсов не указан, значит трафик обрабатывается программно. Так происходит потому, что коммутаторы CRS1xx/2xx аппаратно не поддерживают Bridge VLAN Filtering . Данный функционал реализован пока что только на коммутаторах серии CRS3xx.
— Создаем таблицу VLAN’ов.
Указываем VLAN’ы и принадлежащие им порты с разделением по типу трафика: тегированный, не тегированный.
/interface bridge vlan add bridge=BR_MAIN tagged=ether1,BR_MAIN untagged=ether17,ether18 vlan-ids=14 add bridge=BR_MAIN tagged=ether1 untagged=ether19,ether20 vlan-ids=15 add bridge=BR_MAIN tagged=ether1 untagged=ether21,ether22 vlan-ids=16 add bridge=BR_MAIN tagged=ether1 untagged=ether23,ether24 vlan-ids=17
Обратите внимание на порты принадлежащие VLAN14: Мы в бридж BR_MAIN добавляем бриджевый интерфейс BR_MAIN в качестве тегированного порта, что бы этот бриджевый интерфейс BR_MAIN принимал теги VLAN14 трафика управления.
— Создаем интерфейс VLAN14_MGMT для управления и назначаем ему IP адрес.
/interface vlan add interface=BR_MAIN name=VLAN14_MGMT vlan-id=14 /ip address add address=192.168.0.3/24 interface=VLAN14_MGMT
— На созданном БРИДЖе включаем обработку тегов VLAN.
/interface bridge set 0 vlan-filtering=yes
Выводы
С выходом RouterOS версии 6.41 настройка VLAN для большинства оборудования MikroTik кроме коммутаторов серии CRS3xx кардинально не изменилась. Упростилась настройка master-port’а для интерфейсов, вместо нее теперь выступает настройка бриджевого интерфейса и добавление в него требуемых интерфейсов. Все настройки обработки тегов VLAN остались прежними.
Если кратко, то теперь когда смотрите на конфиг RouterOS версии ДО 6.41 настройки для master-port меняете на настройки бриджевого интерфейса и все. CPU теперь принимает трафик не на master-port, а на бридж.
Было:
/interface ethernet set master-port=sfp1 numbers=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
Стало:
/interface bridge add name=BR_MAIN protocol-mode=none /interface bridge port add bridge=BR_MAIN interface=ether1 .........<пропущен текст>........... add bridge=BR_MAIN interface=ether24 add bridge=BR_MAIN interface=sfp1
PS
В процессе настройки лабораторной работы я столкнулся с фичей/особенностью/багом.
После настройки правил обработки тегов VLAN чипом коммутации терялось управление по MAC адресу, хотя подключение по IP происходило успешно.Причем проблема выявилась только на оборудовании площадок №1 и №2. На оборудовании площадки №3 данной проблемы не наблюдал, возможно из-за того, что трафик обрабатывался программно.
Для решения проблемы доступа по MAC адресу я создал новый список интерфейсов, добавил в него интерфейсы управления и в настройках MAC-Server’а указал данный список.
Для оборудования площадки №1:
/interface list add name=IFLIST_MGMT /interface list member add list=IFLIST_MGMT interface=VLAN14_MGMT add list=IFLIST_MGMT interface=ether5 /tool mac-server set allowed-interface-list=IFLIST_MGMT /tool mac-server mac-winbox set allowed-interface-list=IFLIST_MGMT
Для оборудования площадки №2:
/interface list add name=IFLIST_MGMT /interface list member add list=IFLIST_MGMT interface=VLAN14_MGMT /tool mac-server set allowed-interface-list=IFLIST_MGMT /tool mac-server mac-winbox set allowed-interface-list=IFLIST_MGMT
После данных настроек доступ по MAC адресу восстановился. На всем оборудовании лабораторного стенда использовалась версия RouterOS 6.42.10 (long-term)
Финальные конфигурации оборудования:
Ссылки
— Настройка вышеописанной задачи на RouterOS pre-6.41
— Настройка транка на CRS для гибридного трафика