Найти в Дзене
knowledge base

Настройка "bridge vlan filtering", DNS, DHCP, NTP на маршрутизаторах mikrotik.

Данный материал подходит для 6-й версии routerOS (начиная с 6.41), и для 7-й версии (принципиальных отличий не нашёл). Этот материал продолжает статью по настройке BVF на коммутаторах mikrotik. В этом материале: В качестве подопытного роутера будем использовать hAPac2. Router on a stick - это вариант топологии, когда при множестве подсетей, коммутатор дистрибуции подключён к роутеру одной магистральной линией, в которой передаётся трафик всех подсетей, разделённый тегами. В роутерах mikrotik ставят switch чипы не поддерживающие технологию BVF, поэтому настраивая BVF на роутере, нужно понимать, что обработкой фреймов будет заниматься CPU. Напомню как выглядит тестовая схема и IP план Делаем базовые настройки в соответствии с этой статьёй. По схеме, наш шлюз подключается в коммутатору дистрибуции интерфейсами ether4 и ether5 объединённых в bonding интерфейс, создадим его. Режим работы bonding интерфейса должен быть одинаков на обоих устройствах, в нашем случае это 802.3ad, соответственно
Оглавление

Данный материал подходит для 6-й версии routerOS (начиная с 6.41), и для 7-й версии (принципиальных отличий не нашёл).

Этот материал продолжает статью по настройке BVF на коммутаторах mikrotik.

В этом материале:

  • настроим роутер в режиме router on a stick, с использованием коммутации построенной по технологии bridge vlan filtering;
  • настроим dhcp сервер на роутере для всех подсетей;
  • настроим роутер в качестве кэширующего dns сервера;
  • настроим роутер в качестве NTP сервера;
  • настроим IP телефон на работу с гибридным портом.
  • покажу как можно управлять сетевыми устройствами с оборудования mikrotik.

В качестве подопытного роутера будем использовать hAPac2.

Router on a stick - это вариант топологии, когда при множестве подсетей, коммутатор дистрибуции подключён к роутеру одной магистральной линией, в которой передаётся трафик всех подсетей, разделённый тегами.

В роутерах mikrotik ставят switch чипы не поддерживающие технологию BVF, поэтому настраивая BVF на роутере, нужно понимать, что обработкой фреймов будет заниматься CPU.

Напомню как выглядит тестовая схема и IP план

Схема.
Схема.
Список подсетей и vlan-ов.
Список подсетей и vlan-ов.
Режимы работы портов на оборудовании.
Режимы работы портов на оборудовании.
IP план для управляющей подсети.
IP план для управляющей подсети.

Делаем базовые настройки в соответствии с этой статьёй.

По схеме, наш шлюз подключается в коммутатору дистрибуции интерфейсами ether4 и ether5 объединённых в bonding интерфейс, создадим его. Режим работы bonding интерфейса должен быть одинаков на обоих устройствах, в нашем случае это 802.3ad, соответственно и параметр "Transmit Hash Policy" выбираем "layer 2 and 3" (как 100% совместимый с 802.3ad).

-5

Не забываем про комментарии:

Список интерфейсов с комментариями.
Список интерфейсов с комментариями.

Создаём бридж, и добавляем в него единственный интерфейс bounding1. Т.к. через данный интерфейс будет идти только тегированный трафик, настраиваем его на вкладке VLAN как транковый:

-7

В меню bridge, на вкладке VLANs добавляем наши vlan. Нам требуется, чтобы на роутере для каждого vlan был создан отдельный vlan-интерфейс, потому для каждого созданного vlan, мы должны указать, что тегированный трафик данного vlan будет ходить в том числе и через бридж интерфейс (этот механизм объясняется в статье про настройка коммутатора).

Настройки всех vlan на роутере будут одинаковы, т.к. у нас только один магистральный интерфейс, по которому будет ходить тегированный трафик для всех vlan.

-8
Настроенные vlan на роутере.
Настроенные vlan на роутере.

Включаем механизм "bridge vlan filtering" на роутере, заходим в интерфейс bridge1, на вкладку VLAN, ставим галку в чекбоксе "VLAN Filtering", включаем фильтрацию, выбираем режим "Frame Types admit only VLAN tagged"

-10

