Два провайдера в один роутер mikrotik

Инструкция по настройке 2-ух провайдеров на роутере MikroTik. В описании буду рассмотрены два распространённых типа работы двух провайдеров: резервирование и балансировка.

Резервирование(автопереключение) – при обрыве провайдера-1, весь интернет трафик переключается на провайдера-2;

Балансировка – тип настройки, когда две линии интернета работают одновременно. Распределение между провайдером-1 и провайдером-2 может быть в ручном или автоматическом режиме.

Содержание

  1. Подготовка работы с 2-мя провайдерами
  2. Режим резервирования
  3. Pежим балансировки
    • Ручная балансировка
    • Автоматическая балансировка NTH
    • Балансировка PCC
  4. Провайдер меняет шлюз в DHCP клиенте
  5. Одновременный проброс с двух провайдеров
  6. Задать вопрос по настройке 2-ух провайдеров

Настройка двух провайдеров в MikroTik, предварительная подготовка

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

В исходной настройке роутера MikroTik произведена базовая настройка и как минимум один интернет провайдер уже работает.

Начать нужно с того, что требуется физическое подключение 2-ого провайдера. Для этого нужно подготовить свободный порт и исключить его из Bridge(LAN).

Освободить порт для 2-ого провайдера

Настройка находится Bridge→Ports

Настройка 2 провайдеров в MikroTik, освободить порт

На данном примере, был удалён ether2 со списка портов, принадлежащих к Bridge-LAN.

Настроить 2-ого провайдера

  • DHCP client
  • Статический IP
  • PPPoE client

DHCP client

Настройка находится IP→DHCP client

Настройка 2 провайдеров в MikroTik, DHCP  client

Add Default Route = no – статическая маршрутизация для 2-ого провайдера будет доставлена вручную.

Статический IP

Настройка находится IP→Addresses

Настройка 2 провайдеров в MikroTik, добавить сатический IP

Настройка находится IP→Routes

Настройка 2 провайдеров в MikroTik, добавить комметарий для static IP

PPPoE client

Настройка находится PPP→Interface

Настройка 2 провайдеров в MikroTik, PPPoE client

Настройка 2 провайдеров в MikroTik, PPPoE клиент

Add Default Route = no – статическая маршрутизация для 2-ого провайдера будет доставлена вручную.

Добавление 2-ого провайдера в список WAN

Настройка находится Interfaces→Interface List

Настройка 2 провайдеров в MikroTik, добавть провайдера в список WAN

Список WAN должен включать интерфейсы двух провайдеров для того, чтобы правило Masquerade в IP→Firewall→NAT работало сразу для двух провайдеров

Настроить masquerade для WireGuard клиента

Отключить добавление DNS серверов для провайдера-1

Эти действия приведут к тому, что роутер MikroTik не будет использовать DNS сервера текущих интернет провайдеров. К примеру ситуация переключения на резервную линию может спровоцировать отсутствие DNS ответа, т.к. клиент или сам роутер осуществляет DNS запрос через основного провайдера. А он в то время уже перестал работать. Поэтому будут установлены общедоступные DNS сервера, который будут работать с двух провайдеров.

  • DHCP client
  • PPPoE client

DHCP client

Настройка находится IP→DHCP client

Настройка 2 провайдеров в MikroTik, отключить DNS для dhcp client

PPPoE client

Настройка находится PPP→Interface

Настройка 2 провайдеров в MikroTik, отключить DNS для pppoe client

Определить общедоступные DNS сервера

Настройка находится IP→DNS

Настройка 2 провайдеров в MikroTik, без динамических DNS

Отсутствие записей DNS серверов в разделе Dynamic Servers указывает на то, что роутер MikroTik не использует автоматические DNS сервера, которые назначаются в автоматическом режиме.

В Servers стоит указать общедоступные DNS сервера типа Cloudflare DNS и удалить любые другие DNS сервера.

Отключить автоматическое добавление маршрутов

Т.к. все маршруты будут добавлены в ручном режиме, следует отключить все динамические маршруты для основного провайдера. Такие маршруты помечены буквой D(Dynamic) в таблице маршрутизации:

Настройка находится IP→Routes

Настройка 2 провайдеров в MikroTik, пример диначеского маршрута

  • DHCP client
  • PPPoE client

DHCP client

Настройка находится IP→DHCP client

Настройка 2 провайдеров в MikroTik, отключить маршрут по умолчанию для dhcp client

PPPoE client

Настройка находится PPP→Interface

Настройка 2 провайдеров в MikroTik, отключить маршрут по умолчанию для pppoe client

Добавление маршрутов для двух провайдеров

Для переключение между провайдерами, будет использоваться скрипт, который будет находить маршрут с комментарием ISP-1 или ISP-2 и выключать или включать его в зависимости от статуса работы интернета. Ниже будет описан метод, как это можно сделать для типов подключения: статический IP, dhcp клиент, PPPoE подключение. Этим методом нужно воспользоваться для назначения комментария двух провайдеров.

Кроме обозначенных комментариев нужно определить distance = 2.

  • Статический IP или DHCP клиент
  • PPPoE client

Статический IP или DHCP клиент

Настройка находится IP→Routes

Настройка 2 провайдеров в MikroTik, добавить комметарий для static IP

В случае с DHCP client значение Gateway можно взять с раздела Status самого DCHP клиента

Настройка находится IP→DCHP Client

Настройка 2 провайдеров в MikroTik, скопировать gateway для dchp client

PPPoE client

Настройка находится IP→Routes

Настройка 2 провайдеров в MikroTik, добавить комметарий для pppoe

Mangle маркировка ответов для двух провайдеров

Правила маркировки маршрутов нужно определять только для белых(постоянных) IP адресов! Этот набор правил будет гарантировать то, что если пришёл input запрос на порт второго(или первого) провайдера, через этот же порт будет отправлен ответ. При отсутствии этих правил, доступ к роутеру по внешним IP может сопровождаться непредсказуемой работой.

Маркировка будет состоять из двух каскадных правил: маркировки соединения и маркировки маршрута

Настройка находится IP→Firewall→Mangle

Настройка 2 провайдеров в MikroTik, маркировка входящего соединения

Настройка 2 провайдеров в MikroTik, маркировка входящего соединения ISP-1

Настройка 2 провайдеров в MikroTik, маркировка исходящего маршрута

Настройка 2 провайдеров в MikroTik, маркировка исходящего маршрута ISP-1

/ip firewall mangle
add action=mark-connection chain=input in-interface=pppoe-out1 \
new-connection-mark=From-ISP-1
add action=mark-routing chain=output connection-mark=From-ISP-1 \
new-routing-mark=To-ISP-1
add action=mark-connection chain=input in-interface=ether2 \
new-connection-mark=From-ISP-2
add action=mark-routing chain=output connection-mark=From-ISP-2 \
new-routing-mark=To-ISP-2

Статическая маршрутизация для маркированных маршрутов

Кроме стандартных правил маршрутизации, нужно добавить маршруты для промаркированных ответов с раздела Mangle.

Настройка находится IP→Routes

Настройка 2 провайдеров в MikroTik, добавить статический маршрут для Mangle ISP-1

Настройка 2 провайдеров в MikroTik, добавить статический маршрут для Mangle ISP-2

И все текущие правила статической маршрутизации будут иметь вид:

Настройка 2 провайдеров в MikroTik, общий вид таблицы маршрутизации

/ip route
add distance=1 gateway=pppoe-out1 routing-mark=To-ISP-1
add distance=1 gateway=109.87.159.126 routing-mark=To-ISP-2
add comment=ISP-1 distance=1 gateway=pppoe-out1
add comment=ISP-2 distance=2 gateway=109.87.159.126

Настройка двух провайдеров MikroTik, режим резервирования(автопереключение)

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

Резервирование(автопереключение) это самый распространённый метод работы двух и более интернет провайдеров на роутере MikroTik.

За исходную позицию будут приняты настройки, описанные в разделе “Подготовка для работы с двумя провайдерами в MikroTik  

Описание переключение на резервную линию условно такое: роутер MikroTik будет отправлять ICMP(ping) запросы на 8.8.8.8(Google DNS) и в случае отсутствия ответа или большой задержки, интернет будет переключаться с основной(провайдер-1) линии на резервную(провайдер-2).

Добавить статический маршрут для Google DNS

Настройка находится IP→Routes

Настройка 2 провайдеров в MikroTik, добавить статический маршрут для Google DNS

/ip route
add comment=Netwatch distance=1 dst-address=8.8.8.8/32 gateway=pppoe-out1

Запретить ICMP запросы через провайдера-2

Настройка находится IP→Firewall

Настройка 2 провайдеров в MikroTik, запретить ICMP запросы через провайдера-2

/ip firewall filter
add action=drop chain=output comment=Netwatch dst-address=8.8.8.8 \
out-interface=ether2 protocol=icmp

Этим правилом будет гарантирована диагностика статуса интернет канала только через провайдера-1. При попытке отправить аналогичный запрос через провайдера-2, Firewall роутера MikroTik будет это блокировать.

Добавить правило Netwatch для переключения

Настройка находится Tools→Netwatch

Настройка 2 провайдеров в MikroTik, добавить правило Netwatch

Настройка 2 провайдеров в MikroTik, скрипт при статусе интернета UP

Настройка 2 провайдеров в MikroTik, скрипт при статусе интернета DOWN

/tool netwatch
add down-script="/ip route disable [find comment=\"ISP-1\"]\r\
\n/ip route enable [find comment=\"ISP-2\"]\r\
\n:foreach i in=[/ip firewall connection find protocol~\"tcp\"] do={ /ip f\
irewall connection remove \$i }\r\
\n:foreach i in=[/ip firewall connection find protocol~\"udp\"] do={ /ip f\
irewall connection remove \$i }\r\
\nlog warning (\"ISP-1 IS DOWN\")" host=8.8.8.8 up-script="/ip route disab\
le [find comment=\"ISP-2\"]\r\
\n/ip route enable [find comment=\"ISP-1\"]\r\
\n:foreach i in=[/ip firewall connection find protocol~\"tcp\"] do={ /ip f\
irewall connection remove \$i }\r\
\n:foreach i in=[/ip firewall connection find protocol~\"udp\"] do={ /ip f\
irewall connection remove \$i }\r\
\nlog warning (\"ISP-1 IS UP\")"
  • Host – узел, на который будут отправляться ICMP(ping) запросы;
  • Interval – время, в течении которого будет производиться диагностика для смены статуса;
  • Timeout – задержка пакета, которая будет восприниматься как отсутствие связи;
  • Status – текущий статус узла;
  • Закладка Up – скрипт, который будет выполнен, если провайдер-1 восстановит связь, после её обрыва;
  • Закладка Down – скрипт, который будет выполнен, если связь с провайдером-1 будет прервана.

