Настройка роутера Mikrotik для различных задач в SOHO

в 13:58, , рубрики: mikrotik, Сетевые технологии, системное администрирование

Данная статья является калькой с написанной мной собственноручно внутренней инструкции, по которой мы настраиваем новые маршрутизаторы в фирме. Пункты будут расположены в более-менее хронологическом порядке, но каждый из них является самостоятельной мини-инструкцией к одному из используемых в нашей компании сервисов.

1. Включение, начальная настройка

Первым делом надо подключиться к устройству. По умолчанию, конфигурация на маршрутизаторе настроена на подсеть 192.168.88.0/24. Открываем в браузере адрес, скачиваем и сохраняем на компьютере, Winbox.exe.

Настройка роутера Mikrotik для различных задач в SOHO

Запускаем Winbox, Напротив Connect to нажимаем кнопку "…", и спустя несколько секунд должен появится в списке ваш маршрутизатор.

Настройка роутера Mikrotik для различных задач в SOHO

Два раза щелкаем мышкой по МАС-адресу и подключаемся с именем admin без пароля.
При первом входе, система предупредит что был запущен автоматический скрипт настройки маршрутизатора. Нажимаем кнопку Remove Configuration:

Настройка роутера Mikrotik для различных задач в SOHO

После этого дожидаемся, пока консоль Winbox закроется, и спустя несколько секунд опять запускаем Winbox (от туда куда вы её сохранили) и опять подключаемся по MAC-адресу.
Подключившись, выбираем слева Interfaces и удаляем лишние интерфейсы — VLAN, Bridge. Заходим в настройки каждого интерфейса (на роутере компании их всего 5) и отключем Master-port и proxy-arp, приводя настройки к следующему виду:

Настройка роутера Mikrotik для различных задач в SOHO

2. Выдача IP

Заходим в IP — Addresses. Выдаем нужным интерфейсам нужные адреса. В случае использования роутера в сети Эскорт, к нему подключаются 2 интернет-провайдера и внутренняя сеть. Вторая внутренняя сеть формируется через VPN. Указываем каждому интерфейсу нужный IP.

[admin@Mikrotik] /ip address> print
Flags: X - disabled, I - invalid, D - dynamic 
 #   ADDRESS            NETWORK         INTERFACE                                
 0 I ;;;                        , !!!                          
     10.0.33.1/24       10.0.33.0       ether4-hosting-network                   
 1   22.22.22.17/29   22.22.22.16   ether2-gateway2                          
 2   11.11.11.1/28  11.11.11.0  ether1-gateway1                          
 3   192.168.3.101/22   192.168.0.0     ether3-internal-network                  
 4 I 192.168.4.2/22     192.168.4.0     ether4-hosting-network                   

3. Маршрутизация

3.1. Создание ведущего и ведомого маршрутов

Заходим в IP — Routes. По умолчанию, вместо хостов для маршрутизации используются интерфейсы. Рекомендуется удалить все статические маршруты, а динамические после смены статики изменятся сами. Внимание: чтобы все безболезненно удалять, необходимо подключаться к роутеру по локальной сети, без использования маршрутов, иначе при удалении основного связь прервется. Далее создаем новые маршруты: в поле Dst.Address указываем 0.0.0.0/0, в поле Gateway прописываем IP основного шлюза. Не забываем про дистанцию — у какого маршрута она короче, тот будет основным. В целом настройки маршрута должны выглядеть вот так:

Настройка роутера Mikrotik для различных задач в SOHO

Для внешних интерфейсов в качестве шлюзов указываем 11.11.11.11 с дистанцией 4 и 22.22.22.22 с дистанцией 3.

Настройка роутера Mikrotik для различных задач в SOHO

После добавления трех маршрутов (2 для внешних каналов и 1 для внутренней сети) роутер можно включать в сеть и подключаться по IP 192.168.3.101, используя внутренний IP.

3.2. Создание табличной маршрутизации