Создадим vlan-интерфейсы для каждого vlan. Заходим в меню работы с интерфейсами на вкладку VLAN и нажимаем "+", в поле Name задаём имя интерфейса (я обычно указываю номер тега), в поле "VLAN ID" указываем номер vlan (тега), в поле Interface выбираем наш бридж (bridge1)

Создание интерфейса.
Создание интерфейса.
Список всех созданных интерфейсов.
Список всех созданных интерфейсов.

На каждом vlan интерфейсе зададим IP адрес в соответствии с таблицей подсетей (в каждой сети наш роутер будет иметь адрес .1).

Переходим в меню "IP=>Adresses"

-13

В появившемся окне нажимаем "+", в поле Address указываем IP адрес, в поле Interface выбираем интерфейс на который назначается данный IP адрес (адрес должен указываться с маской с использованием префикса /)

Меню назначения адреса.
Меню назначения адреса.
Список назначенных адресов.
Список назначенных адресов.

На этом настройка коммутации через механизм "bridge vlan filtering" на маршрутизаторе закончена, далее займемся настройкой различных доп сервисов, межсетевого экрана и посмотрим варианты администрирования сетевых устройств через маршрутизатор.

Ограничения MNDP:

По аналогии с коммутатором добавляем интерфейс vlan110 в список интерфейсов MAC-Services, для которого разрешён MNDP протокол (как создать группу интерфейсов MAC-Services и включить для неё протокол MNDP, рассказываю вот тут, в пятом пункте).

Заходим в меню Interfaces и на вкладке "Interface List" нажимаем кнопку "+", в появившемся меню в поле List выбираем нашу группу (я её обычно называю MAC-Services, но вы можете обозвать её по своему усмотрению), в поле Interface выбираем интерфейс vlan110.

-16

Теперь в меню "IP=>Neighbors"

-17

Теперь мы будем видеть соседей только в рамках управляющей подсети

-18

Управление соседним оборудованием через интерфейс маршрутизатора:

Если в списках соседей в меню "IP=>Neighbors" есть оборудование mikrotik, можно зайти в консоль управления этого оборудования, для этого, в этом же меню надо кликнуть правой кнопкой мыши на записи устройства, и в выпадающем списке выбрать пункт "MAC Telnet"

-19

Это даст возможность управлять соседним устройством по telnet подключаясь по mac адресу, т.е. для этого не требуется IP адрес на удалённом устройстве, но устройства с которого подключаемся и то, куда мы подключаемся, должны быть в одном броадкаст домене.

Появится окно терминала, подписанное MAC Telnet, и приглашение ввести реквизиты, после ввода реквизитов можно работать на другом устройстве через терминал. Повторю, прикол в том, что подключаемся по MAC адресу.

-20

В меню "Tools=>telnet", можно управлять устройствами, поддерживающими управление через telnet или ssh.

-21

Выбираем протокол, указываем адрес удалённого устройства, и для подключения нажимаем кнопку telnet

-22

В меню "Tools=>IP Scan", можно просканировать ip сеть на любом интерфейсе

-23

В поле interface выбираем интерфейс на котором будем проводить сканирование (для примера посмотрим что у нас есть в сети управления, поэтому выберем интерфейс vlan110), в поле "Address Range" указываем диапазон адресов, в рамках которого будет вестись сканирование, и нажимаем кнопку Start.

Ниже, в табличном виде появится список активных адресов, найденных маршрутизатором.

Сканирование указанного диапазона показало наш адрес и адрес коммутатора.
Сканирование указанного диапазона показало наш адрес и адрес коммутатора.

Настройка DHCP сервера:

Настроим dhcp сервер для каждой подсети. DHCP сервер можно настроить вручную и с помощью мастера, я покажу оба варианта, но предпочтительная настройка через мастера (исключаем человеческий фактор).

Вариант настройки вручную (сеть управления):

  • зададим пул адресов, которые будут выдаваться клиентам dhcp сервером (я всегда оставляю адреса в начале списка и в конце, если потребуется в той или иной подсети организовать сервер со статическим адресом, обычно настраиваю раздачу адресов в диапазоне с 51 по 240). Переходим в меню "IP=>Pool"
-25

В открывшемся меню нажимаем "+", в поле Name задаём имя пула, в поле Addresses указываем наш диапазон адресов