Представленными скриптами с помощью утилиты Netwatch будет происходить переключение между провайдерами. Все соединения, которые были установлены через провайлера-1 будут удалены. Это позволит гарантированно переключиться на провайдера-2.

Настройка 2 провайдеров в MikroTik, режим балансировки(одновременная работа)

Существует два метода распределения нагрузки между 2-мя провайдерами в MikroTik:

Ручная балансировка. Все узлы делятся в ручном режиме на 2-ве условные группы и каждая из групп направляется к выделенному ей провайдеру;

Автоматическая балансировка. Узлы роутера MikroTik будут поделены на группы с помощью внутренних инструментов RouterOS.

Настройка нескольких провайдеров на MikroTik, схема сети

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

Когда работают оба провайдеры, нагрузка распределяется согласно ручному распределению в Address list.

ISP-1=Down & ISP-2=Up соединения To-ISP-1 очищаются и начинают работать через ISP-2. При этом соединения To-ISP-2 остаются не тронутыми. При восстановлении связи с ISP-1, соединения To-ISP-1 также очищаются и трафик вместо ISP-2 начинает проходить через ISP-1.

ISP-1=Up & ISP-2=Down соединения To-ISP-2 очищаются и начинают работать через ISP-1. При этом соединения To-ISP-1 остаются не тронутыми. При восстановлении связи с ISP-2, соединения To-ISP-2 также очищаются и трафик вместо ISP-1 начинает проходить через ISP-2.

Ручная настройка балансировки 2 провайдеров в MikroTik

Как видно из названия, условную подсеть роутера MikroTik будет поделено на две группы: To-ISP-1 и To-ISP-2.

  • pppoe-out1 – это провайдер-1;
  • ether2 – это провайдер-2.

Настройка находится IP→Firewall→Address List

Настройка 2 провайдеров в MikroTik, разбиение узлов на группы для балансировки

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

Mangle маркировка соединений для балансировки 2 провайдеров

Настройка находится IP→Firewall→Mangle

Настройка 2 провайдеров в MikroTik, prerouting mark connection

Настройка 2 провайдеров в MikroTik, address list для маркировки

Настройка 2 провайдеров в MikroTik, исключить локальный трафик

Настройка 2 провайдеров в MikroTik, маркировка соединений

Mangle маркировка маршрута для балансировки двух провайдеров

Настройка находится IP→Firewall→Mangle

Настройка 2 провайдеров в MikroTik, prerouting для mark connection

Настройка 2 провайдеров в MikroTik, маркировка маршрута для address list

Настройка 2 провайдеров в MikroTik, маркировка маршрута

Аналогичные действия по маркировке соединений и маршрута нужно выполнить для Address List = To-ISP-2.

Общий вид раздела Mangle

Настройка 2 провайдеров в MikroTik, общий вид Mangle

/ip firewall address-list
add address=192.168.2.2-192.168.2.125 list=To-ISP-1
add address=192.168.2.126-192.168.2.254 list=To-ISP-2

/ip firewall mangle
add action=mark-connection chain=prerouting disabled=no dst-address-type=\
!local new-connection-mark=To-ISP-1-Connection src-address-list=To-ISP-1
add action=mark-routing chain=prerouting connection-mark=To-ISP-1-Connection \
disabled=no new-routing-mark=To-ISP-1 src-address-list=To-ISP-1
add action=mark-connection chain=prerouting disabled=no dst-address-type=\
!local new-connection-mark=To-ISP-2-Connection src-address-list=To-ISP-2
add action=mark-routing chain=prerouting connection-mark=To-ISP-2-Connection \
disabled=no new-routing-mark=To-ISP-2 src-address-list=To-ISP-2

Для каждой группы узлов To-ISP-1 и To-ISP-2 будет создано по два маршрута, чтобы обеспечить плавное переключение согласно первоначальным условиям по балансировке 2 провайдеров.

Общий вид таблицы маршрутизации при балансировке 2 провайдеров

Настройка находится IP→Route

Настройка 2 провайдеров в MikroTik, общий вид таблицы маршрутизациия при балансировке

/ip route
add comment=Group-1-1 distance=1 gateway=pppoe-out1 routing-mark=To-ISP-1
add comment=Group-2-1 disabled=yes distance=2 gateway=109.87.159.126 \
routing-mark=To-ISP-1
add comment=Group-2-2 distance=1 gateway=109.87.159.126 routing-mark=To-ISP-2
add comment=Group-1-2 disabled=yes distance=2 gateway=pppoe-out1 \
routing-mark=To-ISP-2
add comment=Netwatch-2 distance=1 dst-address=8.8.4.4/32 gateway=109.87.159.126
add comment=Netwatch-1 distance=1 dst-address=8.8.8.8/32 gateway=\
pppoe-out1

Контроль ICMP запросов через нужный интерфейс

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

Настройка находится IP→Firewall→Filter Rules

Настройка 2 провайдеров в MikroTik, контроль icmp запросов для балансировке

/ip firewall filter
add action=drop chain=output comment=Netwatch-1 dst-address=8.8.8.8 \
out-interface=ether2 protocol=icmp
add action=drop chain=output comment=Netwatch-2 dst-address=8.8.4.4 \
out-interface=!ether2 protocol=icmp

Настройка Netwatch для переключения провайдеров

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

Настройка находится Tools→Netwatch

Настройка 2 провайдеров в MikroTik, netwatch для балансировки

/tool netwatch
add down-script="/ip route disable [find comment=\"ISP-2\"]\r\
\n/ip route disable [find comment=\"Group-2-2\"]\r\
\n/ip route enable [find comment=\"Group-1-2\"]\r\
\nlog warning (\"ISP-2 IS DOWN\")\r\
\n:foreach i in=[/ip firewall connection find connection-mark~\"To-ISP-2-C\
onnection\"] do={ /ip firewall connection remove \$i }" host=8.8.4.4 \
up-script="/ip route enable [find comment=\"ISP-2\"]\r\
\n/ip route enable [find comment=\"Group-2-2\"]\r\
\n/ip route disable [find comment=\"Group-1-2\"]\r\
\nlog warning (\"ISP-2 IS UP\")\r\
\n:foreach i in=[/ip firewall connection find connection-mark~\"To-ISP-2-C\
onnection\"] do={ /ip firewall connection remove \$i }"
add down-script="/ip route disable [find comment=\"ISP-1\"]\r\
\n/ip route disable [find comment=\"Group-1-1\"]\r\
\n/ip route enable [find comment=\"Group-2-1\"]\r\
\nlog warning (\"ISP-1 IS DOWN\")\r\
\n:foreach i in=[/ip firewall connection find connection-mark~\"To-ISP-1-C\
onnection\"] do={ /ip firewall connection remove \$i }" host=8.8.8.8 \
up-script="/ip route enable [find comment=\"ISP-1\"]\r\
\n/ip route enable [find comment=\"Group-1-1\"]\r\
\n/ip route disable [find comment=\"Group-2-1\"]\r\
\nlog warning (\"ISP-1 IS UP\")\r\
\n:foreach i in=[/ip firewall connection find connection-mark~\"To-ISP-1-C\
onnection\"] do={ /ip firewall connection remove \$i }"

Балансировка и резервирование в MikroTik используя настройки NTH раздела Mangle

Можно также применить схему, в которой каждое соединение будет промаркировано по принципу:

четный-пакет = провайдер-1

нечетный-пакет = провайдер-2

Настройка находится IP→Firewall→Mangle

/ip firewall mangle
add action=mark-connection chain=prerouting disabled=yes dst-address-type=\
!local new-connection-mark=To-ISP-1-Connection src-address-list=To-ISP-1 nth=2,1
add action=mark-routing chain=prerouting connection-mark=To-ISP-1-Connection \
disabled=yes new-routing-mark=To-ISP-1 src-address-list=To-ISP-1
add action=mark-connection chain=prerouting disabled=yes dst-address-type=\
!local new-connection-mark=To-ISP-2-Connection src-address-list=To-ISP-2 nth=2,2
add action=mark-routing chain=prerouting connection-mark=To-ISP-2-Connection \
disabled=yes new-routing-mark=To-ISP-2 src-address-list=To-ISP-2

Балансировка между двумя провайдерами будет производиться в соотношении 50:50, это определяется параметрами nth=2,1 и nth=2,2.

Все остальные действия по настройке маршрутизации, Firewall и Netwatch будут аналогичны описанных в разделе “Ручная балансировка 2 провайдеров в MikroTik “.

Настройка балансировки двух провайдеров Per Connection Classifier (PCC) раздела Mangle

Per Connection Classifier (PCC) позволят разделить трафик на равные потоки с возможностью держать пакеты с определенным набором параметров в одном потоке (определяется в наборе параметров из src-address, src-port, dst-address, dst-port)

Настройка находится IP→Firewall→Mangle

/ip firewall mangle
add action=mark-connection chain=prerouting dst-address=\
!192.168.2.0/24 new-connection-mark=To-ISP-1-Connection \
per-connection-classifier=both-addresses-and-ports:2/0 src-address=\
192.168.2.0/24
add action=mark-routing chain=prerouting connection-mark=To-ISP-1-Connection \
new-routing-mark=To-ISP-1 src-address=192.168.2.0/24
add action=mark-connection chain=prerouting dst-address=\
!192.168.2.0/24 new-connection-mark=To-ISP-2-Connection \
per-connection-classifier=both-addresses-and-ports:2/1 src-address=\
192.168.2.0/24
add action=mark-routing chain=prerouting connection-mark=To-ISP-2-Connection \
new-routing-mark=To-ISP-2 src-address=192.168.2.0/24

