#️⃣Configuring the Mikrotik
В данном разделе представлены процессы конфигурации компонентов роутеров Mikrotik
Схема рассматриваемой сети
Для начала необходимо произвести стандартную процедуру развертки образа операционной системы (RouterOS). В нашем случае каждый Mikrotik разворачивается из одного .ova
файла:
Создаем непосредственно виртуальные машины и через настройки каждой отдельной ВМ настраиваем сетевые интерфейсы в соответствии со схемой стенда:
После этого, запускаем виртуальные машины и назначаем пароль для пользователя admin
(первичные данные для входа - admin:<No password>
):
Далее необходимо установить оконечные узлы сети (компьютеры). Для этих целей мы будем использовать lubuntu
для того, чтобы не перегружать ресурсы хостовой ОС. Также необходимо установить сетевые интерфейсы для ВМ средствами VMware (IP-адреса не настраиваем на данном этапе!). На этом мы останавливаться не будем.
1. Настройка имени хоста
В Mikrotik изменить параметр hostname можно следующим образом:
2. Настройка сетевых интерфейсов - статические IP-адреса
Чтобы посмотреть сетевые интерфейсы, которые установлены на роутере, необходимо ввести команду interface print
Чтобы вывести список установленных IP-адресов, необходимо воспользоваться командой ip address print
На данный момент список пуст, так как мы не устанавливали IP-адреса. Чтобы добавить IPv4 адреса, необходимо воспользоваться командой ip address add address=<IP/mask> interface=<ether№>
Как видим, после установки IP-адресов, список обновился, но представим ситуацию, когда мы ошиблись с установкой IP-адреса, как показано на рисунке ниже:
В таком случае необходимо удалить лишний IP-адрес при помощи соответствующей команды ip address remove numbers=<#-number>
. В нашем случае, список IP-адресов содержит лишнюю запись под номером 2, поэтому в качестве аргумента numbers
указывается номер 2:
Полный список команд для конфигурации маршрутизаторов в рамках стенда:
3. Настройка раздачи IP-адресов через DHCP
3.1. Автоматизированная конфигурация DHCP-сервера
После того, как мы настроили все IP-адреса на наших CHR, необходимо настроить IP-адреса на оконечных узлах (lubuntu), но сделаем мы это посредством DHCP. Другими словами, мы будем создавать DHCP-сервер на одном из сетевых интерфейсов микротиков (те, которые связаны с lubuntu) и получать адрес от создаваемого DHCP-сервера на lubuntu-хостах.
DHCP-сервер средствами CLI в RouterOS можно реализовать двумя разными способами. Самый простой из них - автоматический:
Как видно на рисунке выше, нам достаточно ввести одну команду ip dhcp-server setup
и далее нам останется только выбрать параметры DHCP-сервера по предложенным пунктам. При этом, что самое удобное, при таком способе конфигурации Mikrotik (если настроены сетевые интерфейсы) сам предлагает выставить параметры относительно параметров IPv4 на выбранном сетевом интерфейсе. Единственное, что я лично поменял - addresses to give out
Нам остается только настроить сетевой интерфейс на прием адреса от DHCP на lubuntu, которая должна быть связана с CHR1:
Как можно заметить, lubuntu получила адрес 192.168.10.15/24, а также мы проверили доступность DHCP-сервера.
3.2. Ручная конфигурация DHCP-сервера
Теперь посмотрим альтернативный способ настройки DHCP-сервера на примере CHR2 и связанной с этим маршрутизатором lubuntu. Полный конфиг для ручной настройки DHCP-сервера на CHR2:
Проверяем выдачу IP-адреса:
Чтобы посмотреть список активных DHCP-серверов необходимо воспользоваться командой ip dhcp-server print
Далее необходимо настроить DHCP-сервера на CHR3 и CHR4 любым из представленных ранее способов. Для CHR3 пул выдаваемых адресов 192.168.12.2-192.168.12.75, а для CHR4 - 192.168.13.2-192.168.13.75.
4. Работа с пользователями
Для того, чтобы посмотреть список доступных пользователей в системе, необходимо воспользоваться командой user print
Добавление пользователей производится при помощи команды user add name=<username> password=<password> group=<group>
Список доступных групп можно посмотреть при помощи команды user group print
Чтобы войти под новым пользователем, необходимо сначала выйти из старого при помощи команды quit
и зайти уже в нового пользователя.
Список других полезных команд для управления пользователями:
5. Настройка SSH, закрытие портов
Теперь займемся настройкой SSH для CHR1. Для начала сменим порт подключения с 22 на 2022. Для того, чтобы сменить порт для подключения по SSH, необходимо воспользоваться командой /ip service edit ssh value-name=port
, после ввода команды откроется окно, куда необходимо ввести новое значение порта для SSH:
Нажимаем Ctrl + O для сохранения измененного параметра. Пробуем подключиться с lubuntu:
6. Настройка Firewall
Для просмотра активных правил компонента Firewall необходимо воспользоваться командой ip firewall filter print
, но по-умолчанию никаких правил нет. Разберемся с тем, относительно чего формируются правила.
Одним из базовых понятий настройки файервола Mikrotik является цепочка (chain). По умолчанию их 3, но есть возможность и создания собственных цепочек:
Цепочка INPUT — входящий трафик, приходящий на маршрутизатор.
Цепочка OUTPUT — исходящий трафик, создаваемый маршрутизатором.
Цепочка FORWARD — трафик, проходящий сквозь через маршрутизатор.
Если к нам должен прийти какой-либо трафик извне, например, из интернета, то мы его будем обрабатывать цепочкой INPUT. Чтобы обработать правилами трафик, уходящий наружу (например, в тот же интернет), задействуем цепочку OUTPUT. Если же наш маршрутизатор не находится на границе сети, а служит промежуточным узлом между сетями, то тогда для обработки трафика применяем цепочку FORWARD.
Попробуем создать несколько правил (они не зависят друг от друга, после создания каждого правила следует незамедлительное его удаление) на CHR1:
Блокировать все подключения из подсети 192.168.10.0/24;
Блокировать ICMP-запросы от 192.168.10.0/24.
6.1. Создание первого правила
Для того, чтобы блокировать все подключения со стороны какой-либо подсети, мы должны создать список адресов, где будут указаны хосты/сети, относительно которых будет производится то или иное действие. Создать такой список можно при помощи команды ip firewall address-list add list=<list_name> address=<IP-net_or_host/hosts>
Пробуем подключиться по SSH со стороны lubuntu, а также пропинговать CHR1:
Как видим, мы не можем подобраться к CHR1. Не работает ICMP и SSH. Удалим правило при помощи команды ip firewall filter remove numbers=0
Можно также не удалять правило, а просто его отключить. Кстати, параметр number
имеет значение 0 ввиду того, что мы создавали первое правило, а первое правило в списке имеет значение (номер) 0.
6.2. Создание второго правила
Далее заблокируем только трафик ICMP со стороны подсети 192.168.10.0/24. Делаем это следующим образом:
Здесь мы уже применяем немного другую структуру - НЕ УКАЗЫВАЕМ СПИСОК, который мы создали ранее, хотя и могли, применив все тот же dst-address-list
, сделал я это исключительно в качестве примера различных вариаций настроек. Теперь проверяем правило:
Как видим, теперь блокируется конкретно ping (ICMP), а SSH, в отличие от первого правила, нам по-прежнему доступен. Удаляем/деактивируем правило и движемся дальше
7. Создание резервной копии
Резервная копия для Mikrotik создается достаточно просто при помощи следующей команды:
Проверить файл можно, введя команду file print
:
Советую перед дальнейшей настройкой сделать бэкапы на всех маршрутизаторах
8. Настройка динамической маршрутизации на основе OSPF
OSPF (англ. Open Shortest Path First) — протокол динамической маршрутизации, основанный на технологии отслеживания состояния канала (link-state technology) и использующий для нахождения кратчайшего пути алгоритм Дейкстры.
Сразу представлю полный конфиг для настройки OSPF на всех маршрутизаторах рассматриваемой сети:
Суть в том, чтобы вначале объявить на каждом маршрутизаторе подсети, которые будут участвовать в процессе маршрутизации, затем создать instance (процесс для работы OSPF) и установить для каждого CHR router-id
. Параметр area
мы будем использовать со стандартным значением backbone
.
После настройки всех 4х маршрутизаторов необходимо проверить работоспособность сети. В нашем случае все lubuntu должны быть доступны друг для друга. Проверяем:
Перед настройкой RIP необходимо выключить OSPF, например, при помощи
routing ospf instance disable numbers=0
9. Настройка динамической маршрутизации на основе RIP
RIP (англ. Routing Information Protocol) — это протокол дистанционно-векторной маршрутизации. Маршрутизаторы, работающие через этот протокол, отправляют всю или часть своей таблицы маршрутизации соседям в сообщении для обновления.
Полный конфиг для настройки RIP на маршрутизаторах:
В данном случае мы всего лишь объявляем все подсети, которые относятся непосредственно к настраиваемому маршрутизатору, а также добавляем соседей (маршрутизаторы, которые имеют прямое соединение друг с другом). При проверке работоспособности маршрутизации мы должны получить точно такой же результат, что и при настройке OSPF.
Список дополнительных команд:
Перед настройкой BGP, удалим все, что связано с RIP при помощи следующих команд:
10. Настройка динамической маршрутизации на основе BGP
BGP (англ. Border Gateway Protocol) - Протокол BGP предназначен для обмена информацией о достижимости подсетей между автономными системами (АС (AS-номер вашей организации или провайдера), англ. AS — autonomous system), то есть группами маршрутизаторов под единым техническим и административным управлением, использующими протокол внутридоменной маршрутизации для определения маршрутов внутри себя и протокол междоменной маршрутизации для определения маршрутов доставки пакетов в другие АС. Передаваемая информация включает в себя список АС, к которым имеется доступ через данную систему. Выбор наилучших маршрутов осуществляется исходя из правил, принятых в сети.
По умолчанию, все Mikrotik'и имеют одинаковый стандартный instance
:
В отличие от OSPF, здесь необходимо настраивать не только router-id
, но и сделать разными номера as
. В рамках данного материала мы будем изменять default instance
при помощи set
, но можно добавить и новый с помощью /routing bgp instance add name=<instance_name> router-id=<router_id> as=<asn_org_number>
.
Вторым этапом следует настройка BGP Peer - эта операция на самом деле схожа с добавлением сетей, только в данном случае это делается немного по-другому ввиду особенностей работы BGP.
Вновь проверим работоспособность настроенной маршрутизации:
Прочие полезные команды для работы с BGP:
С маршрутизацией мы закончили. Но перед тем, как переходить к следующему пункту, советую оставить какой-либо из видов рассмотренной маршрутизации, т.к. далее без нее мы не сможем поднять GRE-туннель между CHR1 и CHR3. Я же буду использовать OSPF.
11. GRE over IPsec (на базе OSPF)
Добавим нововведение в нашу изначальную схему:
Здесь мы добавим GRE-туннель совместно с IPsec, но для начала немного теории.
GRE (англ. Generic Routing Encapsulation) - это протокол туннелирования, который используется для инкапсуляции пакетов IP в кадры сетевого уровня других протоколов. Он позволяет передавать IP-пакеты через сети, которые не поддерживают протокол IP напрямую, или для обеспечения соединения между сетями, которые используют разные протоколы сетевого уровня. GRE-туннели могут быть использованы для объединения сетей, обеспечения маршрутизации между разными сетевыми устройствами и для других сетевых задач.
IPsec (англ. Internet Protocol Security) - это набор протоколов для обеспечения безопасности и защиты данных в сети Интернет. Он позволяет обеспечить защиту сетевых соединений, аутентификацию и шифрование данных, а также контроль доступа к ресурсам сети. IPsec работает на уровне интернет-протокола (IP) и является стандартом безопасности для передачи данных в Интернете.
Принципы работы:
Мы будем реализовывать GRE over IPsec в самом простом его исполнении для RouterOS. При этом не забываем убедиться, что у нас корректно работает маршрутизация на основе протокола OSPF, иначе GRE-туннель не будет работать. Введем следующие команды на указанные хосты:
Для начала создается отдельный интерфейс для GRE. При создании указываются IP-адреса, между которыми будет поднято впоследствии соединение (туннель). Если посмотреть на схему, то можно заметить, что прямого соединения между CHR1 и CHR3 нет, но указываются именно их адреса. Здесь как раз-таки и всплывает необходимость маршрутизации. Если будет маршрутизация - будут пути, будут пути - будет соединение. Далее уже созданному интерфейсу присваиваем IP-адрес - это уже будет новый IP, который работает поверх базовых адресов, участвующих в маршрутизации.
Проверим созданные интерфейсы:
Проверим IP-адреса:
Теперь посмотрим, как проходят маршруты. Для начала посмотрим, какой маршрут имеют адреса 10.10.11.1 и 10.10.12.2 (OSPF):
Как видим, есть переход через CHR2, а что если сделать tracert для GRE:
В данном случае соединение показано напрямую, а это значит, что GRE-активен, но не забываем, что GRE всего лишь инкапсулирует трафик, а значит он просто скрывает последовательность маршрута, т.е. другими словами, трафик, идущий через GRE проделывает тот же маршрут, что и при маршрутизации через OSPF, но скрывает это.
12. DHCP-клиент
Мы на финишной прямой - вновь расширим нашу схему
Как видим, мы добавим интерфейс на микротике, на который приходит Интернет. Наша задача состоит в том, чтобы раздать Интернет на Lubuntu-1. Для этого сначала добавим интерфейс к CHR-1 средствами VMware:
Проверяем новый сетевой интерфейс непосредственно на CHR-1:
Как видим, сетевой интерфейс ether4 не имеет IP-адреса. При этом, на VMnet0 стоит раздача IP-адресов, значит, нам необходимо включить DHCP-клиент на ether4, чтобы получить IP-адрес из диапазона VMnet0. Делается это крайне просто:
После активации DHCP-клиента проверим наличие IP-адреса на ether4:
В записях на рисунке выше можно заметить, что у ether4 появился IP-адрес, причем запись отмечена с помощью буквы "D", что говорит нам о том, что IP-адрес получен через DHCP, поэтому является динамическим. Проверим доступность Интернета:
Далее настроим NAT, чтобы иметь возможность выхода в Интернет через Lubuntu-1.
13. Настройка NAT
NAT (англ. Network Address Translation) - это технология, которая позволяет нескольким устройствам в локальной сети использовать один и тот же внешний IP-адрес при выходе в интернет.
Проще говоря, NAT подменяет адреса устройств таким образом, что для внешнего мира они выглядят, как будто это одно устройство с одним IP-адресом, а внутри сети каждое устройство имеет свой собственный адрес. Благодаря NAT можно сэкономить на покупке большого количества выделенных IP-адресов, а также обеспечить дополнительную безопасность, так как внешние злоумышленники не смогут определить, какие устройства подключены к сети.
Введем следующую команду на CHR-1:
Команда добавляет правило в цепочку srcnat (Source NAT) в брандмауэре IP. Это правило позволяет выполнять преобразование сетевых адресов (NAT) на исходящем интерфейсе ether4.
Теперь установим статический IP-адрес на сетевом интерфейсе lubuntu-1 (обязательно учитываем параметр Gateway):
Наслаждаемся наличием интернета на lubuntu-1:
При этом у нас активна маршрутизация на основе OSPF, но она в данном вопросе никак не препятствует и не влияет на доступность Интернета.
14. Настройка loopback-интерфейса
Переходим к заключительному этапу - создадим loopback-интерфейс, добавим его в OSPF и попробуем реализовать ping на этот интерфейс из другого сегмента сети.
Loopback-интерфейс (или петлевой интерфейс) - это виртуальный сетевой интерфейс, который создает программное обеспечение сетевой операционной системы (например, Linux, Windows или macOS). Он используется для различных целей, включая тестирование, отладку и разработку сетевых приложений.
Loopback-интерфейс действует как канал обратной связи для сетевых приложений, позволяя им отправлять и получать данные без необходимости подключения к физической сети. Все данные, отправленные на loopback-интерфейс, обрабатываются внутри системы и не передаются на другое оборудование. Это обеспечивает безопасную и контролируемую среду для тестирования и отладки сетевого кода без риска нарушения работы реальной сети.
Добавляем loopback-интерфейс:
Проверяем создание:
Если мы сейчас попробуем реализовать ping, например, с CHR-1 на CHR-3 (где расположен loopback), то результата не будет, т.к., во-первых, эти два узла не соединены напрямую, а во-вторых, сеть 192.168.100.0/24 не добавлена в OSPF. Исправим это:
Вновь проверим ping с CHR-1 на loopback-интерфейс CHR-3 и радуемся:
Last updated