Созданная выше конфигурация позволяет создать 2 внешних интерфейса, из которых в единицу времени может работать только один — то есть постоянно работает тот, у которого дистанция меньше, а у которого она больше — будет работать лишь тогда, когда из первого интерфейса выдернут кабель. Нас это по понятным причинам не устраивает — нам нужна одновременная работа двух шлюзов. Для этого нужно научить роутер возвращать трафик на тот интерфейс, с которого пришел запрос. Делается это созданием двух дополнительных маршрутов и настройкой файерволла. Для начала создадим необходимые маршруты. Созданные ранее маршруты тоже пригодятся, но их можно склонировать, т.к. изменяться они будут незначительно. Для этого щелкаем на созданный ранее маршрут, жмем кнопку Copy и добавляем Routing Mark — маркируем маршруты именем интерфейса соответственно. Я назвал их to_ISP1 и to_ISP2

Настройка роутера Mikrotik для различных задач в SOHO
Настройка роутера Mikrotik для различных задач в SOHO

Далее заходим в

IP — Firewall — Mangle

Настройка роутера Mikrotik для различных задач в SOHO

Создаем правила:

Вкладка General:
Chain: prerouting
In-interface: указываем один из входящих интерфейсов
Connection Mark: no-mark
Далее, на вкладке Action:
Action: mark connection
New Connection Mark: ISP1_conn
Passthrough: убираем галку.
Картинки для закрепления материала

Настройка роутера Mikrotik для различных задач в SOHO
Настройка роутера Mikrotik для различных задач в SOHO

Эти действия нужно повторить дважды — для 2 внешних интерфейсов (марки ISP1_conn и ISP2_conn соответственно).
Далее нужно создать еще 2 правила, которые будут направлять исходящий трафик с пометками ISP1_conn и ISP2_conn на помеченные выше маршруты. Создаем правило:

General:
Chain: output
Connection Mark: ISP1_conn
Action: mark routing
New Routing Mark: to_ISP1
Passthrough: убираем галку.
Картинки

Настройка роутера Mikrotik для различных задач в SOHO
Настройка роутера Mikrotik для различных задач в SOHO
Настройка роутера Mikrotik для различных задач в SOHO

4. Балансировка маршрутов в режиме Master-Slave

Итак, мы добились наличия двух одновременно работающих шлюзов, один из которых имеет высший приоритет, нежели второй. Проблема данной настройки в том, что переключение между шлюзами будет осуществляться исключительно при падении физического линка на интерфейсе устройства. Но бывают и другие ситуации: кончились деньги на счете, проблемы на стороне провайдера и прочее — ситуации, при которых даже основной шлюз доступен, но дальше него трафик не идет и штатно в этом случае переключение основного шлюза осуществлено не будет. Для автопереключения необходимо использовать функцию Netwatch, которая следит за наличием трафика на интерфейсах и переключает трафик в зависимости от правил. Настройка данного функционала состоит из 3 этапов.

4.1. Создаем скрипты переключения

Заходим в System — Scripts. Создаем 4 скрипта с именами ISP1-DOWN, ISP1-UP, ISP2-DOWN, ISP2-UP. Всем скриптам выдаем максимальные права.

Содержимое скриптов

ISP1-DOWN:

/ip route disable [find dst-address=0.0.0.0/0 and gateway=11.11.11.11 and distance >=4];

ISP1-UP:

/ip route enable [find dst-address=0.0.0.0/0 and gateway=11.11.11.11 and distance >= 4];

ISP2-DOWN:

/ip route disable [find dst-address=0.0.0.0/0 and gateway=22.22.22.22 and distance >=3];

ISP2-UP:

/ip route enable [find dst-address=0.0.0.0/0 and gateway=22.22.22.22 and distance >=3];

4.2. Создаем правила Netwatch

Заходим в Tools — Netwatch
Создаем новое правило:

host: 8.8.4.4
Interval: 00:00:10
timeout: 1000ms
Up: ISP2-UP
Down: ISP2-DOWN
и второе правило:
host: 8.8.8.8
Interval: 00:00:10
timeout: 1000ms
Up: ISP1-UP
Down: ISP1-DOWN