Все остальные действия по настройке маршрутизации, Firewall и Netwatch будут аналогичны описанных в разделе “Ручная балансировка 2 провайдеров в MikroTik “.

Провайдер меняет шлюз в DHCP клиенте, не работает переключение или балансировка

DHCP клиент это один из самых распространённых типов настроек WAN интерфейса. Все настройки проходят в автоматическом режиме и не требуют ни каких дополнительных усилий. Однако в варианте с балансировкой двух провайдеров, используемая настройка требует явного определения шлюза(Gateway) в таблице маршрутизации. А если IP адрес серый(динамический), то правила с балансировкой перестанут работать при его изменении.

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

Настройка находится IP→DHCP client

Провайдер меняет шлюз в DHCP клиенте, не работает переключение или балансировка

{
:local rmark "ISP-2"
:local count [/ip route print count-only where comment="ISP-2"]
:if ($bound=1) do={
:if ($count = 0) do={
/ip route add gateway=$"gateway-address" comment="ISP-2" distance=2
} else={
:if ($count = 1) do={
:local test [/ip route find where comment="ISP-2"]
:if ([/ip route get $test gateway] != $"gateway-address") do={
/ip route set $test gateway=$"gateway-address"
}
} else={
:error "Multiple routes found"
}
}
} else={
/ip route remove [find comment="ISP-2"]
}
}

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

{
:local rmark "ISP-1"
:local count [/ip route print count-only where comment="ISP-1"]
:if ($bound=1) do={
:if ($count = 0) do={
/ip route add gateway=$"gateway-address" comment="ISP-1" distance=1
/ip route add gateway=$"gateway-address" comment="Netwatch" distance=1 dst-address=8.8.4.4
} else={
:if ($count = 1) do={
:local test [/ip route find where comment="ISP-1"]
:if ([/ip route get $test gateway] != $"gateway-address") do={
/ip route set $test gateway=$"gateway-address"
}
} else={
:error "Multiple routes found"
}
}
} else={
/ip route remove [find comment="ISP-1"]
/ip route remove [find comment="Netwatch"]
}
}

Скрипт может быть дополнен добавлениями(и удалениями) маршрутов для Routing-mark и Netwatch.

Одновременный проброс с двух провайдеров в MikroTik настройка Mangle

Входящая задача: сделать проброс портов таким образом, чтобы сервер отвечал с того провайдера, с которого пришёл запрос. На практике это может быть Web сервер(443\https), у которого объявлены две DNS записи с двумя внешними IP роутера MikroTik.

Настройка находится IP→Firewall→Mangle

/ip firewall mangle 
add chain=forward action=mark-connection new-connection-mark=From-ISP-1 in-interface=pppoe-out1
add chain=prerouting action=mark-routing new-routing-mark=To-ISP-1 passthrough=no connection-mark=From-ISP-1 in-interface=bridge
add chain=forward action=mark-connection new-connection-mark=From-ISP-2 in-interface=ether2
add chain=prerouting action=mark-routing new-routing-mark=To-ISP-2 passthrough=no connection-mark=From-ISP-2 in-interface=bridge

где

  • pppoe-out1 – это провайдер-1;
  • ether2 – это провайдер-2;
  • bridge – локальный bridge интерфейс.

Есть вопросы или предложения по настройке 2 провайдеров в MikroTik? Активно предлагай свой вариант настройки! Оставить комментарий

Время на прочтение
4 мин

Количество просмотров 95K

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

Для решения задачи будем использовать маршрутизатор, настроенный на базе RouterOS. В данном примере MikroTik rb951ui (5-портовый). В порт №1 соответственно будет подключен провайдер «1» (ISP1) по L2TP. Во второй порт провайдер «2» (ISP2) со StaticIP. Порты №3, №4, №5 будут служить для подключения клиентов сети. IP-адреса в локальной сети будут раздаваться по DHCP. О работоспособности первого или второго канала будем судить по доступности IP-адреса. К примеру, возьмем DNS google.com, вероятность отказа которого очень мала.

Последовательность действий. Подключаем маршрутизатор к порту №3 и соответственно LAN интерфейсу ПК. Для конфигурации RouterOS будет использоваться утилита winbox. Заходим по MAC-адресу и авторизуемся. Видим интерфейс конфигурации маршрутизатора. (Рис. 1)

Рис. 1. Интерфейс конфигурации RouterOS

Первое, что мы делаем – настраиваем интерфейсы провайдера «1» и провайдера «2» Рис.2, а так же настраиваем LAN для портов 3, 4 и 5.

Рис. 2. Настройка провайдера «1» и провайдера «2»

В данном случае Интерфейс-1 принадлежит провайдеру «1» (ISP1 – имя для удобства) Интерфейс-2 принадлежит провайдеру «2» (ISP2). Для организации LAN переходим в пункт меню «Bridge» и добавляем интерфейс c именем LAN. (Рис.3).

Рис. 3. Организация LAN

Указывает порты, которые будут относиться к внутренней сети (Рис. 4)

Рис. 4. Добавление портов в LAN

Теперь необходимо добавить IP-адреса провайдеров, а так же указать IP-адрес шлюза нашей локальной сети (Рис. 5).

Описание: Первое, что мы делаем, добавляем шлюз локальной сети (цифры 4, 5). Интерфейс указываем LAN. Второе – добавляем статический адрес второго провайдера (цифры 6, 7)

Рис. 5. Добавление адресов для интерфейсов

Так как организация подключения с первым провайдером осуществляется по L2TP необходимо добавить L2TP-клиента (Рис. 6)

Замечание: Добавляем L2TP-client (Цифра 2). Указываем соответствующие параметры во вкладке Dial-out, а именно адрес сервера, логин и пароль которые выданы первым провайдером (цифры 4, 5 и 6).

Рис. 6. Добавление L2TP-клиента

После добавления клиента во вкладке status получим соединение. (Рис. 7)

Рис. 7. Статус L2TP-соединения

Теперь займемся организацией DHCP-сервера для раздачи адресов нашим клиентам внутренней сети. Первое что сделаем, создадим pool выдаваемых адресов (Рис. 8), а затем настроим сам DHCP-сервер. (Рис 9).

Рис. 8. Создание pool’а выдаваемых адресов

Рис. 9. Добавление и настройка DHCP-сервера

Описание DHCP-сервера: Добавляем сервер с именем (server1) к интерфейсу внутренней сети LAN c пулом адресов который создавали ранее. В network указываем, какие параметры передавать серверу клиентам.

Теперь нам необходимо добавить статические маршруты, так как всё взаимодействие между сетями осуществляется в соответствии с таблицей маршрутизации. Ее управление в RouterOS осуществляется в меню «Routes». Адресация с локальной сетью и с внутренними сетями провайдеров была добавлена динамически. Осталось добавить маршруты в интернет (на адрес 0.0.0.0/0) через шлюзы провайдеров. (Рис. 10).

Рис. 10. Добавление статических маршрутов

Далее, необходимо организовать переключение каналов в случае недоступности 1 канала. В ОС роутера есть встроенная утилита «Netwatch», которая позволяет отслеживать состояние хостов в сети посредством отправки ICMP-запросов (ping) и выполнять какие-либо действия на основе их доступности. Мы будем отслеживать IP-адрес 8.8.4.4 через первый канал, и в случае его недоступности переключать маршруты на работу по второму.

Создаем новый «Netwatch host», в графе «Host» указываем отслеживаемый IP-адрес, а в «Interval» — частоту осуществляемых проверок. (Рис. 11).

Рис. 11. Настройка переключения каналов

И в заключение, в закладке Up (цифра 5) необходимо прописать следующее правило:

#включаем маршрут с комментарием «ISP1» (основной канал)
/ip route set [find comment=«ISP1»] disabled=no
#отключаем маршрут с комментарием «ISP2»(резервный канал)
/ip route set [find comment=«ISP2»] disabled=yes
Во вкладке Down прописываем следующее правило:
#отключаем маршрут с комментарием «ISP1» (резервный канал)
/ip route set [find comment=«ISP1»] disabled=yes
#включаем маршрут с комментарием «ISP2» (основной канал)
/ip route set [find comment=«ISP2»] disabled=no

Настройка правил для проходящего трафика

Используя встроенный файервол можно управлять абсолютно всем трафиком, нам необходимо запретить пинг на ISP2. Для это в окне терминала пропишем следующее:
#одобряем использование протокола icmp
ip firewall filter add chain=input comment=«Permit icmp»

#ограничиваем ping 8.8.4.4 через ISP2
ip firewall filter add action=drop chain=output comment=«Deny 8.8.4.4 to reserved internet-channel» dst-address=8.8.4.4 out-interface=«ether2 — internet II (reserve)» protocol=«icmp»

Материал является вводным и предназначен для знакомства с вопросом управления сетью с двумя провайдерами.

Многие организации подключают два интернет-канала – от двух разных провайдеров. Зачастую это используется для того, чтобы в случае проблем с одним из провайдеров связь не прерывалась. В этой инструкции подробно поговорим о том, как правильно настроить два интернет-подключения на одном Mikrotik.

Краткий план данной статьи:

  • Настройка двух интернет-подключений
  • Переключение интернет-канала с основного провайдера на резерв
  • Два провайдера в разных подсетях

Настройка двух интернет-подключений

Итак, представим, что кабели ваших провайдеров подключены в 1 и 2 порты микротика. В качестве примера у нас будут следующие интернет-подключения: 1 – динамика, 2 – статический IP-адрес.

Для начала сбросим Mikrotik на заводские настройки, подключившись к нему через программу Winbox: выберите раздел System — Reset Configuration, в открывшемся меню ставим галочки на No default configuration и Do not backup и нажимаем Reset configuration. После сброса оборудования можно приступать к настройке.

Микротик сброс настроек

Сначала настроим первый WAN порт – в нашем примере на нем будет динамическое подключение.

В меню IP – DHCP Client добавляем новое подключение, назначив интерфейс ether1.

DHCP клиент микротик

Можно поступить проще, введя на микротике в New Terminal данную команду:

/ip dhcp-client add interface=ether1 disabled=no

настройка DHCP клиента через консоль

