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

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

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

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

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

Наша команда рекомендует изучитьНаша команда рекомендует изучить углубленный курс по администрированию сетевых устройств MikroTik В курсе много лабораторных работ по итогам которых вы получите обратную связь. После обучения вы получите диплом гос. образца РФ. Подробности и доступ к началу курса бесплатно тут.

В сегодняшнем примере мы будем настраивать 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». Теперь основываясь на этом примере можете создавать свои собственные конфигурации.

Вы хорошо разбираетесь в Микротиках? Или впервые недавно столкнулись с этим оборудованием и не знаете, с какой стороны к нему подступиться? В обоих случаях вы найдете для себя полезную информацию в углубленном курсе «Администрирование сетевых устройств MikroTik». В курсе много практических лабораторных работ по результату выполнения которых вы получите обратную связь. После окончания обучения вы получите диплом гос. образца РФ. Подробности и доступ к началу курса бесплатно тут.

Оцените статью
MikroTikLab
Добавить комментарий

  1. DM

    Сначала показалось, что всё логично и красиво.
    Хотел кучу своих правил маршрутизации переписать согласно этой статье и привести к такому же красивому виду.
    Однако, выяснилось, но поздно, что схема работает в полном объеме.
    Лучше бы сначала погонял на стенде и не словил бы этот косяк.
    Срочно пришлось возвращаться к старым правилам.

    1. Из внутренней сети (сетей, их несколько больше чем одна) внешние IP не пингуются. До применения этих правил всё пинговалось.
    2. Был проброс портов через DST-NAT на почтовый сервер с жесткой маршутизацией по альтернативной таблице через один из WAN Uplink-ов (правила маршрутизации Only in Table).
    Поле применения правил, описанных в этой статье, исходящая почта продолжала уходить по правильному Uplink-у, а входящая перестала приходить.
    3. Применение этих правил негативно не повлияло на кучу IPSec + GRE навешанных на Uplink-и разных провайдеров.

    Почему приведенная схема не работает буду разбираться в выходные.

    Ответить
    1. Артур Гарян автор

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

      Ответить
  2. Назар

    «Встроенных средств у Mikrotik нет (для проверки доступности интернета), и по этой причине будем использовать простенький скрипт ниже.»

    Netwatch же придумали…

    Ответить
    1. Артур Гарян автор

      Добрый день.
      А как вы будите через него проверять доступность на каждом ISP?

      Ответить
  3. Владимир

    Не большой вопрос, я правельно понимаю что если надо строить failover между 3 каналами то в скрипт надо будет просто больше интерфейсов натолкать?

    Ответить
    1. Артур Гарян автор

      Добрый день
      Да, но нужно так же логику его менять соответственно.
      Так же маркировку добавлять, таблицу и Route Rules

      Ответить
  4. Дмитрий

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

    Ответить
    1. Артур Гарян автор

      Добрый день
      Потому что через рекурсию нельзя делать доп фишки и чистить соединения (а с sip это актуально)
      Ну и рекурсию не все понимают)

      Ответить
  5. Mikan

    Добрый день, а есть ли пример настройки двух wan портов одновременно работающих? Т.е. во внутренней сети есть разные подсети которые работают каждая по своему каналу от магистрального провайдера. И нужно им указать кто куда будет ходить. Кто направо, а кто налево.

    Ответить
    1. Артур Гарян автор

      Добрый день
      Примера нет, но это делается через маркировку prerouting по подсетям в свои таблицы маршрутизации

      Ответить
  6. Александр

    Добрый день.
    Подскажите, пожалуйста, какое устройство является минимально необходимым для использования Dual WAN?
    Нужно реализовать переключение с основного провайдера на резервный при условии троекратной потери пинга с интервалом 3-5 секунд, а также обратное переключение при восстановлении соединения.

    Ответить
    1. Артур Гарян автор

      Добрый день
      Любой девайс может это, кроме свитчей css

      Ответить
Adblock
detector