В одном из моих офисов в качестве основоного маршрутизатора я использвую Mikrotik HAP AC^2. Основной провайдер периодически отваливается, поэтому мною было принято решение организовать резервный канал в виде LTE модема Мегафон M150-3, он же ZTE MF833V (на самом деле это роутер, но будем называть его модемом).
Что нужно сделать с Mikrotik? Для начала, нужно установить у основного гейтвея значение distance больше, чем у маршрута через модем. Например, у основного провайдера я установил distance 3.
Далее, я отключил автоматическую настройку DNS и route для модема, чтобы потом сделать это вручную с необходимыми мне параметрами:
/interface lte
apn set use-peer-dns=no numbers=0
apn set add-default-route=no numbers=0
Затем, добавил dhcp-клиент вручную, но уже без автоматического добавления маршрута:
/ip dhcp-client
add add-default-route=no disabled=no interface=lte1
Добавил гугловский DNS, на случай отвала DNS от основного провайдера:
/ip dns
set servers=8.8.8.8
Запретил доступ ко второму гугловскому DNS через модем, это нужно чтобы проверять работоспособность основного провайдера:
/ip firewall filter
add action=drop chain=output dst-address=8.8.4.4 out-interface=lte1 comment=failover
Добавил NAT через модем:
/ip firewall nat
add action=masquerade chain=srcnat comment="nat for modem" out-interface=lte1
Добавил два маршрута, один из которых отарвляет весь траффик через модем, и есго distance ниже, чем у основного провайдера, то есть траффик в первую очередь пойдёт через модем, поэтому, пока основной провайдер работает, то этот маршрут выключен. Второе правило — для того, чтобы траффик ко второму гугловскому DNS ходил исключительно через основного провайдера (это нужно для проверки его работы). Замените gateway=192.168.11.254 на гейтвей своего провайдера здесь. А 192.168.0.1 — это стандартный IP модема:
/ip route
add comment=ISP2 disabled=yes distance=2 gateway=192.168.0.1
add comment=failover distance=1 dst-address=8.8.4.4/32 gateway=192.168.11.254
И напоследок я добавил два скрипта в netwatch. Первый — проверяет доступность второго гугловского DNS (который выше я сделал доступным только через осовного провайдера, соответственно если сервер не отвечает, значит провайдер не работает), и в случае недоступности — активирует маршрут с комментарием ISP2, то есть маршрут через модем. Отличительной чертой конкретно мегафоновской реализации этого модема является то, что у него отключен автоконнект, и нет веб-панели управления. Для того, чтобы модем соединился с сетью и начал передавать траффик Mikrotik будет отправлять на него POST-запрос, который инициируеет подключение к сети. Для этого я и сделал второй скрипт. Как только IP модем становится доступным — он получает запрос на подключение к сети:
/tool netwatch
add comment=failover down-script="/ip route enable [find comment=\"ISP2\"]\r \n/ip firewall connection remove numbers=[find]" host=8.8.4.4 interval=15s up-script="/ip route disable [find comment=\"ISP2\"]\r \n/ip firewall connection remove numbers=[find]"
add comment=megafon-autostart host=192.168.0.1 up-script="/tool fetch http-method=post url=\"http://192.168.0.1/goform/goform_set_cmd_process\" http-data=\"goformId=CONNECT_NETWORK\" http-header-field=\"Referer:http://192.168.0.1/goform\" output=none"
Готово. Теперь, при подключении модема к роутеру, модем автоматически соединяется с сетью, и при отвале основного интренет-провайдера траффик направляется через модем, а затем, когда провайдер восстанавливается — снова через основной канал.