Далее настроим второй порт на статику.

Откроем меню IP – Addresses и добавим новый адрес с указанием нужного порта.

Добавить IP адрес на нужный порт

Далее настраиваем IP-адрес интернет-шлюза.

Откроем меню IP – Route и добавляем новый адрес шлюза.

Микротик настройка маршрута

Также не забываем указать адрес DNS сервера ( меню IP – DNS):

Микротик настройка ДНС

Или же введите в New Terminal следующий конфиг (соответственно, указав вашу индивидуальную адресацию):

/ip address add address=192.168.2.5/24 interface="ether2" network=192.168.2.0
/ip route add distance=1 gateway=192.168.2.254
/ip dns set allow-remote-requests=yes servers=8.8.8.8

Также стоит упомянуть PPpoE соединение. Для того, чтобы поднять его на вашем оборудовании, используйте следующие строки в New Terminal:

/interface pppoe-client add add-default-route=yes default-route-distance=1 disabled=no interface=ether1 max-mru=1480 max-mtu=1480 mrru=1600 name=pppoe password=PASSWORD use-peer-dns=yes user=LOGIN

Где в PASSWORD и LOGIN вы прописываете ваши данные и указываете в interface нужный порт, в который будет подключен кабель.

Далее создадим бридж LAN, в который добавим оставшиеся порты и Wi-Fi подключение.

Микротик добавление бриджа

Микротик порты в бридже

Добавление бриджа с помощью конфига:

/interface bridge add name=LAN
/interface bridge port add bridge=LAN interface=wlan1
/interface bridge port add bridge=LAN interface=ether3
/interface bridge port add bridge=LAN interface=ether4
/interface bridge port add bridge=LAN interface=ether5

После этого добавляем желаемую адресацию для созданного бриджа и настраиваем DHCP Server локальной сети. Можете использовать наш конфиг, заменив в нем адресацию на нужную вам:

/ip address add address=192.168.100.1/22 interface=LAN network=192.168.100.0
/ip pool add name=poolForLAN ranges=192.168.100.2-192.168.103.253
/ip dhcp-server add address-pool=poolForLAN disabled=no interface=LAN name=dhcpForLAN
/ip dhcp-server network add address=192.168.100.0/22 dns-server=8.8.8.8,208.67.222.222 gateway=192.168.100.1 netmask=22

Данные настройки применяются в следующих разделах:

IP – Addresses

Микротик адреса IP

IP – Pool

пул адресов

IP – DHCP Server

DHCP сервер микротик

IP – DHCP Server – Networks

DHCP сервер сети

По умолчанию Wi-Fi интерфейс отключен, не забудьте включить, задать название Wi-Fi сети и выставить на нее пароль.

Это можно сделать с помощью следующего конфига:

/interface wireless security-profiles add authentication-types=wpa2-psk management-protection=allowed mode=dynamic-keys name=profile1 wpa2-pre-shared-key=12345678

/interface wireless set wlan1 mode=ap-bridge ssid=work default-forwarding=no disabled=no security-profile=profile1

Указываем в SSID название вашей Wi-FI сети, в wpa2-pre-shared-key – пароль для подключения.

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

Для этого в IP – Firewall – NAT добавим правило. Во вкладке General в графе Chain выбираем srcnat, в Out. Interface назначаем первый порт.

Фаервол нат Микротик

Во вкладке Action выбираем masquerade:

Правило Ната Маскарад

Создаем еще одно схожее правило, где отличаться будет Out. Interface – там соответственно выбираем второй порт.

Или же используем следующий конфиг:

/ip firewall nat add action=masquerade chain=srcnat out-interface=ether1
/ip firewall nat add action=masquerade chain=srcnat out-interface=ether2

Переключение интернет-канала с основного провайдера на резерв

Нередко в организациях можно встретить использование одного интернет-канала с лучшей скоростью в качестве основного, а дополнительное интернет-подключение проведено лишь в качестве резерва. Если по какой-то причине пропадает связь с 1-м провайдером, происходит переключение на резерв – а когда связь восстанавливается, трафик опять идет через основу.

В следующей инструкции расскажем, как автоматизировать данный процесс на микротике.

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

Откроем IP – Routes. Выберете нередактируемый маршрут и удалите его.

Микротик Маршрут

Изменим параметры маршрута второго интернет-подключения. Выставляем приоритет 2 в графе Distance.

Микротик Маршрут Дистанция

После этого отключите маршрут второго провайдера – его мы будем использовать лишь в случае проблем с первым маршрутом.

отключение маршрута

Добавим вручную маршрут первого провайдера. Для этого определим IP-адрес шлюза, его можно уточнить в IP – DHCP client. Открываете интерфейс и во вкладке Status находите строку Gateway.

Адрес шлюза

Теперь в меню IP – Routes добавим этот маршрут. Указываем в поле Gateway адрес, который узнали ранее, в графе Distance выставляем приоритет 1.

Маршут дистанция 1

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

Два провайдера в разных подсетях

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

Для начала сбросим Mikrotik на заводские настройки, подключившись к нему через программу Winbox: System — Reset Configuration, в открывшемся меню ставим галочки на No default configuration и Do not backup и нажимаем Reset configuration.

Сброс настроек микротик

Далее настраиваем наши интернет-подключения: в первом порту будет динамика, во втором – статика.

Настраиваем первый порт: в меню IP – DHCP Client добавляем новое подключение, назначив интерфейс ether1, а в строке Add Default Route выбираем no.

DHCP клиент

Можно поступить проще, введя на микротике в New Terminal данную команду:

/ip dhcp-client add add-default-route=no interface=ether1 disabled=no

DHCP клиент настройка через терминал

Далее настроим второй порт на статику: в меню IP – Addresses добавляем новый адрес с указанием нужного порта.

Адрес на порту микротика

Также не забываем указать адрес DNS сервера (IP – DNS):

ДНС сервер микротика

Или же введите в New Terminal следующий конфиг (указав вашу адресацию):

/ip address add address=192.168.2.5/24 interface="ether2" network=192.168.2.0
/ip dns set allow-remote-requests=yes servers=8.8.8.8

Теперь создадим два бриджа – подключенные к BRIDGE1 устройства будут использовать интернет-канал первого провайдера (динамика), а подключенные к BRIDGE2 – второго провайдера соответственно.

Добавим два бриджа

Конфиг для New Terminal:

/interface bridge add name= BRIDGE1
/interface bridge add name= BRIDGE2

Добавим в эти бриджи желаемые порты (мы в примере хотим, чтобы пользователи, подключающиеся через Wi-Fi, «ходили» в интернет через первого провайдера, остальные порты микротика будут относиться ко 2 провайдеру):

Добавим порты в бриджы

Конфиг для New Terminal:

/interface bridge port add bridge=BRIDGE1 interface=wlan1
/interface bridge port add bridge=BRIDGE2 interface=ether3
/interface bridge port add bridge=BRIDGE2 interface=ether4
/interface bridge port add bridge=BRIDGE2 interface=ether5

Не забываем включить Wi-Fi интерфейс, по умолчанию он выключен.

Сделаем это с помощью следующего конфига, не забывая изменить название сети (SSID) и пароль (wpa2-pre-shared-key) на желаемые:

/interface wireless security-profiles add authentication-types=wpa2-psk management-protection=allowed mode=dynamic-keys name=profile1 wpa2-pre-shared-key=12345678

/interface wireless set wlan1 mode=ap-bridge ssid=work default-forwarding=no disabled=no security-profile=profile1

Следующий шаг — добавление желаемой адресации для созданных бриджей и настройка DHCP Server локальной сети. Используйте наш конфиг, заменив в нем при необходимости адресации на нужные вам:

/ip pool
add name=POOL1 ranges=192.168.1.2-192.168.1.100
add name=POOL2 ranges=10.20.1.2-10.20.1.100
/ip address
add address=192.168.1.1/24 interface=BRIDGE1 network=192.168.1.0
add address=10.20.1.1/24 interface=BRIDGE2 network=10.20.1.0
/ip dhcp-server
add address-pool=POOL1 disabled=no interface=BRIDGE1 name=DHCP1
add address-pool=POOL2 disabled=no interface=BRIDGE2 name=DHCP2
/ip dhcp-server network
add address=10.20.1.0/24 dns-server=8.8.8.8 gateway=10.20.1.1 netmask=24
add address=192.168.1.0/24 dns-server=8.8.8.8 gateway=192.168.1.1 netmask=24

Данные настройки применяются в следующих разделах:

IP – Pool

Пул рабочей сети

IP – Addresses

Адресация рабочей сети

IP – DHCP Server

DHCP сервер для бриджей

IP – DHCP Server – Networks

DHCP сервер сети

Далее настраиваем NAT, чтобы устройства, подключенные к локальной сети, могли выходить в интернет. В IP – Firewall – NAT добавим правило. Во вкладке General в графе Chain выбираем srcnat, в Out. Interface назначаем первый порт.

Настройка фаервола НАТ

Во вкладке Action выбираем masquerade:

Настройка  Нат маскараде

Создаем еще одно схожее правило, где отличаться будет Out. Interface – там соответственно выбираем второй порт.

Или же используем следующий конфиг:

/ip firewall nat add action=masquerade chain=srcnat out-interface=ether1
/ip firewall nat add action=masquerade chain=srcnat out-interface=ether2

Далее создадим два списка для пулов ip-адресов устройств, которые будут подключаться с 1 и 2 провайдера – эти списки нам понадобятся для маркировки трафика. IP – Firewall – Address Lists, списки назовем для удобства LIST1 и LIST2:

два списка для пулов ip-адресов

Настройка с конфигом (не забываем выставить адресацию в соответствии с созданным ранее пулом):

/ip firewall address-list
add address=192.168.1.2-192.168.1.100 list=LIST1
add address=10.20.1.2-10.20.1.100 list=LIST2

Следующий шаг – маркировка трафика. IP – Firewall – Mangle, добавляем маркировку трафика для первого провайдера: во вкладке General в графе Chain указываем prerouting:

Маркировка трафика микротик

Вкладка Advanced, в графе Src. Address List выбираем ранее созданный LIST1:

Маркировка трафика 1 списка

