Данный материал подходит для 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 план
Делаем базовые настройки в соответствии с этой статьёй.
По схеме, наш шлюз подключается в коммутатору дистрибуции интерфейсами ether4 и ether5 объединённых в bonding интерфейс, создадим его. Режим работы bonding интерфейса должен быть одинаков на обоих устройствах, в нашем случае это 802.3ad, соответственно и параметр "Transmit Hash Policy" выбираем "layer 2 and 3" (как 100% совместимый с 802.3ad).
Не забываем про комментарии:
Создаём бридж, и добавляем в него единственный интерфейс bounding1. Т.к. через данный интерфейс будет идти только тегированный трафик, настраиваем его на вкладке VLAN как транковый:
В меню bridge, на вкладке VLANs добавляем наши vlan. Нам требуется, чтобы на роутере для каждого vlan был создан отдельный vlan-интерфейс, потому для каждого созданного vlan, мы должны указать, что тегированный трафик данного vlan будет ходить в том числе и через бридж интерфейс (этот механизм объясняется в статье про настройка коммутатора).
Настройки всех vlan на роутере будут одинаковы, т.к. у нас только один магистральный интерфейс, по которому будет ходить тегированный трафик для всех vlan.
Включаем механизм "bridge vlan filtering" на роутере, заходим в интерфейс bridge1, на вкладку VLAN, ставим галку в чекбоксе "VLAN Filtering", включаем фильтрацию, выбираем режим "Frame Types admit only VLAN tagged"
Создадим vlan-интерфейсы для каждого vlan. Заходим в меню работы с интерфейсами на вкладку VLAN и нажимаем "+", в поле Name задаём имя интерфейса (я обычно указываю номер тега), в поле "VLAN ID" указываем номер vlan (тега), в поле Interface выбираем наш бридж (bridge1)
На каждом vlan интерфейсе зададим IP адрес в соответствии с таблицей подсетей (в каждой сети наш роутер будет иметь адрес .1).
Переходим в меню "IP=>Adresses"
В появившемся окне нажимаем "+", в поле Address указываем IP адрес, в поле Interface выбираем интерфейс на который назначается данный IP адрес (адрес должен указываться с маской с использованием префикса /)
На этом настройка коммутации через механизм "bridge vlan filtering" на маршрутизаторе закончена, далее займемся настройкой различных доп сервисов, межсетевого экрана и посмотрим варианты администрирования сетевых устройств через маршрутизатор.
Ограничения MNDP:
По аналогии с коммутатором добавляем интерфейс vlan110 в список интерфейсов MAC-Services, для которого разрешён MNDP протокол (как создать группу интерфейсов MAC-Services и включить для неё протокол MNDP, рассказываю вот тут, в пятом пункте).
Заходим в меню Interfaces и на вкладке "Interface List" нажимаем кнопку "+", в появившемся меню в поле List выбираем нашу группу (я её обычно называю MAC-Services, но вы можете обозвать её по своему усмотрению), в поле Interface выбираем интерфейс vlan110.
Теперь в меню "IP=>Neighbors"
Теперь мы будем видеть соседей только в рамках управляющей подсети
Управление соседним оборудованием через интерфейс маршрутизатора:
Если в списках соседей в меню "IP=>Neighbors" есть оборудование mikrotik, можно зайти в консоль управления этого оборудования, для этого, в этом же меню надо кликнуть правой кнопкой мыши на записи устройства, и в выпадающем списке выбрать пункт "MAC Telnet"
Это даст возможность управлять соседним устройством по telnet подключаясь по mac адресу, т.е. для этого не требуется IP адрес на удалённом устройстве, но устройства с которого подключаемся и то, куда мы подключаемся, должны быть в одном броадкаст домене.
Появится окно терминала, подписанное MAC Telnet, и приглашение ввести реквизиты, после ввода реквизитов можно работать на другом устройстве через терминал. Повторю, прикол в том, что подключаемся по MAC адресу.
В меню "Tools=>telnet", можно управлять устройствами, поддерживающими управление через telnet или ssh.
Выбираем протокол, указываем адрес удалённого устройства, и для подключения нажимаем кнопку telnet
В меню "Tools=>IP Scan", можно просканировать ip сеть на любом интерфейсе
В поле interface выбираем интерфейс на котором будем проводить сканирование (для примера посмотрим что у нас есть в сети управления, поэтому выберем интерфейс vlan110), в поле "Address Range" указываем диапазон адресов, в рамках которого будет вестись сканирование, и нажимаем кнопку Start.
Ниже, в табличном виде появится список активных адресов, найденных маршрутизатором.
Настройка DHCP сервера:
Настроим dhcp сервер для каждой подсети. DHCP сервер можно настроить вручную и с помощью мастера, я покажу оба варианта, но предпочтительная настройка через мастера (исключаем человеческий фактор).
Вариант настройки вручную (сеть управления):
- зададим пул адресов, которые будут выдаваться клиентам dhcp сервером (я всегда оставляю адреса в начале списка и в конце, если потребуется в той или иной подсети организовать сервер со статическим адресом, обычно настраиваю раздачу адресов в диапазоне с 51 по 240). Переходим в меню "IP=>Pool"
В открывшемся меню нажимаем "+", в поле Name задаём имя пула, в поле Addresses указываем наш диапазон адресов
- зададим параметры сети, переходим в меню "IP=>DHCP Server"
Переходим на вкладку Networks, и нажимаем "+", в появившемся окне в поле Adresses указываем нашу подсеть с указанием маски через префикс /, в поле Gateway указываем шлюз для подсети, в поле DNS Servers укажем DNS сервера (мы тут укажем наш роутер, т.к. позже настроим его в качестве кэширующего DNS сервера).
- запустим службу DHCP на управляющем интерфейсе, в том же меню "IP=>DHCP Server", переходим на вкладку DHCP и нажимаем "+", на вкладке Name укажем имя сервера dhcp, в поле interface укажем интерфейс, на котором будет работать служба dhcp, в поле Lease Time укажем время аренды адреса (задаётся оно в формате часы:минуты:секунды, я ставлю обычно четыре дня, это 96 часов, такая запись будет выглядеть так - 96:00:00), в поле "Address Pool" выбираем созданный пул с диапазоном адресов.
Такая настройка выглядит достаточно непросто, и легко сделать ошибку, которую можно долго траблшутить, но есть более простой способ настройки dhcp сервера.
Способ настройки через мастера:
В меню "IP=>DHCP Server", на вкладке DHCP нажимаем кнопку "DHCP Setup" (один мой преподаватель называет эту кнопку "сделать хорошо").
- Первым шагом задаём интерфейс, для которого настраиваем dhcp server, и нажимаем Next
- Вторым шагом нас спросят, какая подсеть будет анонсироваться на выбранном интерфейсе, система сама предложит подсеть, в которую подпадает адрес назначенный интерфейсу, соглашаемся с выбором нажав на кнопку Next
- На третьем шаге спросят какой адрес шлюза раздавать клиентам, система сама предложит адрес на настраиваемом интерфейсе, соглашаемся
- На четвёртом шаге запросят выбрать диапазон раздаваемых адресов в выбранной подсети, по умолчанию диапазон будет с 2 по 254 адрес, тут я обычно меняю диапазон на 51-240
- На пятом шаге нас спросят, какие раздавать адреса DNS
- И финально запросят время аренды адреса
Данная настрой в разы проще, чем ручная, шансы ошибиться минимальны, система сама прописывает и пулы, и сетевые настройки, и включает сервер, имена для всех компонентов выбирает адекватные (потом можно и комментариями все дополнить).
Настроим dhcp сервер для оставшихся интерфейсов (можете любым способом настраивать).
У нас должна получиться такая картина
Пришло время прописать базовые правила фильтра (правила описаны в этой статье).
Настройка DNS:
Включим кэширующий DNS на роутере
Зайдем в "IP=>DNS"
Ставим галку в чекбоксе "Allow Remote Requests", на этом настройка кэширующего днс заканчивается. В этом же меню, в поле Servers можно указать DNS сервера, для самого роутера, в поле "Dynamic Servers" будут указаны DNS сервера, которые сервер получил от DHCP сервера, если на каком то интерфейсе он настроен как DHCP клиент.
Мы настроили службу DNS роутера на приём запросов от клиентов (UDP порт 53), но межсетевой экран у нас настроен как нормально закрытый (последние правила в цепочках input и forward блокируют весь трафик), поэтому нам надо в фильтре разрешить доступ к роутеру на 53 порт UDP для нужных подсетей (в нашем случае это все connected сети). Соберем все connected сети в единый список, перейдём в меню "IP=>Firewall" и на вкладке "Address Lists" создадим новый список с названием "Connected-networks". Нажимаем "+"
В появившемся окне, в поле Name укажем название списка ("Connected-networks"), в поле Address укажем адрес подсети
Аналогично добавим все наши подсети в созданный список, можно после создания первой записи, нажать кнопку Copy, и менять в поле Address адрес сети
В RouterOS есть возможность быстро отфильтровать адреса по определённому списку, на вкладке "Address Lists", справа вверху будет выпадающий список, по умолчанию стоит фильтр all, т.е. все списки, но можно выбрать какой то конкретный, и отображаться будет именно он, это полезно, когда у вас большое количество списков, в которых содержится множество адресов и подсетей.
Создадим разрешающее правило для 53 порта UDP, на вкладке "Filter Rules", добавим правило через кнопку "+"
В окне создания правила, на вкладке General, в поле chain выберем input (т.к. у нас клиенты обращаются непосредственно к роутеру), в поле Protocol выберем udp, в поле Dst. port впишем номер 53
На вкладке Advanced, в поле "Src. Address List", выберем наш созданный список с connected сетями (в последних прошивках шестой и седьмой версий RouterOS, поле "Src. Address List" вынесено на вкладку General).
На вкладке Action, в поле Action выбираем accept, и нажимаем ОК (не забываем комментировать правила).
Созданное правило появится последним, и т.к. у нас правила с действиями accept и drop терминирующие (это когда трафик подпадающий под условия правила, перестаёт обрабатываться правилами, находящимися ниже), то до нашего созданного правила трафик не дойдёт, обработка закончится на действии drop all.
Чтобы наше правило отработало, его надо переместить, выше правил drop all, зажимаем правило левой кнопкой мыши, и перемещаем выше названных правил, итоговая настройка выглядит так
Теперь наш роутер работает как кэширующий DNS сервер
Настройка NTP сервера и клиента:
Для включения режима работы оборудования mikrotik в качестве NTP сервера, потребуется установить дополнительный пакет NTP. В этой статье, в пункте 2, я кратко разбираю тему установки и обновления пакетов. Мы должны скачать архив "extra package" для нужного нам процессора (у нашего роутера hAPac2 процессор arm). Посмотреть тип процессора можно подключившись через winbox к устройству, и в верхнем левом углу будет видна соответствующая информация
В скаченном архиве нам нужен пакет ntp-6.49.13-arm.npk (версия должна совпадать с версией RouterOS в системе, у меня это long-term 6.49.13). Перекидываем его в winbox в систему через drag&drop, и перезагружаем роутер. После перезагрузку в меню "System=>Packages" появится новый пакет NTP
После установки пакета, кнопка SNTP (в меню IP) пропадёт, а в меню System появятся 2 кнопки "NTP Client" и "NTP Server"
В "NTP Client" ставим галку в чекбоксе Enabled, оставляем режим по умолчанию unicast, и указываем primary и secondary NTP сервера (можно задать DNS имена, разрешит имена в адреса, как ни странно winbox). Я обычно ставлю официальные российские NTP сервера
0.ru.pool.ntp.org
1.ru.pool.ntp.org
Включаем NTP сервер, переходим в меню "System=>NTP Server", в появившемся окне ставим галки на всех чекбоксах и нажимаем ОК
Мы настроили саму службу NTP, но в фильтре роутера у нас трафик NTP не разрешён для connected сетей, сервис NTP использует 123 порт протокола UDP, отдельное правило лучше не создавать, а модифицировать правило для службы DNS, в нём достаточно добавить через запятую номер порта
Донастройка правил межсетевого экрана:
Нам осталось донастроить правила фильтра, логика работы фильтра будет такая:
- из обеих пользовательских подсетей (проводная, беспроводная) доступ д.б. разрешён в серверную;
- разрешить доступ из сети управления во все локальные сети;
- разрешить доступ из проводной пользовательской подсети в беспроводную;
- разрешить доступ из беспроводной пользовательской подсети в проводную;
Все правила межсетевого взаимодействия будут создаваться в цепочке forward, суть их такова ,что на вкладке General в поле "Src. Address" указываем откуда разрешаем трафик, а в поле "Dst. Address" указываем куда трафик разрешён, можно использовать списки адресов.
Создадим список адресов "Users-networks@, куда добавим беспроводную и проводную пользовательские подсети
Добавим соответствующие правила, и переместим их выше. Я тут не расписываю их, покажу уже готовые списком с комментариями, и по списку уже видно, какие колонки используются и что в них, если надо расписать создание этих правил, напишите в комментариях, и я дополню статью.
Мы настроили роутер в режиме "router on a stick", с коммутацией через механизм "bridge vlan filtering", и несколько необходимых в работе сервисов. Исходя из нашей схемы режимов работы портов
Мы можем проверить как это работает подключившись к портам коммутатора, если подключимся к порту с 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 пустим нетегированные фреймы.
На телефоне в настройках сети (пункт 9 меню), включим поддержку vlan на wan интерфейсе (пункт 16 подменю), и зададим номер vlan (пункт 17 подменю)
Для применения настроек телефон перезагрузится, и в подменю 2 меню network отобразится назначенный IP адрес
Можно для теста подключить ПК к порту PC телефона, ПК получит адрес из подсети 192.168.111.0/24
На роутере, в меню "IP=>DHCP Server", на вкладке Leases, можно посмотреть какие адреса выданы в аренду, тут увидим информации по адресу нашего телефона
Вся конфигурация маршрутизатора будет выглядеть вот так:
/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), это я вынесу в отдельную статью, так же есть планы в отдельной статье поделиться опытом настройки межсетевого экрана.
Обязательно подписывайтесь на канал, у меня материала по разным технологиям на несколько лет вперёд. Если по тексту статьи возникли вопросы, добро пожаловать в комментарии.