MikroTik настройка Dual WAN

В этом руководстве мы затронем тему маркировки пакетов (mangle) и настройку резервирования интернет соединения Dual WAN на MikroTik как одну из важных тем. В маршрутизаторах Mikrotik данный функционал реализован через Mangle — используется для того чтобы пометить пакеты/соединения для дальнейшей их обработки очередями (простыми или деревьями), NAT правилами, таблицами маршрутизации или изменению таких параметров как:

  • TOS (DSCP);
  • TTL;
  • MSS;

На одном пакете/соединении может быть только одна метка

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

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

Схема сети

Предположим, что у нас имеется:

  • Широковещательная плоская 192.168.1.0/24;
  • Два белых статических IP адреса;
  • Один роутер;
  • Два свича;
  • RouterOS 6.48.1.

План Схема сети резервирование двух провайдеров на Mikrotik

Настройка правил NAT

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

Список NAT правил для разных провайдеров

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

Наша следующая задача, промаркировать трафик для каждого провайдера, на вход и на выход. Открываем на микротике IP – Firewall – Mangle и создаём новое правило.

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

Создаем первое правила Mangle для основного провайдера

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

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

 

Теперь займемся output. На основе коннекшен марки создаём правило роутинга.

Маркируем трафик наружу для ISP1

Последним правилом маркировки для ISP1 будет цепочка output.

 Создание правила маркировки на основе IP адреса

Для первого оператора метки заданы. По аналогии создаём и для второго, только придумываем другие имена меткам и в последнем правиле указываем соответствующий адрес.

Задаём соответствующий входящий интерфейс.

Маркирует трафик для второго провайдера

Создаём маркировку роутинга на основе connection mark.

Маркируем трафик для роутинга на резервного провайдера

И 2 правила на output.

Метим исходящий трафик

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

Список правил маркировки

Настройка Routing Rules

 

Следующий этап, это настройка правил и таблиц маршрутизации. Следует разнести трафик по соответствующим провайдерам. Создаём Rule с src address первого оператора, впишем вручную новую table.

Создаем первое правило маршрутизации

По аналогии и для второго провайдера.

Правила Route rules

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

 

Выбор таблицы маршрутизации для ЛВС

А теперь все наши mark routing выпустим через соответствующие таблички.

Распределение трафика по провайдерам

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

 

В основной таблице маршрутизации нужно создать 2 маршрута, основной и резервный. Для этого вам нужно определиться кто из них какую роль будет выполнять. Т.к. активный будет всегда один. У первого метрика 10.

Добавление маршрута в основную таблицу

У второго метрика 20.

Добавление default route с большей метрикой

Открываем table-ISP1 и создаём default route с любой метрикой через шлюз провайдера.

добавили маршрут в таблицу основного провайдера

Аналогично и для table-ISP2. Не перепутайте шлюзы.

 

Роут через ISP2

 

Чуть не забыл, обязательно дадим комментарии записям в main. Общий вид Route List следующий.

 

Обязательно даем комментарии на маршруты

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

Есть несколько способов отслеживания состояния. Один из них — это проверка провайдерского шлюза arp или ping запросами в самой настройке маршрута. Но он не эффективен, т.к. gateway может быть и доступен, а доступ в инет за ним нет. Как один из вариантов, проверять доступность на основе пинг запросов каких-либо крупных сервисов, которые доступны круглосуточно. Встроенных средств у Mikrotik нет, и по этой причине будем использовать простенький скрипт ниже.

#Main interface name

:global MainIf ether1

#Failover interface name

:global RsrvIf ether2

:local PingCount 1

:local PingTargets {77.88.8.8; 8.8.8.8}

:local host

:local MainIfInetOk false

:local RsrvIfInetOk false

:local MainPings 0

:local RsrvPings 0

foreach host in=$PingTargets do={

:local res [/ping $host count=$PingCount interface=$MainIf]

:set MainPings ($MainPings + $res)

:local res [/ping $host count=$PingCount interface=$RsrvIf]

:set RsrvPings ($RsrvPings + $res)

:delay 1

}

:set MainIfInetOk ($MainPings >= 1)

:set RsrvIfInetOk ($RsrvPings >= 1)

:put "MainIfInetOk=$MainIfInetOk"

:put "RsrvIfInetOk=$RsrvIfInetOk"

:local MainGWDistance [/ip route get [find comment=" ISP1-WAN-Route"] distance]

:local RsrvGWDistance [/ip route get [find comment=" ISP2-WAN-Route"] distance]

:put "MainGWDistance=$MainGWDistance"

:put "RsrvGWDistance=$RsrvGWDistance"

if ($MainIfInetOk && ($MainGWDistance >= $RsrvGWDistance)) do={

/ip route set [find comment="ISP1-WAN-Route"] distance=10

/ip route set [find comment="ISP2-WAN-Route"] distance=20

:put "switched to MAIN internet connection"

/log info "switched to MAIN internet connection"

/ip firewall connection remove [find]

}

if (!$MainIfInetOk && $RsrvIfInetOk && ($MainGWDistance <= $RsrvGWDistance)) do={

/ip route set [find comment="ISP1-WAN-Route"] distance=20

/ip route set [find comment="ISP2-WAN-Route"] distance=10

:put "switched to RESERVE internet connection"

/log info "switched to RESERVE internet connection"

/ip firewall connection remove [find]

}

Основные параметры, которые вам нужно будет исправить это:

  • :global MainIf ether1 – основной интерфейс;
  • :global RsrvIf ether2 – резервный интерфейс;
  • :local PingTargets {77.88.8.8; 8.8.8.8} – таргеты, которые будите мониторить;
  • :local MainGWDistance – переменная метрики для ISP1;
  • :local RsrvGWDistance – переменная метрики для ISP2;
  • Комментарий маршрут.

 Правим комментарии в скрипте

Добавляем данный скрипт в хранилище, даем имя check-internet.

Добавляем скрипт в Mikrotik

Тестируем работу через консоль.

Отлаживаем работу скрипта в роутерах Mikrotik

Как мы видим все отлично.

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

Добавляем задание в планировщик. Обязательно указываем интервал. В данном случае раз в 15 сек. Это самый минимальный рекомендуемый интервал, ниже ставить не советую.

Настройка запуска заданий Mikrotik

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

Проверка работоспособности

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

Автопереключение провайдера на Mikrotik

Если отключу блокировку, то все встаёт на свои места.

 

Основной канал включился автоматически

 

Вы можете прикрутить отправку письма вам на e-mail в случае переключения, или допустим полный сброс роутера))). Вот и все — в этой статье мы рассмотрели настройку настройка Dual WAN на MikroTik, для этого использовали маркировку трафика «mangle». Теперь основываясь на этом руководстве можете создавать свои собственные конфигурации.