Вкладка Action, в графе Action выбираем mark routing, а в графе New Routing Mark прописываем маршрут первого провайдера — isp1.

Маркировка трафика первого маршрута

Создаем еще одно правило для маркировки трафика уже соответственно для второго провайдера, где выбираем адресацию LIST2 и в маршруте прописываем isp2.

Конфиг для быстроты:

/ip firewall mangle
add action=mark-routing chain=prerouting new-routing-mark=isp1 src-address-list=LIST1
add action=mark-routing chain=prerouting new-routing-mark=isp2 src-address-list=LIST2

Теперь осталось лишь создать маршруты для работы наших интернет-подключений. Открываем вкладку IP – Routes, добавляем маршрут для первого провайдера. Так как в примере мы используем динамическое подключение,  для начала нужно узнать IP-адрес шлюза. Его проверяем в IP – DHCP client. Открываете интерфейс и во вкладке Status находите строку Gateway.

Адрес шлюза

Добавим в  IP – Routes этот маршрут. Указываем в поле Gateway адрес, который узнали ранее, в графе Distance выставляем приоритет 1, в графе Routing Mark выбираем isp1.

Маршрут с маркированным трафиком

Добавляем маршрут второго провайдера (в нашем примере это статика). IP-адрес нашего шлюза 192.168.2.254, соответственно, прописываем его в графе Gateway, выставляем приоритет 1 в Distance, в Routing Mark выбираем isp2.

Маршрут с маркированным трафиком второго провайдера

Также добавим еще два маршрута с этими же шлюзами, у первого провайдера выставим приоритет 10, у второго – 20. Эти правила нужны на случай, если какой-либо трафик будет без маркеров, например, трафик самого микротика:

Маршруты с маркированным трафиком для разных провайдеров

Конфиг для быстрой настройки (не забываем указать IP-адреса ваших шлюзов):

/ip route
add distance=1 gateway=10.78.40.254 routing-mark=isp1
add distance=1 gateway=192.168.2.254 routing-mark=isp2
add distance=10 gateway=10.78.40.254
add distance=20 gateway=192.168.2.254

Работа двух независимых друг от друга интернет-подключений настроена.

В этой статье описана самая полная инструкция, как настроить роутер MikroTik на два провайдера.

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

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

Описание подключений

В примере мы будем использовать роутер MikroTik RB951Ui-2HnD.

В 1-ый порт роутера подключен кабель от 1-го провайдера, во 2-ой порт подключен кабель от 2-го провайдера, порты 3-5 и Wi-Fi используются для подключения компьютеров локальной сети.

1-й порт будет настроен на динамическое получение сетевых настроек от провайдера по DHCP. Провайдер выдает роутеру динамический IP-адрес 10.10.10.10

2-й порт будет настроен вручную на статический IP-адрес 20.20.20.20, шлюз 20.20.20.1 и маску 255.255.255.0

Сброс конфигурации по умолчанию

С помощью программы Winbox сбрасываем заводскую конфигурацию по умолчанию, чтобы настроить роутер MikroTik на два провайдера с нуля:

1. Откройте меню System — Reset Configuration;
2. Поставьте галочку No Default Configuration;
3. Нажмите Reset Configuration.

4. Далее нажмите кнопку Yes.

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

Настройка 1-го WAN порта

Настраиваем 1-й порт на динамическое получение сетевых настроек от провайдера по DHCP.

  1. Откройте меню IP — DHCP Client;
  2. Нажмите кнопку Add (синий крестик);
  3. В появившемся окне в списке Interface выберите интерфейс ether1;
  4. Нажмите кнопку OK.

Теперь мы получили IP адрес от провайдера, который отображается в столбце IP Address.

Проверим, что есть подключение к интернет. Откройте меню New Terminal и введите команду ping ya.ru. Как видите, пинг есть.

Настройка 2-го WAN порта

2-й порт настраиваем на статический IP-адрес 20.20.20.20, шлюз 20.20.20.1 и маску 255.255.255.0

  1. Откройте меню IP — Addresses;
  2. Нажмите кнопку Add (синий крестик);
  3. В появившемся окне в поле Address пропишите статический IP адрес / маску подсети 20.20.20.20/24 ;
  4. В списке Interface выберите интерфейс ether2;
  5. Нажмите кнопку OK.

Настоим IP-адрес интернет шлюза:

  1. Откройте меню IP — Routes;
  2. Нажмите кнопку Add (синий крестик);
  3. В появившемся окне в поле Gateway пропишите IP адрес шлюза 20.20.20.1;
  4. Нажмите кнопку OK.

Добавим IP-адрес DNS сервера:

  1. Откройте меню IP — DNS;
  2. В поле Servers пропишите IP адрес DNS сервера, например 8.8.8.8;
  3. Поставьте галочку Allow Remote Requests;
  4. Нажмите кнопку OK.

Проверим, что есть подключение к интернет. Отключите кабель первого провайдера, откройте меню New Terminal и введите команду ping ya.ru.

Пинги идут, значит все настроено правильно. Можно подключить кабель первого провайдера обратно.

Настройка LAN портов 3-5 и Wi-Fi

LAN порты 3-5 будут объединены с Wi-Fi интерфейсом в единую локальную сеть, к которой будут подключаться компьютеры.

Объединяем LAN порты 3-5 в свитч

  1. Откройте меню Interface;
  2. Сделайте двойной щелчок мыши по интерфейсу ether4;
  3. В списке Master Port выберите ether3 (главный порт нашего свитча);
  4. Нажмите кнопку ОК.

Повторите тоже самое для интерфейса ether5.

Напротив портов ether4 и ether5 появится буква S (Slave — ведомый).

Создаем интерфейс Bridge-local и объединяем в нем LAN порты и Wi-Fi

Чтобы LAN порты 3-5 объединить с Wi-Fi в одну сеть, нужно создать bridge интерфейс, и добавить в него мастер порт свитча ether3 и Wi-Fi интерфейс wlan1.

Создаем интерфейс bridge-local:

  1. Откройте меню Bridge;
  2. Нажмите кнопку Add (синий крестик);
  3. В поле Name пропишите имя интерфейса bridge-local;
  4. Нажмите кнопку OK.

Добавляем главный порт свитча ether3 в bridge-local:

  1. Перейдите на вкладку Ports и нажмите кнопку Add (синий крестик);
  2. В списке Interface выберите главный ethernet порт свитча ether3;
  3. В списке Bridge выберите интерфейс bridge-local;
  4. Нажмите кнопку OK.

Добавляем Wi-Fi интерфейс в bridge-local:

  1. На вкладке Ports нажмите кнопку Add (синий крестик);
  2. В списке Interface выберите беспроводной интерфейс wlan1;
  3. В списке Bridge выберите интерфейс bridge-local;
  4. Нажмите кнопку OK.

Назначаем IP-адрес интерфейсу bridge-local:

  1. Откройте меню IP — Addresses;
  2. Нажмите кнопку Add (синий крестик);
  3. В поле Address введите IP-адрес и маску локальной сети 192.168.88.1/24;
  4. В списке Interface выберите интерфейс локальной сети bridge-local;
  5. Нажмите кнопку OK.

Настраиваем DHCP сервер локальной сети.

Чтобы компьютеры, подключенные к роутеру, получали сетевые настройки автоматически, настроим DHCP сервер:

1. Откройте меню IP — DHCP Server и нажмите кнопку DHCP Setup;

2. В списке DHCP Server Interface выберите bridge-local и нажмите Next;

3. В этом окне выбирается сеть для раздачи DHCP. Оставляем без изменений и нажимаем кнопку Next;

4. В следующем окне указывается адрес шлюза. Нажмите кнопку Next;

5. В этом окне прописывается диапазон IP адресов, которые будет раздавать DHCP сервер. Нажмите кнопку Next;

6. Далее вводятся адреса DNS серверов. Нажмите кнопку Next;

7. Здесь задается время резервирования IP адресов. Нажмите кнопку Next;

8. Настройка DHCP сервера успешно завершена. Нажмите кнопку OK.

Настройка Wi-Fi

Сначала включим Wi-Fi:

  1. Откройте меню Wireless;
  2. Нажмите левой кнопкой мыши на интерфейсе wlan1 и нажмите кнопку Enable (синяя галочка).

Создаем пароль для подключения к точке доступа MikroTik:

  1. Откройте вкладку Security Profiles и сделайте двойной щелчок левой кнопкой мыши по default;
  2. В появившемся окне в списке Mode выберите dynamic keys;
  3. Поставьте галочку напротив регистрации по протоколу WPA2 PSK;
  4. В поле WPA2 Pre-Shared Key введите пароль для подключения к Wi-Fi точке;
  5. Нажмите кнопку OK.

Настраиваем параметры Wi-Fi точки MikroTik:

  1. Откройте вкладку Interfaces и сделайте двойной щелчок левой кнопкой мыши на Wi-Fi интерфейсе wlan1, чтобы зайти в его настройки;
  2. Перейдите на вкладку Wireless;
  3. В списке Mode выберите режим работы ap bridge;
  4. В списке Band выберите 2GHz-B/G/N (в каких стандартах будет работать Wi-Fi точка);
  5. В списке Channel Width укажите ширину канала 20/40Mhz HT Above, чтобы беспроводные устройства смогли подключиться на максимальной скорости с шириной канала 40 МГц;
  6. В списке Frequency укажите, на какой частоте будет работать Wi-Fi;
  7. В поле SSID укажите имя Wi-Fi сети;
  8. Нажмите кнопку OK.

Настройка NAT

Чтобы компьютеры получили выход в интернет, необходимо настроить NAT.

Добавляем правило NAT для первого провайдера:

  1. Откройте меню IP — Firewall;
  2. Перейдите на вкладку NAT;
  3. Нажмите кнопку Add (синий крестик);
  4. В появившемся окне на вкладке General в списке Chain должно быть выбрано srcnat;
  5. В списке Out. Interface выберите интерфейс первого провайдера ether1;
  6. Перейдите на вкладку Action;

7. В списке Action выберите masquaerade;
8. Нажмите OK.