Картинки

Настройка роутера Mikrotik для различных задач в SOHO

Настройка роутера Mikrotik для различных задач в SOHO

4.3. Создаем постоянные независимые маршруты

До каждого из хостов (8.8.8.8 и 8.8.4.4) прописываем уникальный маршрут с пониженной дистанцией через разные шлюзы (11.11.11.11 и 22.22.22.22).

Настройка роутера Mikrotik для различных задач в SOHO

Проверить работу netwatch можно, разорвав логический (не физический) линк на одном из внешних интерфейсов. В моей фирме для этого использовался управляемый коммутатор, на котором тушился несмежный с роутером порт. Таким образом, пинг до хоста 8.8.8.8 обрывался, но физический линк был активен. После прекращения пинга Netwatch тушил необходимые маршруты и внутренняя сеть получала доступ в интернет через резервный интерфейс.

5. Создаем NAT

Заходим в IP — Firewall, переходим на вкладку NAT
Создаем 2 правила для каждого из внешних интерфейсов:

Chain: srcnat
Out-Interface: указываем нужный внешний интерфейс
Action: masquerade

Картинка

Настройка роутера Mikrotik для различных задач в SOHO

Проверить NAT можно, пустив ping на один из сайтов в интернете с компьютера, подключенного к внутреннему интерфейсу роутера. Если отключать одно из двух правил NAT на роутере, можно увидеть, как меняется трассировка до выбранного хоста в интернете.

6. Создаем VPN-сервер

6.1. Создаем нужный нам пул IP-адресов.

В сети фирмы было решено использовать подсеть 192.168.168.0/22, с адресацией клиентов, начинающейся со 192.168.170.2 и адресом шлюза (самого роутера) 192.168.170.1
Заходим в IP — Pool и создаем новый пул vpn-pool с диапазоном 192.168.170.2-192.168.171.254:
Настройка роутера Mikrotik для различных задач в SOHO

6.2. Включаем PPTP-сервер

Заходим в пункт меню PPP, далее на вкладке Interfaces находим кнопку PPTP Server. Ставим галки Enabled, mschap2 и выбираем Default Profile: default-encoding.
Настройка роутера Mikrotik для различных задач в SOHO

6.3. Настраиваем шифрование

Переходим на вкладку PPP Profile. На вкладке General указываем Local Address: 192.168.170.1, Remote Address: vpn-pool. На вкладке Protocols на опции Use Encryption ставим вариант ответа Yes.

6.4. Создаем аккаунты

Переходим на вкладку Secrets. Создаем пользователя:

Name: указываем логин
Password: Указываем пароль
Service: any
Profile: default-encryption
Local Address: 192.168.170.1
Remote Address: указываем, если необходимо, адрес из диапазона, созданного в vpn-pool. Если не указать адрес, то при подключении VPN будет выдаваться первый свободный.

Картинка

Настройка роутера Mikrotik для различных задач в SOHO

6.5. Пакетное создание учетных записей

Для пакетного создания секретов (учетных записецй) VPN можно использовать скрипт.
Необходимо зайти в System — Scripts, нажать «создать новый» и вставить туда нужный нам текст скрипта.

Настройка роутера Mikrotik для различных задач в SOHO

Текст скрипта

:global content [/file get [/file find name=vpnusers.txt] contents] ;
:global contentLen [ :len $content ] ;

:global lineEnd 0;
:global line "";
:global lastEnd 0;


:do {
       :set lineEnd [:find $content "rn" $lastEnd ] ;
       :set line [:pick $content $lastEnd $lineEnd] ;
       :set lastEnd ( $lineEnd + 2 ) ;

       :local tmpArray [:toarray $line] ;
	:if ( [:pick $tmpArray 0] != "" ) do={
	:put $tmpArray;
         /ppp secret add name=[:pick $tmpArray 0] password=[:pick $tmpArray 1] 
             local-address=[:pick $tmpArray 2] remote-address=[:pick $tmpArray 3] 
             profile=[:pick $tmpArray 4] service=[:pick $tmpArray 5];
}
} while ($lineEnd < $contentLen)