-26
  • зададим параметры сети, переходим в меню "IP=>DHCP Server"
-27

Переходим на вкладку Networks, и нажимаем "+", в появившемся окне в поле Adresses указываем нашу подсеть с указанием маски через префикс /, в поле Gateway указываем шлюз для подсети, в поле DNS Servers укажем DNS сервера (мы тут укажем наш роутер, т.к. позже настроим его в качестве кэширующего DNS сервера).

-28
  • запустим службу DHCP на управляющем интерфейсе, в том же меню "IP=>DHCP Server", переходим на вкладку DHCP и нажимаем "+", на вкладке Name укажем имя сервера dhcp, в поле interface укажем интерфейс, на котором будет работать служба dhcp, в поле Lease Time укажем время аренды адреса (задаётся оно в формате часы:минуты:секунды, я ставлю обычно четыре дня, это 96 часов, такая запись будет выглядеть так - 96:00:00), в поле "Address Pool" выбираем созданный пул с диапазоном адресов.
-29

Такая настройка выглядит достаточно непросто, и легко сделать ошибку, которую можно долго траблшутить, но есть более простой способ настройки dhcp сервера.

Способ настройки через мастера:

В меню "IP=>DHCP Server", на вкладке DHCP нажимаем кнопку "DHCP Setup" (один мой преподаватель называет эту кнопку "сделать хорошо").

-30
  • Первым шагом задаём интерфейс, для которого настраиваем dhcp server, и нажимаем Next
-31
  • Вторым шагом нас спросят, какая подсеть будет анонсироваться на выбранном интерфейсе, система сама предложит подсеть, в которую подпадает адрес назначенный интерфейсу, соглашаемся с выбором нажав на кнопку Next
-32
  • На третьем шаге спросят какой адрес шлюза раздавать клиентам, система сама предложит адрес на настраиваемом интерфейсе, соглашаемся
-33
  • На четвёртом шаге запросят выбрать диапазон раздаваемых адресов в выбранной подсети, по умолчанию диапазон будет с 2 по 254 адрес, тут я обычно меняю диапазон на 51-240
-34
  • На пятом шаге нас спросят, какие раздавать адреса DNS
-35
  • И финально запросят время аренды адреса
-36

Данная настрой в разы проще, чем ручная, шансы ошибиться минимальны, система сама прописывает и пулы, и сетевые настройки, и включает сервер, имена для всех компонентов выбирает адекватные (потом можно и комментариями все дополнить).

Настроим dhcp сервер для оставшихся интерфейсов (можете любым способом настраивать).

У нас должна получиться такая картина

Список dhcp серверов.
Список dhcp серверов.
Список пулов для dhcp серверов.
Список пулов для dhcp серверов.

Пришло время прописать базовые правила фильтра (правила описаны в этой статье).

Настройка DNS:

Включим кэширующий DNS на роутере

Зайдем в "IP=>DNS"

-39

Ставим галку в чекбоксе "Allow Remote Requests", на этом настройка кэширующего днс заканчивается. В этом же меню, в поле Servers можно указать DNS сервера, для самого роутера, в поле "Dynamic Servers" будут указаны DNS сервера, которые сервер получил от DHCP сервера, если на каком то интерфейсе он настроен как DHCP клиент.

-40

Мы настроили службу DNS роутера на приём запросов от клиентов (UDP порт 53), но межсетевой экран у нас настроен как нормально закрытый (последние правила в цепочках input и forward блокируют весь трафик), поэтому нам надо в фильтре разрешить доступ к роутеру на 53 порт UDP для нужных подсетей (в нашем случае это все connected сети). Соберем все connected сети в единый список, перейдём в меню "IP=>Firewall" и на вкладке "Address Lists" создадим новый список с названием "Connected-networks". Нажимаем "+"

-41

В появившемся окне, в поле Name укажем название списка ("Connected-networks"), в поле Address укажем адрес подсети

-42

Аналогично добавим все наши подсети в созданный список, можно после создания первой записи, нажать кнопку Copy, и менять в поле Address адрес сети

Добавленные подсети в список "Connected-networks".
Добавленные подсети в список "Connected-networks".

