*КУБ — полный комплекс облачных услуг!

Настройка резервного канала Mikrotik CHR с маркировкой трафика и уведомлением по электронной почте

MikroTik
Настройка резервного канала Mikrotik CHR с маркировкой трафика и уведомлением на почту

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

Для выхода в Интернет необходимо создать правило NAT для основного и резервного провайдера.

Налаштування правил NAT
Для виходу в інтернет

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

Маркируем входящий и исходящий трафик для провайдеров ISP1 и ISP2.

Меню IP – Firewall – Mangle – новое правило. Выбираем цепочку Prerouting, входной интерфейс ISP1. Маркируем соединение и задаем имя марки From-ISP1. Для оптимизации нагрузки выбираем только новые соединения.

Маркування трафіку
Маркуємо вхідний

Создаем маршрутизационную маркировку для созданной марки соединения From-ISP1.

Створюємо маркування
маркування роутингу

Маркируем правило маршрутизации output

Маркуємо правило
Маркуємо правило роутингу

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

По аналогии создаем и для второго. Должно получиться так:

ланцюжок output.
За аналогією створюємо і для другого

Настройка правил маршрутизации

Следующий этап — настройка правил и таблиц маршрутизации. Необходимо распределить трафик по соответствующим провайдерам. Создаем правило с src address первого оператора, вручную вписываем новую таблицу.

Налаштування Routing Rules
налаштування правил

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

Порядок має значення

А теперь пропустим трафик с маркером через соответствующие таблицы.

А тепер mark routing
mark routing випустимо

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

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

Створення таблиць маршрутизації
потрібно визначитися хто з них яку роль виконуватиме
активний завжди буде один

Открываем таблицу ISP1 и создаем маршрут по умолчанию с любой метрикой через шлюз провайдера.

Відкриваємо table ISP1

Аналогично и для таблицы ISP2

Аналогічно і для table ISP2

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

Обов’язково дамо коментарі

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

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

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

#Имя основного интерфейса

:global MainIf ether1

#Имя интерфейса отказоустойчивости

:global RsrvIf ether2

:local PingCount 1

:local PingTargets {GW1; 8.8.8.8: GW2}

: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″] distance]

:local RsrvGWDistance [/ip route get [find comment=”ISP2″] distance]

:put «MainGWDistance=$MainGWDistance»

:put “RsrvGWDistance=$RsrvGWDistance”

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

/ip route set [find comment=”ISP1″] distance=1

/ip route set [find comment=”ISP2″] distance=2

:put «переключился на основное интернет-соединение»

:log info “переключено на основное интернет-соединение”

;tool e-mail send to=”admin@cube-host.net” subject “Mikrotik переключился на основное интернет-соединение”

}

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

/ip route set [find comment=”ISP1″] distance=2

/ip route set [find comment=”ISP2″] distance=1

:put «переключено на резервное интернет-соединение»

:log info «переключено на резервное интернет-соединение»

;tool e-mail send to=”admin@cube-host.net” subject “Mikrotik переключился на резервное интернет-соединение”

}

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

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

Сохраните скрипт с именем dual_wan

Збережіть скрипт з іменем dual_wan

Проверяем работу в терминале командой
/system script run dual_wan

Перевіряємо роботу в терміналі командою

Если настроена почта, скрипт отправит письмо о переключении каналов.

Menu