Добавляем правило NAT для второго провайдера:

  1. На вкладке NAT нажмите кнопку Add (синий крестик);
  2. В появившемся окне на вкладке General в списке Chain должно быть выбрано srcnat;
  3. В списке Out. Interface выберите интерфейс второго провайдера ether2;
  4. Перейдите на вкладку Action;

5. В списке Action выберите masquaerade;
6. Нажмите OK.

Теперь на подключенных к роутеру компьютерах должен появиться интернет. Проверьте это.

Настройка переключения интернет каналов между двумя провайдерами

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

У нас будет два маршрута, через которые может идти интернет трафик. Весь трафик будет идти по умолчанию через 1-го провайдера.

Если вдруг пропадет связь с 1-ым провайдером, то мы активируем 2-ой маршрут, и весь трафик пойдет через 2-го провайдера.

Как только восстановится связь через 1-го провайдера, мы деактивируем 2-ой маршрут, и весь трафик пойдет через 1-го провайдера.

Утилита Netwatch поможет пинговать ip-адрес в интернете и выполнять скрипты, если ip-адрес перестал пинговаться или снова начал. Она будет выполнять активацию и деактивацию маршрута.

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

  1. Откройте меню IP — Routes;
  2. Кликните левой кнопкой мыши по маршруту первого провайдера со шлюзом 10.10.10.1 unrechable;
  3. Нажмите кнопку удалить (красный минус).

Теперь изменим параметры маршрута второго провайдера:

  1. Сделайте двойной щелчок левой кнопкой мыши по маршруту второго провайдера;
  2. В поле Gateway должен быть указан шлюз второго провайдера 20.20.20.1;
  3. В поле Distance ставим приоритет 2;
  4. Нажмите кнопку Comment;

5. В поле напишите комментарий ISP2. Комментарий необходим для того, чтобы наши скрипты могли идентифицировать маршрут и активировать или деактивировать его.
6. Нажмите кнопку OK и в следующем окне еще раз OK.

7. Выберите маршрут второго провайдера, кликнув по нему левой кнопкой мыши, и деактивируйте, нажав кнопку с красным крестиком. После этого маршрут станет серого цвета.

Дальше нужно добавить маршрут первого провайдера заново, но прежде определим, какой IP-адрес шлюза выдает первый провайдер.

  1. Откройте меню IP — DHCP Client;
  2. Сделайте двойной щелчок левой кнопкой мыши на интерфейсе ether1;
  3. Перейдите на вкладку Status;
  4. Выпишите IP-адрес шлюза из поля Gateway. Он будет нужен при создании маршрута через первого провайдера.

Теперь добавляем маршрут через первого провайдера:

  1. Откройте меню IP — Routes;
  2. Нажмите кнопку добавить (синий плюсик);
  3. В поле Gateway укажите шлюз первого провайдера 10.10.10.1;
  4. В поле Distance ставим приоритет 3;
  5. Нажмите Comment;

6. В поле напишите комментарий ISP1.
7. Нажмите кнопку OK и еще раз OK в следующем окне.

3-й маршрут понадобится для того, чтобы сервер Google по умолчанию пинговался только через 1-го провайдера.

  1. Нажмите кнопку добавить (синий плюсик);
  2. В поле Dst. Address укажите IP-адрес сервера Google 8.8.4.4;
  3. В поле Gateway укажите шлюз первого провайдера 10.10.10.1;
  4. В поле Distance ставим приоритет 1;
  5. Нажмите Comment;

6. Напишите комментарий GOOGLE.
7. Нажмите кнопку OK и еще раз OK.

Также добавим в Firewall правило, которое запретит пинговать ip-адрес 8.8.4.4 через 2-го провайдера. Иначе утилита Netwatch подумает, что связь с 1-ым провайдером восстановилась, и будет постоянно переключать маршруты по кругу.

  1. Откройте меню IP — Firewall и перейдите на вкладку Filter Rules;
  2. Нажмите кнопку добавить (синий плюсик);
  3. В списке Chain выберите Output;
  4. В поле Dst. Address введите адрес сервера 8.8.4.4;
  5. В списке Out. Interface выберите ether2;
  6. Перейдите на вкладку Action;

7. В списке Action выберите Drop;
8. Нажмите кнопку OK.

Netwatch будет проверять связь с интернетом путем пингования сервера Google с IP-адресом 8.8.4.4. Как только сервер перестанет пинговаться, выполнится скрипт, который активирует 2-й маршрут и трафик пойдет через 2-го провайдера. Как только связь через 1-го провайдера восстановится, то выполнится другой скрипт, который деактивирует 2-й маршрут и трафик пойдет через 1-го провайдера.

  1. Откройте меню Tools — Netwatch;
  2. Нажмите кнопку добавить (синий плюсик);
  3. В поле Host укажите сервер Google 8.8.4.4, который утилита будет пинговать;
  4. В поле Interval укажите интервал времени 00:00:05, через который будет пинговаться сервер. Для отладки работы скриптов поставим небольшой интервал 5 секунд. После отладки переключения между двумя провайдерами увеличим интервал до 30 секунд.
  5. Перейдите на вкладку Down;

6. На вкладке Down вставляем скрипт /ip route enable [find comment=»ISP2″] Этот скрипт будет активировать маршрут через второго провайдера, если перестанет пинговаться сервер Google;
7. Перейдите на вкладку Up;

8. На вкладке Up вставляем скрипт /ip route disable [find comment=»ISP2″] Этот скрипт будет деактивировать маршрут через второго провайдера, если восстановится связь через первого провайдера;
9. Нажмите кнопку OK.

Проверка переключения интернета между двумя провайдерами

Проверим, как работает переключение между двумя провайдерами.

1. Откройте меню IP — Routes. Маршрут второго провайдера должен быть серого цвета, т.е. не активен;

2. Отсоедините от роутера кабель 1-го провайдера;
3. В Routes маршрут второго провайдера должен активироваться.

4. Проверьте, что на компьютерах есть интернет.
5. Теперь подключаем кабель первого провайдера обратно.
6. В Routes маршрут второго провайдера должен деактивироваться.

7. Проверьте, что на компьютерах есть интернет.

Настройка роутера MikroTik на два провайдера работает правильно. Теперь можно увеличить интервал пингования сервера Google.

  1. Откройте меню Tools — Netwatch;
  2. Сделайте двойной щелчок левой кнопкой мыши по 8.8.4.4;
  3. На вкладке Host в поле Interval укажите интервал времени 00:00:30 — 30 секунд.
  4. Нажмите кнопку OK.

На этом настройка маршрутизатора Микротик на два провайдера завершена.

© technotrade

Mikrotik-2-ISP-Load-Balancing-000.pngКак мы уже говорили, сегодня очень многие рабочие процессы прямо зависят от наличия доступа в интернет, поэтому несколько каналов доступа — это не прихоть и не роскошь, а насущная необходимость. Одной из первых задач, которые решаются несколькими каналами, является отказоустойчивость, но потом возникают иные вопросы, а именно полноценное использование двух каналов, ведь это совсем не дело если оплаченный резервный канал простаивает. Поэтому в данной статье мы разберем методы балансировки каналов на оборудовании Mikrotik и рассмотрим связанные с этим проблемы и способы их решения.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Сразу начнем с того, что балансировка и обеспечение отказоустойчивости — это две не связанные друг с другом задачи, хотя очень часто их рассматривают совместно, что только вносит дополнительную путаницу. Обработка отказа предусматривает переключение каналов при отказе одного из них, а балансировка распределяет трафик между ними. Поэтому и рассматривать мы их будем раздельно, хотя и коснемся немного вопроса отказоустойчивости, чтобы у вас было понимание как совместить одно с другим.

Тема балансировки тесно связана с маршрутизацией и маркировкой трафика, достаточно сложными для начинающих, поэтому мы советуем внимательно читать и пытаться понять прочитанное, бездумно повторить инструкции в данном случае скорее всего не получится. Также из-за сложности информации часть настроек мы будем давать исключительно в виде консольных команд, особенно выполняющих повторяющиеся и второстепенные задачи. Будем считать, что вы знаете, как выполнить аналогичные действия в WinBox.

Данная статья предназначена для RouterOS 6.x

Во всех примерах ниже будет рассматриваться следующая схема, ее же мы использовали в предыдущей статье цикла. Но здесь во внутренней сети у нас появился дополнительный узел — условный веб-сервер, который должен быть доступен сразу на обоих внешних адресах.

Mikrotik-2-ISP-Load-Balancing-001.pngА начнем мы с необходимого теоретического минимума, без которого настройка балансировки выльется в непонятные камлания с непредсказуемым результатом.

Общие вопросы, проблемы и решения

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

Второй момент, который связан с протоколами прикладного уровня, в рамках одного сеанса которых могут быть созданы несколько соединений. Если бездумно балансировать по соединениям, то может получиться так, что рамках одного сеанса мы получим соединения с разными адресами источниками. В ряде случаев это не критично, а в других может доставить ряд существенных неудобств, особенно если на другой стороне существует привязка сессии к IP-адресу. Наиболее критично это для финансовых приложений, например, онлайн-банков, в лучшем случае это приведет к постоянной необходимости заново аутентифицироваться в личном кабинете, в худшем — стать причиной блокировки доступа.

Также могут возникнуть проблемы с IPsec, туннелями, VPN и т.д., т.е. со всем тем, что чувствительно к IP-адресу противоположного узла.

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

Следующая сложность — проброс портов и собственные сервисы роутера. Мы всегда должны отправлять ответ на тот интерфейс, с которого пришел запрос, а, следовательно должны исключить такие соединения из балансировки. Это решается дополнительной маркировкой и всегда должно делаться в первую очередь.

Предварительная настройка роутера

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

Mikrotik-2-ISP-Load-Balancing-002.png

Важно! Во время выполнения операций с настройкой маршрутов у вас кратковременно пропадет доступ в интернет. Поэтому все указанные действия следует выполнять имея физический доступ к устройству.

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

Затем создайте второе правило маскарадинга или SNAT в разделе IP — Firewall — NAT для выхода в интернет через второй интерфейс, а также продублируйте для него все правила проброса портов.

Примерно это будет выглядеть так для маскарадинга, где 192.168.111.0/24 — диапазон внутренней сети:

