Найти в Дзене

Mikrotik RB3011+SXT LTE6. Два провайдера. Резервирование каналов.

Появилась задачка обеспечить резерв для текущего интернет канала на одной из площадок компании. Текущий интернет канал не стабилен, периодически падает и решено было воспользоваться мобильным интернетом в качестве резервного. Благо, вышка мобильного оператора в нашей местности расположена очень близко. Итак, приобрели роутер Mikrotik SXT LTE6. Схема сети: RB-3011 eth1 - ip 45.45.45.100 - WAN eth2 - ip 10.0.0.81 - линк в сторону LTE eth3 ip 172.16.5.1 - локальная сеть SXT LTE6 eth 1 - ip 10.0.0.82 - линк в сторону RB-3011 Добавляем резервный маршрут на канал LTE (я использовал метрику 10) NAT будет осуществляться на RB3011 и SXT LTE6. Расписывать настройку сетевых интерфейсов не буду, в интернет куча материалов по первоначальной настройке оборудования mikrotik. Итак, нам необходимо резервировать основной канал провайдера и в случае его падения переключиться на резервный канал LTE. Проверку падения интернет-канал мы будет осуществлять "пингованием" узла сети Интернет. Для этого можно

Появилась задачка обеспечить резерв для текущего интернет канала на одной из площадок компании. Текущий интернет канал не стабилен, периодически падает и решено было воспользоваться мобильным интернетом в качестве резервного. Благо, вышка мобильного оператора в нашей местности расположена очень близко. Итак, приобрели роутер Mikrotik SXT LTE6.

Mikrotik SXT LTE6
Mikrotik SXT LTE6

Схема сети:

RB-3011

eth1 - ip 45.45.45.100 - WAN

eth2 - ip 10.0.0.81 - линк в сторону LTE

eth3 ip 172.16.5.1 - локальная сеть

SXT LTE6

eth 1 - ip 10.0.0.82 - линк в сторону RB-3011

-2

Добавляем резервный маршрут на канал LTE (я использовал метрику 10)

-3

NAT будет осуществляться на RB3011 и SXT LTE6.

Расписывать настройку сетевых интерфейсов не буду, в интернет куча материалов по первоначальной настройке оборудования mikrotik.

Итак, нам необходимо резервировать основной канал провайдера и в случае его падения переключиться на резервный канал LTE. Проверку падения интернет-канал мы будет осуществлять "пингованием" узла сети Интернет. Для этого можно было бы использовать встроенную утилиту Netwatch, но , помимо ее огромного плюса, простоты настройки, она имеет ряд минусов которые не дадут нам пространства для реализации"красивой" и правильной схемы переключения канала, а именно:

  • утилита Netwatch не позволяет указать с какого интерфейса нам осуществлять проверку доступности какого-либо узла.
  • нет возможности добавить несколько узлов для проверки
  • нет возможности указать сколько раз пинговать удаленный узел
  • при переключении на резервный канал тут же станет доступен узел который мы мониторим (этого можно избежать, но настройка усложнится добавлением маршрутов и правкой firewall)

Решено, вместо Netwatch будем использовать скрипт который будет выполнять мониторинг несколько узлов , вычислять сумму полученных ответов (в моем случае 2/3 от общего числа запросов). Скрипт стандартный, давно бродит по интернету и опубликован на многих форумах, но мною он доработан и добавлены кое-какие штуки о которых я расскажу ниже.

кол-во запросов ping

:local PingCount 3

Адреса узлов для проверки

:local google 8.8.8.8

:local yandex 77.88.8.8

:local mail 94.100.180.201

присваиваем переменным кол-во ответов

:local ResultGoogle [/ping count=$PingCount $Google interface=ether2]

:local Resultyandex [/ping count=$PingCount $yandex interface=ether2]

:local ResultMail [/ping count=$PingCount $mail interface=ether2]

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

:local NOROUTE [/ip route get [find comment=WAN] disable]

сравниваем кол-во полученных ответов и присваиваем переменной

:local INETOK false

:set INETOK (($ResultGoogle + $Resultyandex + $ResultMail) >= (2 * $PingCount))

:put "INETOK=$INETOK"

если нет доступности узлов и маршрут активен то отключаем маршрут WAN и очищаем активные сессии

if ($INETOK=false && $NOROUTE=false ) do={

/log error "NO CONNECT WAN result=$ResultGoogle + $Resultyandex + $ResultMail INETOK= $INETOK"

/ip route set [find comment="WAN"] disable=yes

/ip firewall connection remove [find where src-address~"172.16.5."]

}

если нет доступности узлов и маршрут НЕ активен то пропускаем

if ($INETOK=false&& $NOROUTE= true) do={

/log error "NO CONNECT skip result=$ResultGoogle + $Resultyandex + $ResultMail INETOK= $INETOK"

}

узлы доступны и НЕТ маршрута то переключаемся на основной канал и очищаем активные сессии

if ($INETOK=true && $NOROUTE= true ) do={

/log warning "CONNECT UP WAN result=$ResultGoogle + $Resultyandex + $ResultMail INETOK= $INETOK NOROUTE = $NOROUTE"

/ip route set [find comment="WAN"] disable=no

/ip firewall connection remove [find where src-address~"172.16.5."]

}

если узлы доступны и маршрут активен то пропускаем

if ($INETOK= true && $NOROUTE=false ) do={

/log warning "CONNECT UP skip result=$ResultGoogle + $Resultyandex + $ResultMail INETOK= $INETOK NOROUTE = $NOROUTE"

}

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

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

Ставим выполнение скрипта в планировщик Scheduler на выполнение с нужной вам периодичностью и все готово.

#mikrotik #lte routeros #4g интернет #сетевые технологии