Май 192014
 

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

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

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

failover на микротик

Если в 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 шлюза и прописывать маршрут ).

1 звезда2 звезды3 звезды4 звезды5 звезд (Оцени статью первым!)
Загрузка...

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

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

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

  2. Пару лет назад прочитал эту статью, которая была отправной точкой, привожу свой вариант конфига:
    «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=»http://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. Кавычки-елочки » » автоматически появились после публикации сообщения, в скриптах следует указывать обычные кавычки.

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

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

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

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

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

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

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

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

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

  7. Чувак ты хорош, спасибо тебе)))

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

  9. Большое спасибо мил человек. Очень простой и быстрый вариант сделать фэйловер. Что приятно вдвойне что решается задача «доступного но пустого шлюза по умолчанию».

    • Я несколько раз сталкивался с ситуацией когда шлюз провайдера пашет, а все что дальше за ним — нет, поэтому гуляющие в нете варианты которые не учитывают этот момент сразу отбрасывал.

  10. Спасибо, с двумя провайдерами все получилось, у меня за ISP1 и ISP2 находятся другие маршрутизаторы, получающие Интернет через PPoE и L2TP. Прошу подробно описать схему failover, с использованием netwatch, на 3 провайдера, третий из которых — 3G модем, подключенный напрямую в Микротик, или, допустим, даже еще один, третий, статический маршрут на 0.0.0.0, без модема напряму, ведь 3G модем можно подключить и к третьему роутеру. Главное, понять, какие будут настройки для netwatch, для трех интерфейсов. Спасибо.

    • Для трех провайдеров надо подумать, имхо netwach для трех не подходит если так сразу ответить и без скриптов не обойтись наверное. Я подумаю что можно сделать, статью с файловером для трех провайдеров на микротик я напишу наверное отдельно, не знаю нужно ли это кому-то кроме Вас, но быстро не обещаю)))

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

      • Получилось настроить через netwatch для трех провайдеров, думаю так можно для скольки хочешь сделать. Создаём дефолтовые маршруты для каждого провайдера, с разными дистанциями. Дистанция будет определять приоритет дефолтового маршрута. Не забываем комментировать маршруты (ISP1, ISP2…) для поиска комментариев утилитой netwatch:

        /ip route add dst-address=0.0.0.0/0 gateway=GW1 distance=1
        /ip route add dst-address=0.0.0.0/0 gateway=GW2 distance=2
        /ip route add dst-address=0.0.0.0/0 gateway=GW3 distance=3

        Далее создаём соответствующие маршруты по умолчанию для любых проверочных узлов для всех наших провайдеров, за исключением последнего по приоритету:

        /ip route add dst-address=8.8.8.8 gateway=GW1 scope=10
        /ip route add dst-address=8.8.4.4 gateway=GW2 scope=10

        Соответственно, далее нам нужно создать в netwatch два правила, проверяющие узлы через первого и второго провайдера (GW):

        Первое правило проверяет пинг до 8.8.8.8:
        В разделе UP:
        /ip route set [find comment=»ISP1″] disabled=no
        В раздел Down:
        /ip route set [find comment=»ISP1″] disabled=yes

        Второе правило проверяет пинг до 8.8.4.4:
        В разделе UP:
        /ip route set [find comment=»ISP2″] disabled=no
        В раздел Down:
        /ip route set [find comment=»ISP2″] disabled=yes

        Получается следующее, что если все проверочный узлы доступны, то и все дефолтовые маршруты включены, но активен только маршрут с меньшим значением distance. Если какой-то проверочный узел становится не доступен, то отключается соответствующий дефолтовый маршрут, например, при отключении маршрута на ISP1, будет активен маршрут на ISP2, при отключении ISP2, останется активен последний ISP3.

  11. А как решить проблему когда 2 провайдера выдают белые ip статические + dns у каждого свой?

    Пробовал в IP -> DNS указывать все четыре адреса DNS (по 2 от каждого (основной и резервный), при работе основного провайдера возникают глюки, Mikrotik пытается слать запросы на разные DNS и когда попадает не на своего получает отлуп, и сайт не открывается….

    Как прописать DNS, что б он был привязан только к определенному интерфейсу (порту WAN)?

    • Лучший вариант в Вашем случае прописать любые публичные DNS которые доступны с любого провайдер, хотите гугловские 8.8.8.8 и 8.8.4.4 хотите любые другие (есть у яндекса и можете погуглить по слову opendns)

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

      Я от провайдерских DNS отказываюсь в пользу гугловских, крайне редко но бывает ситуация что провайдерские dns ложатся и тогда инет хоть и есть, но не работает.

      • Пробовал уже данный вариант, но хотелось бы все по правильному. Просто настраивал pfSeence там такой проблемы вообще нет, на каждый интерфейс прописывается свой независимый DNS и все работает отлично, а тут подстава какая то прям.

    • Добавить в скрипт изменение ип- адресов dns-серверов через запятую:
      /ip dns set server=x.x.x.x,y.y.y.y
      Адреса указанные в ./ip dns до начала работы команды — удаляются.

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

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

    • А что Вам мешает прописать эти маршруты статическими и затем убрать галочки с «Add Default Route» в свойствах подключения?
      Бывают ситуации, когда провайдеры выдают разные шлюзы при каждом подключении, но в большинстве случаев достаточно в статическом маршруте просто указать интерфейс в качестве шлюза.

      • о в большинстве случаев достаточно в статическом маршруте просто указать интерфейс в качестве шлюза.

        Если на интерфейсе настройки получаются по DHCP (на который переходит все больше провайдеров) то так сделать было нельзя.

  13. спасибо. всё работает.

  14. Большая просьба закончите статью, я именно опишите пожалуйста подробно со скринами.

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

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

  15. Если у меня оба провайдера выдают динамический ip, мне подойдет первый вариант? Но лучше конечно как во втором с пингом гугла — а для этого варианта есть мануал?

    • нет, первый чисто для статики, вам надо настраивать по второму варианту.

    • Выделил жирным второй случай, как раз для Вас, настраивайте, если что спрашивайте.

      • Вот подключил я оба провайдера и смотрю их маршруты, а коментарий к маршруту создать не могу, кнопка для комента не активна… .Прошивка версии 6,5, единственное, что я перед тем как все тестировать на деле, сделал в ip-dhcp-client два клиента , один с distance=1(для первого провайдера), второй с distance=2(для второго).

  16. Ну вообщето нужно прописать статический маршрут до 8.8.4.4 через первого ISP, только так он будет знать, поднялся ли первый ISP или нет, тогда нетвотч будет работать корректно, а тот механизм что вы описали не верный.

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

    • Подредактировал статью, что б было более понятно. Я пробовал вариант когда доступ к 8.8.4.4 через второго провайдера закрыт правилами фаервола, без прописанного маршрута, и netwach при этом нормально отрабатывал, суть в том что доступ к 8.8.4.4 должен быть только с одного провайдера, а как вы это реализуете не так важно.

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

  17. Всё хорошо, только как netwatch узнает, что канал ISP1 поднялся и переключится на него с ISP2?

    • Netwatch — не прекращает пинговать 8.8.4.4, и всегда знает в каком состоянии канал к ISP1, в зависимости от того есть ответы на пинг или нет, выполняются команды из разделов Up или Down

      Работает схема таким образом: Netwatch пингует 8.8.4.4 с ISP1, и если ответы приходят, то ничего не делает. Если вдруг ответы перестают приходить — то Netwatch выполняет те команды которые написаны в разделе Down, и переключает инет на ISP2, и продолжает дальше пинговать 8.8.4.4 с интерфейса к которому подключен ISP1, когда первый провайдер возвращается в работу, и начинают приходить ответы на пинги, то Netwatch выполняет команды из раздела Up, и переключает каналы, включая маршрут ISP1.

      Все просто, схема проверена и работает. В данном случае еще реализован приоритет ISP1, Netwatch всегда будет отдавать ему предпочтение, у меня ISP1 это быстрая оптика, а ISP2 медленный ADSL, в реальности разница между ними вполне заметна, пинги на оптике примерно в 1,5-2 раза ниже чем на ADSL.

      Если будут вопросы по настройке — пишите, помогу.

    • Добавил картину в пост с скрином маршрутов, так должно быть понятнее как оно работает.

  18. «нужно задать комментарии для маршрутов»

    Здесь, видимо, имеется в виду, что в Interfaces у ISP1 стоит комментарий ISP1, а у ISP2 соответственно комментарий ISP2.

    • Нет комментарии для маршрутов задаются в разделе Ip-Routes, в Winbox есть спец кнопка с иконкой типа конвертика, выбираете маршрут, кликаете на кнопку и пишете комментарий к маршруту, потом в скриптах можно найти нужный интерфейс по этому комментарию, и что нибудь с ним сделать — изменить, включить, выключить и т.п. Задавать комментарий маршруту удобно.

    • Добавил картину в пост с скрином маршрутов, так должно быть понятнее как оно работает.

 Оставить комментарий

Войти с помощью: 

Вы можете использовать HTML теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(требуется)

(требуется)