После создания скрипта достаточно создать файл, в котором придерживаться следующего синтаксиса:

логин,пароль,IP_шлюза,IP_клиента,тип_шифрования,сервис

Готовый файл должен выглядеть примерно так

Настройка роутера Mikrotik для различных задач в SOHO

Прошу обратить внимание, что последняя строка пустая. Если ее не оставить пустой, то последняя заполненная строка не будет обработана.
Далее нужно открыть пункт меню Files. Cозданный файл необходимо перетащить мышью в полученное окно. Файл обязан называться vpnusers.txt, иначе скрипт не сработает.
После этих приготовлений можно заходить в System — Scripts, выделять мышью нужный нам скрипт и нажимать Run Script:

Настройка роутера Mikrotik для различных задач в SOHO

Как результат работы скрипта, в PPP — Secrets можно видеть добавившиеся учетные записи

Настройка роутера Mikrotik для различных задач в SOHO

7. Настройка SSTP

Для работы SSTP требуются сертификаты. Я использовал самоподписанные сертификаты, выданные оснасткой OpenVPN. Для получения сертификатов не нужно ставить все компоненты,

достаточно только указанные на скриншотах

Настройка роутера Mikrotik для различных задач в SOHO
Настройка роутера Mikrotik для различных задач в SOHO

Далее, запускаем cmd от имени администратора и переходим в каталог c:Program FilesOpenVPNeasy-rsa (либо Program Files (x86), если вы поставили 32-битную версию OpenVPN на 64-битную Windows). Открываем для редактирования файл vars.bat. Если его нет, то переименовываем vars.bat.sample в vars.bat и приводим его к виду:

vars.bat

@echo off
rem Edit this variable to point to
rem the openssl.cnf file included
rem with easy-rsa.

set HOME=%ProgramFiles%OpenVPNeasy-rsa
set KEY_CONFIG=openssl-1.0.0.cnf

rem Edit this variable to point to
rem your soon-to-be-created key
rem directory.
rem
rem WARNING: clean-all will do
rem a rm -rf on this directory
rem so make sure you define
rem it correctly!
set KEY_DIR=keys

rem Increase this to 2048 if you
rem are paranoid.  This will slow
rem down TLS negotiation performance
rem as well as the one-time DH parms
rem generation process.
set KEY_SIZE=1024

rem These are the default values for fields
rem which will be placed in the certificate.
rem Change these to reflect your site.
rem Don't leave any of these parms blank.

set KEY_COUNTRY=RU
set KEY_PROVINCE=Nsk
set KEY_CITY=Novosibirsk
set KEY_ORG=Escort
set KEY_EMAIL=i_nichupienko@soft-escort.ru
set KEY_CN=87.245.176.183
set KEY_NAME=temp_nie
set KEY_OU=changeme
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234

Далее я чисто для удобства подредактировал файл build-ca.bat:

build-ca.bat

@echo off
cd %HOME%
rem build a cert authority valid for ten years, starting now
"c:Program FilesOpenVPNbinopenssl.exe" req -days 3650 -nodes -new -x509 -keyout %KEY_DIR%%1.key -out %KEY_DIR%%1.crt -config %KEY_CONFIG%

После этого запускаем в такой последовательности:

c:Program FilesOpenVPNeasy-rsa>vars.bat
c:Program FilesOpenVPNeasy-rsa>clean-all.bat
c:Program FilesOpenVPNeasy-rsa>build-ca.bat newuser

На вопросы последней команды в можно просто нажимать enter (будут использоваться введенные в файл vars.bat данные), а можно вводить новые данные. В общем, как удобно.

Выполнение команд

Настройка роутера Mikrotik для различных задач в SOHO

Результат