В RouterOS есть возможность быстро отфильтровать адреса по определённому списку, на вкладке "Address Lists", справа вверху будет выпадающий список, по умолчанию стоит фильтр all, т.е. все списки, но можно выбрать какой то конкретный, и отображаться будет именно он, это полезно, когда у вас большое количество списков, в которых содержится множество адресов и подсетей.

-44

Создадим разрешающее правило для 53 порта UDP, на вкладке "Filter Rules", добавим правило через кнопку "+"

В окне создания правила, на вкладке General, в поле chain выберем input (т.к. у нас клиенты обращаются непосредственно к роутеру), в поле Protocol выберем udp, в поле Dst. port впишем номер 53

-45

На вкладке Advanced, в поле "Src. Address List", выберем наш созданный список с connected сетями (в последних прошивках шестой и седьмой версий RouterOS, поле "Src. Address List" вынесено на вкладку General).

-46

На вкладке Action, в поле Action выбираем accept, и нажимаем ОК (не забываем комментировать правила).

-47

Созданное правило появится последним, и т.к. у нас правила с действиями accept и drop терминирующие (это когда трафик подпадающий под условия правила, перестаёт обрабатываться правилами, находящимися ниже), то до нашего созданного правила трафик не дойдёт, обработка закончится на действии drop all.

-48

Чтобы наше правило отработало, его надо переместить, выше правил drop all, зажимаем правило левой кнопкой мыши, и перемещаем выше названных правил, итоговая настройка выглядит так

-49

Теперь наш роутер работает как кэширующий DNS сервер

Настройка NTP сервера и клиента:

Для включения режима работы оборудования mikrotik в качестве NTP сервера, потребуется установить дополнительный пакет NTP. В этой статье, в пункте 2, я кратко разбираю тему установки и обновления пакетов. Мы должны скачать архив "extra package" для нужного нам процессора (у нашего роутера hAPac2 процессор arm). Посмотреть тип процессора можно подключившись через winbox к устройству, и в верхнем левом углу будет видна соответствующая информация

-50

В скаченном архиве нам нужен пакет ntp-6.49.13-arm.npk (версия должна совпадать с версией RouterOS в системе, у меня это long-term 6.49.13). Перекидываем его в winbox в систему через drag&drop, и перезагружаем роутер. После перезагрузку в меню "System=>Packages" появится новый пакет NTP

-51

После установки пакета, кнопка SNTP (в меню IP) пропадёт, а в меню System появятся 2 кнопки "NTP Client" и "NTP Server"

-52

В "NTP Client" ставим галку в чекбоксе Enabled, оставляем режим по умолчанию unicast, и указываем primary и secondary NTP сервера (можно задать DNS имена, разрешит имена в адреса, как ни странно winbox). Я обычно ставлю официальные российские NTP сервера

0.ru.pool.ntp.org

1.ru.pool.ntp.org

-53

Включаем NTP сервер, переходим в меню "System=>NTP Server", в появившемся окне ставим галки на всех чекбоксах и нажимаем ОК

-54

Мы настроили саму службу NTP, но в фильтре роутера у нас трафик NTP не разрешён для connected сетей, сервис NTP использует 123 порт протокола UDP, отдельное правило лучше не создавать, а модифицировать правило для службы DNS, в нём достаточно добавить через запятую номер порта

-55
-56

Донастройка правил межсетевого экрана:

Нам осталось донастроить правила фильтра, логика работы фильтра будет такая:

  • из обеих пользовательских подсетей (проводная, беспроводная) доступ д.б. разрешён в серверную;
  • разрешить доступ из сети управления во все локальные сети;
  • разрешить доступ из проводной пользовательской подсети в беспроводную;
  • разрешить доступ из беспроводной пользовательской подсети в проводную;

Все правила межсетевого взаимодействия будут создаваться в цепочке forward, суть их такова ,что на вкладке General в поле "Src. Address" указываем откуда разрешаем трафик, а в поле "Dst. Address" указываем куда трафик разрешён, можно использовать списки адресов.

Создадим список адресов "Users-networks@, куда добавим беспроводную и проводную пользовательские подсети

-57

Добавим соответствующие правила, и переместим их выше. Я тут не расписываю их, покажу уже готовые списком с комментариями, и по списку уже видно, какие колонки используются и что в них, если надо расписать создание этих правил, напишите в комментариях, и я дополню статью.

