Резервирование LTE через LTE в Mikrotik

Как я уже отмечал ранее у себя в блоге, мой основной и единственный источник Интернета в доме это LTE. К сожалению, в настоящее время тенденция такова, что операторов с публичными безлимитными тарифами уже не осталось (во всяком случае в моем регионе). В связи с этим пропала и возможность комбинировать безлимитный тарифный план LTE со скоростным LTE на двух модемах. Тем не менее, необходимость в резервном канале осталась, поэтому ниже небольшой скрипт, который поможет реализовать резервирование встроенного LTE модема с помощью внешнего USB модема.

Скрипт, расположенный ниже, является адаптацией вот этого материала (пожалуйста, ознакомьтесь, чтобы понимать принцип работы). Основное отличие между скриптами заключается в том, что в версии для двух LTE модемов переключение осуществляется не за счет отключения соответствующих интерфейсов, а за счет изменения параметра default-router-distance в профилях APN LTE.

:local PingCount 10;
:local CheckIp1 77.88.8.1;
:local CheckIp8 77.88.8.8;
:local Dist1 [/interface lte apn get [find name="LTE1"] default-route-distance];
:local Dist2 [/interface lte apn get [find name="default"] default-route-distance];
:local isp1 [/ping $CheckIp1 count=$PingCount interface="lte1"];
:local isp2 [/ping $CheckIp8 count=$PingCount interface="lte2"];
:if (($isp1 >=$isp2) && ($isp1=$PingCount)) do={
:if ($Dist1 != 4) do={
/interface lte apn set  default-route-distance=4 [find name="LTE1"];
/interface lte apn set  default-route-distance=5 [find name="default"];
:log warning "Set routes to LTE1";
}
}
:if (($isp1 < $isp2) && ($isp2=$PingCount)) do={
:if ($Dist2 != 4) do={
/interface lte apn set  default-route-distance=5 [find name="LTE1"];
/interface lte apn set  default-route-distance=4 [find name="default"];
:log warning "Set routes to LTE2";
}
}

Скрипт проверяет доступность DNS серверов Yandex через встроенный и USB модемы соответственно. В случае, количество успешных пингов сервера по первому каналу становится меньше чем на втором, но при этом по второму каналу все пинги успешные, то происходит изменение default-route-distance, что, в свою очередь, приведет к изменению таблицы маршрутизации. Обратное переключение со второго канала на первый происходит аналогично. Для автоматического обновления маршрутов в профиле APN должен быть активен пункт «Add Default Route». В этом скрипте нет сброса текущих соединений, т.к в моем случае этого не требуется. Проверка текущего значения default-route-distance нужна для того, чтобы переопределение маршрутов происходило только при изменении значения.

Для правильной работы скрипта у встроенного модема должен быть определен APN профиль с именем LTE1, а для USB — профиль default.

А на этом пока все. Надеюсь, кому-то это материал поможет.