Настройка роутера Mikrotik для различных задач в SOHO

В Winbox роутера щелкаем кнопку Files и получившиеся файлы из папки копируем туда методом Drag'n'Drop.

Настройка роутера Mikrotik для различных задач в SOHO

Далее в Winbox переходим в System — Certificates. Жмем Import, выбираем сначала один файл, затем второй:
Настройка роутера Mikrotik для различных задач в SOHO
Настройка роутера Mikrotik для различных задач в SOHO

Заходим в PPP — Profile, открываем созданный ранее default-encryption, жмем Copy и на вкладке Protocol меняем значение поля Use Encryption с Yes на Required:

Настройка роутера Mikrotik для различных задач в SOHO

В качестве названия профиля указываем SSTPprofile.
Затем, в System — PPP переходим на вкладку Interface и нажимаем там кнопку SSTP-Server. Ставим галку Enabled, выбираем SSTPProfile в качестве Default Profile и указываем необходимый нам сертификат. В качестве метода аутентификации выбираем только mschap2.

Настройка роутера Mikrotik для различных задач в SOHO

Поскольку при создании секретов (логинов/паролей) для PPP мы изначально тип сервиса указывали Any, то сейчас нам не нужно дополнительно ничего создавать. Подключение готово.

Ввиду того, что данная статья о настройке роутера, а не клиента, указывать способы импорта этого сертификата в различные ОС и настройку клиентского SSTP-соединения рассматривать в данной статье я не буду. Упомяну лишь, что полученный сертификат необходимо добавить в доверенные корневые центры сертификации.

8. Настройка ключевых правил файерволла

Заходим в IP — Firewall — Filter Rules

8.1. Доступ до роутера по Winbox из внутренней сети

Создаем правило:

Chain: Input
Protocol: tcp
Dst.Port: 8291
In. Interface: ether3-internal
Action: accept

Картинка

Настройка роутера Mikrotik для различных задач в SOHO

8.2. Пинг наружу из внутренней сети

Создаем 2 правила:

Chain: forward
Protocol: icmp
Out. Interface: ether1-gateway1 и ether2-gateway2 (либо можно не указывать интерфейсы, т.к. вовнутрь пинг все равно будет закрыт натом. Тогда нужно одно правило, а не 2)
Action: accept

Картинка

Настройка роутера Mikrotik для различных задач в SOHO
8.3. Пинг внутренней сети из сети VPN

Chain: forward
Protocol: icmp
Src.Address: 192.168.170.0/24
Dst.Address: 192.168.0.0/22
Action: accept

Картинка

Настройка роутера Mikrotik для различных задач в SOHO

8.4. Доступ по протоколу RDP из сети VPN во внутреннюю сеть

Chain: forward
Protocol: tcp
Src.Address: 192.168.170.0/24
Dst.Address: 192.168.0.0/22
Dst.Port: 3389
Action: accept

Картинка

Настройка роутера Mikrotik для различных задач в SOHO

9. Публикация порта 80 машины 192.168.2.82 наружу

Переходим в IP — Firewall — NAT

Chain: dstnat
Protocol: tcp
Dst.Port: 80
In.Interface: ether1-gateway1 (для ether2-gateway2 надо создать точно такое же правило)
Action: netmap
To Addresses: 192.168.2.82
To Ports: 80

Картинка

Настройка роутера Mikrotik для различных задач в SOHO

10. Публикация порта 3389 машины 192.168.2.82 в сеть VPN

Данное правило необходимо для создания доступа без использования маршрутизации на клиентской машине, т.к. машина 2.82 будет иметь дополнительный IP-адрес:порт из того же сегмента подсети, что и VPN-клиент.
Переходим в IP — Firewall — NAT

Chain: dstnat
Dst.Address: 192.168.170.82
Protocol: tcp
Dst.Port: 3389
Action: dst-nat
To Addresses: 192.168.2.82
To Ports: 3389

Картинка

Настройка роутера Mikrotik для различных задач в SOHO

Автор:

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js