Mikrotik failover LTE

В качестве вступления

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

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

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

Допущения

Предположения учебника следующие:
  • Быстрое обнаружение потери по первичному каналу связи;
  • Обнаружение увеличения времени задержки на основном канале и интерпретация его как проблемы;
  • Обнаружение отказов интернет-канала дальше, чем мой локальный шлюз у провайдера;
  • Обнаружение восстановления соединения основного канала;
  • Переключение с резервного канала на основной осуществляется с задержкой;
  • Полная автоматизация;
  • Использование существующего маршрутизатора MikroTik

Сетевая диаграмма

Mikrotik failover LTE Нажмите, чтобы увеличить!
Mikrotik failover LTE

Конфигурация сценария - Netwatch

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

/системный скрипт

add dont-require-permissions=no name=NetWatch-check owner=admin policy=\

reboot,read,write,policy,test source="#Здесь вы можете изменить значение.\r\

\n#количество времени в минутах, в течение которого ссылка BACKUP является предпочтительной.\r\

\n# позже мы проверим, работает ли основная ссылка должным образом.\r\

\n#\r\

\n:global nwwait 15;\r\

\n# Оставить без изменений.\r\

\n:global nwgw2;\r\

\n:tonum nwgw2;\r\

\n:local nwstatus;\r\

\n:local nwgwstatus;\r\

\nset nwgwstatus ([/tool netwatch get value-name=status [find comment=\

\"NetWatch\"]]);\r\

\nset nwstatus ([/ip route get value-name=distance number=[/ip route f\

ind comment=\"BACKUP\"]]);\r\

\n:if (\$nwstatus = \"6\") do={\r\

\nset nwgw2 (nwgw2 + 1)\r\

\n}\r\

\n:if ((\$nwgw2 > \$nwwait) and (\$nwgwstatus = \"up\")) do={ :log err\

or \"Master GW: OK\"\r\

\n/ip route set [find comment=\"BACKUP\"] distance=66;\r\

\nset nwgw2 (0)\r\

\n}\r\

\n"

add dont-require-permissions=no name=NetWatch owner=admin policy=\

reboot,read,write,test source="/log error \"Master GW: PROBLEM\"\r\

\n/ip route set [find comment=\"BACKUP\"] distance=6\r\

\n\r\

\n"

add dont-require-permissions=no name=NetWatch-init owner=admin policy=\

ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \

source="#количество проверок перед переключением соединения\r\

\n:global nwwait 20;\r\

\n"

Используемые сценарии:

NetWatch - сценарий, который будет выполняться в случае отказа основного канала связи

NetWatch-check - скрипт, временно проверяющий переключение обратно на основную ссылку, в этом скрипте мы можем определить, как долго ссылка BACKUP с момента переключения будет оставаться ведущей ссылкой, прежде чем мы проверим, работает ли уже основная ссылка должным образом. В ситуации по умолчанию это 15 минут.

Временная активация скриптов

Следующим шагом является определение времени выполнения сценариев.

/system scheduler

add interval=1m name=NetWatch on-event=\

"/system script run NetWatch-check\r\

\n" policy=\

ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \

start-date=apr/11/2020 start-time=17:31:44

Конфигурация Netwatch Mikrotik

Пришло время настроить инструмент Netwatch от Mikrotik. вместо A.B.C.D введите адрес шлюза по умолчанию основного канала. Мы можем указать значение тайм-аута, насколько чувствительным будет обнаружение отказа основного канала.

/tool netwatch

add comment=NetWatch down-script="/system script run NetWatch\r\

\n" host=A.B.C.D interval=5s timeout=100ms

Конфигурация маршрутизации

Наконец, необходимо настроить маршрутизацию, здесь мы используем трюк с расширенным маршрутом и проверкой доступности шлюза по умолчанию. Введите адрес шлюза по умолчанию основного канала вместо A.B.C.D и адрес шлюза по умолчанию резервного канала вместо E.F.G.H. BACKUP.

/ip-маршрут

add comment=MASTER distance=10 gateway=10.255.66.1

add comment=BACKUP distance=66 gateway=10.255.67.1

add check-gateway=ping distance=1 dst-address=10.255.66.1/32 gateway=

208.67.220.220 scope=10

add check-gateway=ping distance=1 dst-address=10.255.66.1/32 gateway=10

8.8.8.8 scope=10

add check-gateway=ping distance=1 dst-address=10.255.67.1/32 gateway=

208.67.222.222 scope=10

add check-gateway=ping distance=1 dst-address=10.255.67.1/32 gateway=

8.8.4.4 scope=10

add distance=1 dst-address=8.8.4.4/32 gateway=E.F.G.H scope=10

add distance=1 dst-address=8.8.8.8/32 gateway=A.B.C.D scope=10

add distance=1 dst-address=208.67.220.220/32 gateway=A.B.C.D scope=10

add distance=1 dst-address=208.67.222.222/32 gateway=E.F.G.H scope=10

Мы используем популярные ip-адреса dns-сервисов Google (8.8.8.8, 8.8.4.4) и OpenDNS (208.67.220.220, 208.67.222.222), которые мы проверяем на достижимость данным оператором. Если доступно, активируется шлюз по умолчанию для данного соединения.

Резюме и выводы

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

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

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

Диаграмма обхода отказа Mikrotik2 Нажмите, чтобы увеличить!
Диаграмма обхода отказа Mikrotik2
Диаграмма обхода отказа Mikrotik3 Нажмите, чтобы увеличить!
Диаграмма обхода отказа Mikrotik3

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

Для дальнейшего обсуждения этой темы, пожалуйста, посетите наш ФОРУМ, где вы можете поделиться своими настройками и комментариями по этой теме со всем сообществом.

Автор:

Wojciech Repiński

Товары из статьи

Срок действия сеанса истекает через:
Секунды
Вы выйдете из системы по истечении сеанса
Выберите другую страну или регион для совершения покупок на подходящем Вам языке.
Наш сайт использует куки-файлы (так называемые "cookie"-файлы). Более подробную информацию об этих файлах, а также о том, как мы обрабатываем Ваши персональные данные, Вы можете найти в нашей Политике конфиденциальности..
Избранное
Вы находитесь на странице для страны / региона:
Русский (RU)
Выберите другую страну или регион для совершения покупок на языке, который вам подходит.