Финальный набор правил.
Финальный набор правил.

Мы настроили роутер в режиме "router on a stick", с коммутацией через механизм "bridge vlan filtering", и несколько необходимых в работе сервисов. Исходя из нашей схемы режимов работы портов

-59

Мы можем проверить как это работает подключившись к портам коммутатора, если подключимся к порту с 1 по 12, получим адрес в подсети 192.168.111.0/24, если подключимся к портам с 13 по 20, получим адрес из подсети 192.168.114.0/24.

Давайте подключим к гибридному порту IP телефон (на порт ether1 коммутатора LABS-CRS328-SW1), у меня в наличии телефон Linksys SPA942, он имеет 2 ethernet порта и может работать как коммутатор, порт WAN понимает тегированный трафик (но может работать и с нетегированным), на порт PC пустим нетегированные фреймы.

-60

На телефоне в настройках сети (пункт 9 меню), включим поддержку vlan на wan интерфейсе (пункт 16 подменю), и зададим номер vlan (пункт 17 подменю)

-61

Для применения настроек телефон перезагрузится, и в подменю 2 меню network отобразится назначенный IP адрес

-62

Можно для теста подключить ПК к порту PC телефона, ПК получит адрес из подсети 192.168.111.0/24

На роутере, в меню "IP=>DHCP Server", на вкладке Leases, можно посмотреть какие адреса выданы в аренду, тут увидим информации по адресу нашего телефона

-63

Вся конфигурация маршрутизатора будет выглядеть вот так:

/interface bridge

add frame-types=admit-only-vlan-tagged ingress-filtering=yes name=bridge1 vlan-filtering=yes

/interface ethernet

set [ find default-name=ether4 ] comment="to LABS-CRS328-SW1 (to ether23)"

set [ find default-name=ether5 ] comment="to LABS-CRS328-SW1 (to ether24)"

/interface wireless

set [ find default-name=wlan1 ] ssid=MikroTik

set [ find default-name=wlan2 ] ssid=MikroTik

/interface vlan

add interface=bridge1 name=vlan110 vlan-id=110

add interface=bridge1 name=vlan111 vlan-id=111

add interface=bridge1 name=vlan112 vlan-id=112

add interface=bridge1 name=vlan113 vlan-id=113

add interface=bridge1 name=vlan114 vlan-id=114

add interface=bridge1 name=vlan115 vlan-id=115

/interface bonding

add comment="to LABS-CRS328-SW1 (to ether23,24)" mode=802.3ad name=bonding1 slaves=ether4,ether5 transmit-hash-policy=layer-2-and-3

/interface list

add name=MAC-Services

/interface wireless security-profiles

set [ find default=yes ] supplicant-identity=MikroTik

/ip hotspot profile

set [ find default=yes ] html-directory=hotspot

/ip pool

add name=dhcp_pool0 ranges=192.168.110.51-192.168.110.240

add name=dhcp_pool1 ranges=192.168.111.51-192.168.111.240

add name=dhcp_pool2 ranges=192.168.112.51-192.168.112.240

add name=dhcp_pool3 ranges=192.168.113.51-192.168.113.240

add name=dhcp_pool4 ranges=192.168.114.51-192.168.114.240

add name=dhcp_pool5 ranges=192.168.115.51-192.168.115.240

/ip dhcp-server

add address-pool=dhcp_pool0 disabled=no interface=vlan110 lease-time=4d name=dhcp1

add address-pool=dhcp_pool1 disabled=no interface=vlan111 lease-time=4d name=dhcp2

add address-pool=dhcp_pool2 disabled=no interface=vlan112 lease-time=4d name=dhcp3

add address-pool=dhcp_pool3 disabled=no interface=vlan113 lease-time=4d name=dhcp4

add address-pool=dhcp_pool4 disabled=no interface=vlan114 lease-time=4d name=dhcp5

add address-pool=dhcp_pool5 disabled=no interface=vlan115 lease-time=4d name=dhcp6

/interface bridge port

add bridge=bridge1 frame-types=admit-only-vlan-tagged ingress-filtering=yes interface=bonding1

/ip neighbor discovery-settings

set discover-interface-list=MAC-Services

/interface bridge vlan

