2 простых, эффективных Failover на Mikrotik без скриптов

Спонсор статьи
Failover — по русски это резервирование интернет-каналов, переключение в случае падения основного интернет-канала на резервный.

Итак у нас есть Микротик,  к нему подключены 2 провайдера (ISP1 и ISP2), и ваша сеть, необходимо при падении основного интернет-канала автоматически переключиться на резервный.

1. Способ, failover делается маршрутами, все что вам надо сделать это прописать два маршрута один к ISP1 и второй к ISP2, выбрав в пункте «Check Gateway» ping или arp. По-моему для большинства случаев больше подойдет пинг. Таким же образом прописываете маршрут ко второму провайдеру. Мне удобнее всего настраивать микротик используя Winbox, маршруты прописываются в меню IP-Routes.


Если в Distance одному провайдеру прописать например 1 а второму 2, то микротик будет автоматически балансировать нагрузку, при полной загрузке первого провайдера новые запросы пойдут ко второму.

Этот способ имеет некоторые ограничения:

— Если один из провайдеров дает вам динамический IP и настройки приходят по DHCP, то вы не сможете прописать маршрут указав имя интерфейса, вам придется вписать в поле «Gateway» ip шлюза.
— Иногда бывают ситуации когда шлюз провайдера работает, а узлы за ним недоступны, Микротик будет считать маршрут рабочим, переключения не произойдет, и интернет работать не будет.

2-й Вариант Failover на Микротике лишенный недостатков первого способа.

В Микротик встроен Netwatch, (находится в меню Tools). Вкратце эта утилита позволяет пинговать какой-либо ip и выполнять команды если меняется доступность ip адреса, в Up — вписываем команды которые выполняются когда ip стал нова доступен, в Down соответственно вписываем команды которые надо выполнить когда ip стал недоступен.

Суть понятна из картинки, жмем синий плюс, вписываем ip по которому будем проверять работоспособность канала, интервал проверки, я ставлю около минуты, можно меньше или больше.

Да, предварительно нужно задать комментарии для маршрутов. Мне удобнее всего настраивать Микротик через Winbox, для задания комментария маршруту заходим в IP-Routes, откроется окно со списком маршрутом, кружком обведена кнопка задания комментария, выделяем нужный маршрут, жмем на кнопку, вписываем комментарий для маршрута, жмем ок.

На картинке видно работу скрипта, маршрут к провайдеру ISP2 (У меня это Utel) не активен, он серого цвета, а маршрут к ISP1 (у меня Stels) активен. Ниже можно увидеть маршрут с комментарием Stels88, это нужно чтоб пинги к 8.8.4.4 который мы используем в скриптах шли только с ISP1, это нужно для контроля работоспособности ISP1, пинги идут  -все  впорядке, если ответов на пинги нет, то надо переключаться на ISP2. Как это делается видно на картинке ниже:

В раздел UP пишем:

/ip route set [find comment=»ISP1″] disabled=no
/ip route set [find comment=»ISP2″] disabled=yes

В раздел Down пишем:

/ip route set [find comment=»ISP1″] disabled=yes
/ip route set [find comment=»ISP2″] disabled=no

Для того чтоб схема корректно работало, нужно разрешить пинговать этот ip только с ISP1, для этого желательно добавить правило в  IP-Firewall запрещающее доступ к 8.8.4.4 с ISP2, и  прописать статический маршрут к 8.8.4.4 через шлюз ISP1 (в штатном режиме так сделать не получится если ISP1 выдает динамический ip и придется писать скрипт, который будет определять ip шлюза и прописывать маршрут ).

Спонсор статьи:

Самоучитель по MikroTik – теория и практика в видеоформате.

По видеокурсу «Настройка оборудования MikroTik» вы научитесь настраивать маршрутизатор с нуля для целей небольшого офиса. В основе курса лежит официальная программа MikroTik Certified Network Associate, но она значительно расширена, особенно в части закрепления знаний на практике. В курс входит 162 видеоурока и 45 лабораторных работ, объединенных в техническое задание. Если что-то непонятно, то можно задавать вопросы автору курса. Первые 25 уроков можно посмотреть бесплатно, форма заказа есть на странице курса по MikroTik.