/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1 src-address=192.168.111.0/24
add action=masquerade chain=srcnat out-interface=ether3 src-address=192.168.111.0/24

И так для проброса портов, в данном случае 192.168.111.152 внутренний адрес условного веб-сервера:

/ip firewall nat
add action=dst-nat chain=dstnat dst-address=192.168.3.107 dst-port=80 \
in-interface=ether1 protocol=tcp to-addresses=192.168.111.152 to-ports=80
add action=dst-nat chain=dstnat dst-address=192.168.233.182 dst-port=80 \
in-interface=ether3 protocol=tcp to-addresses=192.168.111.152 to-ports=80

Отличия в правилах мы выделили, как видно правила маскарадинга отличаются только интерфейсом выхода, а правила проброса портов — адресом назначения пакетов, в качестве которых используются внешние адреса роутера. В Winbox можете просто скопировать текущее правила и изменить в них указанные критерии.

Таблицы маршрутизации

Все указанные ниже действия мы будем делать в IP — Routes, перейдем туда и сначала заполним основную (main) таблицу маршрутизации, которая будет использоваться по умолчанию, если никакая иная таблица не указана. Добавим маршрут к первому провайдеру: Dst. Address — оставляем по умолчанию — 0.0.0.0/0, Gateway — указываем шлюз первого провайдера, в нашем случае 192.168.3.1 и устанавливаем административную дистанцию маршрута — Distance — 1.

Mikrotik-2-ISP-Load-Balancing-004.pngВ терминале это сделать еще проще:

/ip route
add distance=1 gateway=192.168.3.1

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

Затем создадим таблицы маршрутизации для каждого из провайдеров. Это делается точно также, как и для основной, но с обязательным указанием имени таблицы в поле Routing Mark, мы не будем придумывать ничего сложного и просто назовем наши таблицы ISP1 и ISP2. В качестве шлюзов — Gateway — указываем шлюзы соответствующих провайдеров.

Mikrotik-2-ISP-Load-Balancing-003.pngЛибо выполните в терминале:

/ip route
add check-gateway=ping distance=1 gateway=192.168.3.1 routing-mark=ISP1
add check-gateway=ping distance=1 gateway=192.168.233.2 routing-mark=ISP2

В результате мы имеем теперь три таблицы маршрутизации: основную — через нее будут работать все соединения по умолчанию, и две дополнительных, куда мы будем направлять маркированный трафик.

А как с отказоустойчивостью? А ее настраиваем любым желательным способом отдельно для каждой таблицы маршрутизации. Для этого можете воспользоваться нашей статьей:

Mikrotik и несколько провайдеров. Резервирование каналов

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

/ip route
add check-gateway=ping distance=1 gateway=192.168.3.1
add check-gateway=ping distance=2 gateway=192.168.233.2

add check-gateway=ping distance=1 gateway=192.168.3.1 routing-mark=ISP1
add check-gateway=ping distance=2 gateway=192.168.233.2 routing-mark=ISP1

add check-gateway=ping distance=1 gateway=192.168.233.2 routing-mark=ISP2
add check-gateway=ping distance=2 gateway=192.168.3.1 routing-mark=ISP2

Как видим таблицы main и ISP1 полностью повторяют друг друга и основным шлюзом (с меньшей дистанцией) в них первый провайдер, таблица ISP2, наоборот, использует основным шлюзом второго провайдера. Таким образом каждая из дополнительных таблиц при нормальной работе сети будет отправлять трафик через свой канал, а при аварии — через оставшийся рабочий.

Маркировка трафика для проброшенных портов

Как мы уже говорили выше при балансировке важно исключить из нее входящие соединения на проброшенные порты, так как ответ должен уходить в тот же канал, что и пришел запрос. Это можно сделать разными способами, чаще всего трафик маркируют по интерфейсу входа, но в этом случае в него попадает весь входящий трафик, в т.ч. и предназначенный роутеру, что заставляет вводить дополнительные правила для маркировки таких соединений. Но можно решить вопрос по-другому, более точечно.

Какой именно трафик, на какие именно порты и по какому протоколу приходит нам известно, поэтому будем выборочно маркировать только его. Все действия по маркировке мы будем выполнять в цепочке PREROUTING таблицы mangle, при этом помним, что правила обрабатываются в порядке очереди до первого терминирующего правила.

Переходим в IP — Firewall — Mangle и создаем следующее правило: Chain — prerouting, Dst Address — 192.168.3.107 — внешний адрес на канале первого провайдера, Protocol — tcp, Dst. Port — 80. Если проброшено несколько портов, то просто перечисляем их через запятую. В результате у вас должно получиться два правила, одно для протокола TCP, второе для UDP.

Mikrotik-2-ISP-Load-Balancing-005.pngНа вкладке Action выбираем действие mark connection, в поле New Connection Mark ставим марку ISP1-IN, т.е. входящие соединения через первого провайдера (название марки можете выбрать на собственное усмотрение), также обязательно ставим флаг Passthrough, чтобы пакет продолжил движение по таблице.

Mikrotik-2-ISP-Load-Balancing-006.pngБыстрее выполнить действия в терминале:

/ip firewall mangle
add action=mark-connection chain=prerouting dst-address=192.168.3.107 dst-port=80 \
new-connection-mark=ISP1-IN passthrough=yes protocol=tcp

Затем создаем аналогичное правило для входящих соединений второго провайдера, только указываем второй внешний IP адрес и ставим марку ISP2-IN.

Соединения мы промаркировали, теперь нужно направить трафик в нужные таблицы маршрутизации, поэтому ниже создадим следующее правило: Chain — prerouting, Src/ Address — 192.168.111.0/24, Connection Mark — ISP1-IN.

Mikrotik-2-ISP-Load-Balancing-007.pngНа закладке Action выбираем mark routing и в поле New Routing Mark указываем таблицу маршрутизации, в которую мы направляем трафик, в нашем случае ISP1, флаг Passthrough не ставим, данное правило будет для пакета терминирующим.

Mikrotik-2-ISP-Load-Balancing-008.pngВ терминале:

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=ISP1-IN new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24

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

Собственный трафик роутера

Эта настройка понадобится вам, если у вас на роутере есть публичные сервисы, которые должны быть доступны через обоих провайдеров, например, VPN-сервер. Обратите внимание, что это не касается проброшенных портов, а именно собственных служб роутера. Здесь у нас стоит точно такая же задача — отправить трафик в тот же канал, через который он пришел.

Здесь мы будем действовать более широко, критерием будет интерфейс входа, промаркируем входящий трафик следующим образом:

/ip firewall mangle
add action=mark-connection chain=prerouting in-interface=ether1 \
new-connection-mark=ISP1-IN passthrough=yes
add action=mark-connection chain=prerouting in-interface=ether3 \
new-connection-mark=ISP2-IN passthrough=yes

Нетрудно заметить, что в данные правила попадает весь входящий трафик, как собственный роутера, так и транзитный. А вот далее есть особенности. Выше мы маркировали пакеты в цепочке PREROUTING таблицы mangle, но исходящий трафик роутера туда не попадает, поэтому мы должны маркировать пакеты в двух местах. В OUTPUT для собственного трафика роутера:

/ip firewall mangle
add chain=output connection-mark=ISP1-IN action=mark-routing new-routing-mark=ISP1
add chain=output connection-mark=ISP2-IN action=mark-routing new-routing-mark=ISP2

И в PREROUTING для транзитного:

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=ISP1-IN new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24
add action=mark-routing chain=prerouting connection-mark=ISP2-IN new-routing-mark=ISP2 \
passthrough=no src-address=192.168.111.0/24

Эти правила точно также должны находиться в самом верху таблицы mangle и заменяют правила для проброшенного трафика.

Ручная балансировка каналов

Самый простой способ, в котором мы можем вручную указать какой именно трафик в какую таблицу маршрутизации направить. При этом для выделения этого трафика мы можем использовать любые критерии доступные в цепочке prerouting. В нашем примере мы будем использовать в качестве критерия адрес источника. Создадим в IP — Firewall — Address Lists два адресных листа ISP1 и ISP2, затем добавим в них IP-адреса ПК, которые будут выходить в сеть через первый и второй канал соответственно.

Mikrotik-2-ISP-Load-Balancing-009.pngИли:

/ip firewall address-list
add address=192.168.111.254 list=ISP1
add address=192.168.111.155 list=ISP2

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

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=ISP1 passthrough=yes src-address-list=ISP1

Данное правило промаркирует все соединения, адрес источник которых входит в лист ISP1 и не имеет других марок — критерий Connection Mark — no mark — маркой ISP1. Немного о последнем критерии, с его помощью мы маркируем только те соединения, которые не имеют уже установленной марки. Это сделано для того, чтобы избежать возможной перемаркировки пакетов. И хотя в нашей конфигурации в данном месте таких быть не должно лучше все же подстраховаться на будущее.

Таким же образом маркируем соединения для второго провайдера на основании адресов из второго списка.

Затем перейдем к маршрутизации, создадим правило, которое будет направлять трафик, промаркированный как ISP1 в первую таблицу маршрутизации:

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24

Здесь же создадим правило для второй таблицы маршрутизации.

В результате полный набор правил будет выглядеть так:

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=ISP1 passthrough=yes src-address-list=ISP1
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=ISP2 passthrough=yes src-address-list=ISP2

add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24
add action=mark-routing chain=prerouting connection-mark=ISP2 new-routing-mark=ISP2 \
passthrough=no src-address=192.168.111.0/24

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

Балансировка NTH (по соединениям)

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

  • Маркировать новые соединения по принципу NTH
  • Добавлять адрес источник промаркированного соединения в список
  • В начале таблицы Mangle перехватываем трафик и принудительно маркируем на основании списков

Ниже будем рассматривать сразу готовое решение, начнем с перехвата трафика, для этого добавим уже известное нам по прошлому методу правило:

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=ISP1 passthrough=yes src-address-list=ISP1

Затем продублируем его для списка второго провайдера и направим маркированный трафик в нужные таблицы маршрутизации:

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24

По сути, мы продублировали набор правил для ручной балансировки, но есть одно существенное отличие, если тогда мы формировали списки вручную, то теперь будем делать это динамически. Еще ниже добавляем следующее правило для маркировки соединений: Chain — prerouting, Src. Address — 192.168.111.0/24, Connection Mark — no mark, Сonnection state — new:

Mikrotik-2-ISP-Load-Balancing-010.png

Еще раз обращаем внимание, что мы маркируем только новые соединения, адрес источника которых — адреса локальной сети и которые не имеют других марок.

Затем переходим на закладку Extra и в разделе Nth ставим Every 2, Packet 1 — это означает что под условия будет попадать каждый первый пакет из двух.

Mikrotik-2-ISP-Load-Balancing-011.pngНа закладке Action выбираем mark connection, New Connection Mark — ISP1 и ставим флаг Passthrough.

В терминале:

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new \
new-connection-mark=ISP1 nth=2,1 passthrough=yes src-address=192.168.111.0/24

Затем аналогичное правило для второго провайдера, только в Nth ставим Every 2, Packet 2 или nth=2,2 для терминала.

Так как флаг Passthrough установлен — пакет идет дальше, следующим шагом будет добавление адреса источника в соответствующий список. Для этого добавим следующее правило: Chain — prerouting, Src/ Address — 192.168.111.0/24, Сonnection Mark — ISP1:

Mikrotik-2-ISP-Load-Balancing-012.pngПереходим в Actions и указываем действие add src to address list, в поле Address List указываем список первого провайдера ISP1, ниже указываем срок действия записи, а нашем случае 8 часов. Теперь после выполнения балансировки все соединения этого узла будут закреплены за выбранным каналом на 8 часов, срок действия записи можете указать по собственному усмотрению.

Mikrotik-2-ISP-Load-Balancing-013.pngВ терминале:

/ip firewall mangle
add action=add-src-to-address-list address-list=ISP1 address-list-timeout=8h \
chain=prerouting connection-mark=ISP1 src-address=192.168.111.0/24

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

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24

Повторяем указанный набор правил для второго провайдера.

В результате у нас получится:

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=ISP1 passthrough=yes src-address-list=ISP1
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=ISP2 passthrough=yes src-address-list=ISP2

add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24
add action=mark-routing chain=prerouting connection-mark=ISP2 new-routing-mark=ISP2 \
passthrough=no src-address=192.168.111.0/24

add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new \
new-connection-mark=ISP1 nth=2,1 passthrough=yes src-address=192.168.111.0/24
add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new \
new-connection-mark=ISP2 nth=2,2 passthrough=yes src-address=192.168.111.0/24

add action=add-src-to-address-list address-list=ISP1 address-list-timeout=8h \
chain=prerouting connection-mark=ISP1 src-address=192.168.111.0/24
add action=add-src-to-address-list address-list=ISP2 address-list-timeout=8h \
chain=prerouting connection-mark=ISP2 src-address=192.168.111.0/24

add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24
add action=mark-routing chain=prerouting connection-mark=ISP2 new-routing-mark=ISP2 \
passthrough=no src-address=192.168.111.0/24

Внимательный читатель заметит, что у нас появилось два одинаковых блока с действием mark routing и сразу возникает резонный вопрос: а нельзя ли обойтись одним. Можно, оставив нижний, но при этом нужно учитывать, что большая часть трафика будет промаркирована именно первыми правилами, основываясь на нахождении адреса источника в списке и поэтому дальнейшее прохождение пакетов по цепочке является нежелательным с точки зрения производительности. Поэтому первый блок сразу отправляет пакеты в нужную таблицу маршрутизации прерывая их дальнейшее прохождение вниз по правилам.

Теперь некоторое время поработаем и заглянем в списки, как видим узлы равномерно распределены по каналам и добавлялись туда строго по очереди (обратите внимание на колонку с временем добавления):

Mikrotik-2-ISP-Load-Balancing-014.pngЕсли вам нужно, чтобы какой-то узел постоянно работал через один и тот же канал, просто добавьте его в нужный список вручную.

Следующий вопрос: как быть при разной пропускной способности каналов. Допустим ISP1 предоставляет канал в 100 Мбит/с, а ISP2 только 50 Мб/с. В таком случае нам нужно изменить условия балансировки, как показывают несложные математические вычисления, вместо балансировки 1/2 нам нужно балансировать 1/3. Т.е. в условиях Nth ставим Every 3, а затем два пакета маркируем для первого провайдера, а третий для второго.

add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new \
new-connection-mark=ISP1 nth=3,1 passthrough=yes src-address=192.168.111.0/24
add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new \
new-connection-mark=ISP1 nth=3,2 passthrough=yes src-address=192.168.111.0/24
add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new \
new-connection-mark=ISP2 nth=3,3 passthrough=yes src-address=192.168.111.0/24

Никакие другие правила данное изменение не затрагивает и больше изменять ничего не нужно.

Балансировка PCC (per connection classifier)

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

Начнем. Прежде всего добавим правило маркировки соединений, маркировать мы все также будем трафик с адресами источника Src. Address — 192.168.111.0/24 и не имеющих других марок Connection Mark — no mark. Только на закладке Advanced добавим критерий Per Connection Classifer — src. address 2/0.

Это означает что в качестве критерия классификации мы выбираем адрес источник (доступны также адрес и порт источника, адрес назначения, адрес и порт назначения, оба адреса и т.д.) на основании которого вычисляется 32-битный хеш, затем этот хеш делится на указанное в числителе дроби число и остаток сравнивается со знаменателем, при совпадении происходит срабатывание правила. Так как делим мы на 2, то возможные остатки у нас 0 и 1, для первого провайдера указываем ноль и присваиваем соединению метку ISP1, а чтобы пакет пошел дальше не забываем про Passthrough.

Mikrotik-2-ISP-Load-Balancing-015.pngАналогичное правило создаем и для второго провайдера, только в критерии ставим в знаменатель остаток 2. Если нам нужно балансировать каналы в иной пропорции, то можем использовать иные параметры, так повторяя указанный выше пример с каналами 100 Мбит/с и 50 Мбит/с следует использовать числитель 3 и знаменатели 0,1,2. Правил будет также три, два из них должны ставить метку ISP1, одно — ISP2.

Добавить правило в терминале можно так:

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark new-connection-mark=ISP1 \
passthrough=yes per-connection-classifier=src-address:2/0 src-address=192.168.111.0/24

Затем ниже добавляем правила направляющие промаркированный трафик в нужную таблицу маршрутизации, пример для первого провайдера:

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24

Полный набор правил будет выглядеть так:

/ip firewall mangleadd action=mark-connection chain=prerouting connection-mark=no-mark new-connection-mark=ISP1 \
passthrough=yes per-connection-classifier=src-address:2/0 src-address=192.168.111.0/24
add action=mark-connection chain=prerouting connection-mark=no-mark new-connection-mark=ISP2 \
passthrough=yes per-connection-classifier=src-address:2/1 src-address=192.168.111.0/24

add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24
add action=mark-routing chain=prerouting connection-mark=ISP2 new-routing-mark=ISP2 \
passthrough=no src-address=192.168.111.0/24

Как видим, несмотря на более сложный алгоритм реализация этого способа гораздо проще, так как классификацию соединений берет на себя роутер и нам не нужно создавать дополнительные списки и правила.

Балансировка ECMP (equal cost multipath routing)

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

Прежде всего создадим еще одну таблицу маршрутизации и добавим в нее нулевой маршрут с несколькими шлюзами, если нужна балансировка в разных пропорциях, то следует добавить нужный шлюз несколько раз. Ниже показан пример для каналов 100 Мбит/с и 50 Мбит/с у первого и второго провайдера. Указанные шлюзы будут использоваться по кольцу (Round-robin). Обратите внимание, что новый маршрут мы поместили в новую таблицу mixed.

Mikrotik-2-ISP-Load-Balancing-016.pngВ терминале:

/ip route
add check-gateway=ping distance=1 gateway=\
192.168.3.1,192.168.3.1,192.168.233.2 routing-mark=mixed

Теперь поймаем все исходящие соединения локальной сети без марок и назначим им марку mixed:

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=mixed passthrough=yes src-address=192.168.111.0/24

И сразу завернем этот трафик в нужную таблицу маршрутизации:

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=mixed new-routing-mark=mixed \
passthrough=no src-address=192.168.111.0/24

Полностью конфигурация будет выглядеть так:

/ip route
add check-gateway=ping distance=1 gateway=\
192.168.3.1,192.168.3.1,192.168.233.2 routing-mark=mixed

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=mixed passthrough=yes src-address=192.168.111.0/24
add action=mark-routing chain=prerouting connection-mark=mixed new-routing-mark=mixed \
passthrough=no src-address=192.168.111.0/24

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

Другие сети за роутером

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

Первое, что приходит на ум — это создать дополнительный список, скажем dont_balance и добавить его дополнительным критерием к правилам маркировки соединения через Dst. Addreess List, но таких правил может быть много и дополнительный критерий увеличит нагрузку на роутер. Поэтому мы пойдем другим путем, а именно вспомним, что во всех правилах маркировки мы использовали критерий Connection Mark — no mark. Следовательно, нам достаточно добавить таким соединениям собственную марку, и они не будут маркироваться правилами балансировки.

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

Mikrotik-2-ISP-Load-Balancing-017.pngВ терминале создать и заполнить список можно так:

/ip firewall address-list
add address=192.168.0.0/16 list=dont_balance
add address=10.0.0.0/8 list=dont_balance

Теперь промаркируем входящие соединения из этих сетей в локальную сеть и исходящие из локальной во внутренние сети:

/ip firewall mangle
add action=mark-connection chain=prerouting dst-address-list=dont_balance \
new-connection-mark=LOCAL passthrough=yes src-address=192.168.111.0/24
add action=mark-connection chain=prerouting dst-address=192.168.111.0/24 \
new-connection-mark=LOCAL passthrough=yes src-address-list=dont_balance

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

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=LOCAL new-routing-mark=main passthrough=no

Эти правила должны располагаться в самом верху таблицы Mangle, выше всех других правил балансировки.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

  • Данные интернета теле2 для роутера
  • Два канала интернет в одном роутере
  • Два wifi роутера в одной квартире
  • Дальнобойный роутер для частного дома
  • Группировка портов в роутере ростелеком