add bridge=bridge1 tagged=bonding1,bridge1 vlan-ids=110

add bridge=bridge1 tagged=bonding1,bridge1 vlan-ids=111

add bridge=bridge1 tagged=bonding1,bridge1 vlan-ids=112

add bridge=bridge1 tagged=bonding1,bridge1 vlan-ids=113

add bridge=bridge1 tagged=bonding1,bridge1 vlan-ids=114

add bridge=bridge1 tagged=bonding1,bridge1 vlan-ids=115

/interface list member

add interface=ether2 list=MAC-Services

add interface=vlan110 list=MAC-Services

/ip address

add address=192.168.110.1/24 interface=vlan110 network=192.168.110.0

add address=192.168.111.1/24 interface=vlan111 network=192.168.111.0

add address=192.168.112.1/24 interface=vlan112 network=192.168.112.0

add address=192.168.113.1/24 interface=vlan113 network=192.168.113.0

add address=192.168.114.1/24 interface=vlan114 network=192.168.114.0

add address=192.168.115.1/24 interface=vlan115 network=192.168.115.0

/ip dhcp-server network

add address=192.168.110.0/24 dns-server=192.168.110.1 gateway=192.168.110.1

add address=192.168.111.0/24 dns-server=192.168.111.1 gateway=192.168.111.1

add address=192.168.112.0/24 dns-server=192.168.112.1 gateway=192.168.112.1

add address=192.168.113.0/24 dns-server=192.168.113.1 gateway=192.168.113.1

add address=192.168.114.0/24 dns-server=192.168.114.1 gateway=192.168.114.1

add address=192.168.115.0/24 dns-server=192.168.115.1 gateway=192.168.115.1

/ip dns

set allow-remote-requests=yes

/ip firewall address-list

add address=192.168.110.0/24 list=admins

add address=192.168.110.0/24 list=Connected-networks

add address=192.168.111.0/24 list=Connected-networks

add address=192.168.112.0/24 list=Connected-networks

add address=192.168.113.0/24 list=Connected-networks

add address=192.168.114.0/24 list=Connected-networks

add address=192.168.115.0/24 list=Connected-networks

add address=192.168.111.0/24 list=Users-network

add address=192.168.112.0/24 list=Users-network

/ip firewall filter

add action=accept chain=forward comment=Statefull connection-state=established,related

add action=accept chain=input connection-state=established,related

add action=drop chain=forward comment="Drop invalid" connection-state=invalid

add action=drop chain=input connection-state=invalid

add action=accept chain=input comment="Internal UDP services (DNS, NTP)" dst-port=53,123 protocol=udp src-address-list=Connected-networks

add action=accept chain=forward comment="Users networks => Servers network" dst-address=192.168.114.0/24 src-address-list=Users-network

add action=accept chain=forward comment="MGMNT network => Connected networks" dst-address-list=Connected-networks src-address=192.168.110.0/24

add action=accept chain=forward comment="wired\\wireless network => wireless\\wired network" dst-address-list=Users-network src-address-list=Users-network

add action=accept chain=input comment=Admins src-address-list=admins

add action=drop chain=forward comment="Drop all"

add action=drop chain=input

/ip service

set telnet disabled=yes

set ftp disabled=yes

set www disabled=yes

set ssh port=42022

set api disabled=yes

set winbox port=48291

set api-ssl disabled=yes

/system identity

set name=LABS-hAPac2-GW1

/system ntp client

set enabled=yes primary-ntp=188.246.226.170 secondary-ntp=178.217.98.201

/system ntp server

set broadcast=yes enabled=yes multicast=yes

/tool mac-server

set allowed-interface-list=MAC-Services

/tool mac-server mac-winbox

set allowed-interface-list=MAC-Services

/tool mac-server ping

set enabled=no

Данная статья на мой взгляд вышла достаточно перегруженной, поэтому тут я не показал, как для этой схемы настроить доступ к сети интернет для connected сетей (srcNAT), это я вынесу в отдельную статью, так же есть планы в отдельной статье поделиться опытом настройки межсетевого экрана.

Обязательно подписывайтесь на канал, у меня материала по разным технологиям на несколько лет вперёд. Если по тексту статьи возникли вопросы, добро пожаловать в комментарии.