View Comments (49)

  • Админ спасибо все удобно и практично!
    У меня вопрос, если у меня 2 статики, от двух провайдеров, мне нужно на резервирование 2й способ юзать?
    у меня RB850, os 6.40.3

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

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

    • Можно, посмотрите команду перезагрузки - должно быть что-то вроде reboot и допишите в скрипт.

      Но это костыль - я так понимаю нужно инициировать перерегистрацию, лучше поищите как это сделать (наверное надо закрыть имеющиеся соединения Sip или сделать че-то вроде того.)

  • А если произошла перезагрузка, то скрипт уже не сработает на обратное переключение.

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

  • Пару лет назад прочитал эту статью, которая была отправной точкой, привожу свой вариант конфига:
    "down":

    /log warning "server 4.2.2.1 fail..."
    :local time [/sys clock get time]
    :local checkip [/ping 77.88.8.2 count=5]
    :if (checkip = 0) do={
    /log error "ISP1 IS DOWN"
    /ip route set [find comment="main"] disabled=yes
    /ip route set [find comment="reserve"] disabled=no
    :delay 1
    /tool fetch url="https://sms.ru/sms/send?api_id=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&to=79*********&text=ISP1_IS_DOWN_$time"
    :delay 10
    /file remove "send?api_id=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&to=79*********&text=ISP1_IS_DOWN_$time"
    }

    "up":
    /log warning "ISP1 IS UP"
    /ip route set [find comment="main"] disabled=no
    /ip route set [find comment="reserve"] disabled=yes

    Для повышения точности проверки доступности интернета, для исключения ложных переключений, например, при возможных проблемах на опрашиваемой стороне или кратковременных сбоях в сети, потерянных пакетах и т.п. - используется 2 независимых адреса - 4.2.2.1 и 77.88.8.2. Адрес 4.2.2.1 - указывается в настройках хоста Netwatch, если пинга нет - начинает работать "down", который делает 5 попыток пинга к 77.88.8.2 и если все 5 попыток также неудачны - скрипт продолжает работу т меняет маршруты, первая удачная попытка прерывает дальнейшее выполнение скрипта, при этом никаких изменений маршрутов не происходит. К этим проверочным ип-адресам прописаны статические маршруты через шлюз проверяемого провайдера, а в фаерволе добавлены правила, запрещающие исходящий пинг на эти адреса через другие интерфейсы.
    В скрипт добавлен вывод сообщений в лог, а также отправка СМС с информацией об упавшем провайдере и времени падения. Отправка СМС реализована с помощью сайта sms.ru.
    api_id=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - уникальный id - выдаваемый при регистрации на sms.ru
    to=79********* - номер телефона, на который осуществляется отправка СМС. Если в качестве номера указывается тот же, что и при регистрации на сайте - 5 СМС в сутки бесплатно. Последней командой удаляется файл, создаваемый при обращении к sms.ru, чтобы не захламлять файловую память.

    • P.S. Кавычки-елочки " " автоматически появились после публикации сообщения, в скриптах следует указывать обычные кавычки.

      • Я позже поправлю, движок самовольничает, в редакторе видятся правильные кавычки. Спасибо.

  • Немного доработав второй способ для своей сети (у меня два постоянно активных канала), получил требуемую отказоустойчивость.

    Благодарю за информацию!

  • Привет как неправелно я норм настроиль хотспот и радиус ну заходить на радиус сервер через ip напремир 192.168.1.1:3333/userman вот так заходить и создаль профел и лимить поставиль ключи не работаеть radius is not rispoing скажить почему помогите пожалуйста шаг шагом или через фото либо через скрипт

    • Не совсем понятна ваша конфигурация, мне трудно вам чем-то помочь, Radius я видел всего пару раз и не спец по его настройке.

  • не работает радиус сервер не отвитчает скажить

  • привет у меня есть роутер 951 я настроил user-manger и откажить радиус сервер не отвечает кжаить почему

    • А раньше отвечали? И что вы настроили? Что такое user-manger?

      Вероятно, если до этого все работало то вы неверно настроили фаервол.

  • Данная процедура работает на роутерах модели RB2011UiAS-2HnD?

    • да, это не зависит от железа, сработает везде где стоит RouterOS.