Mikrotik на 2 провайдера: настройка резервного канала в RouterOS

05 февраль 2020 18 898 6
Одна из наиболее популярных задач, решаемых на оборудовании Mikrotik – настройка RouterOS на работу с двумя интернет-провайдерами или, простыми словами, настройка резервного канала. Данный вопрос будет актуальный как для бизнеса, так и для домашних пользователей, которым требуется организовать бесперебойный канал выхода в сеть Интернет.

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

Недостатки простого «простого» и «сложного» способа переключения на резервный канал в Mikrotik

Уже «из коробки» RouterOS умеет осуществлять автоматическое переключение на резервный канал, о чем я писал отдельную публикацию:Однако, у данного метода существует огромный недостаток – он работает только в том случае, если основной шлюз перешел в статус «unreachable». Один из таких вариантов – физическое отключение кабеля.

Вариантом модификации данного метода является использование параметра ping, при котором RouterOS для проверки доступности интернета использует пинг шлюза. Недостатком данного метода является то, что он не обеспечивает корректное переключение на резервный канал в тех случаях, когда шлюз провайдера доступен, а интернет отсутствует.

Решая данную проблему, пользователи порой прибегают к использования самых разнообразных и замысловатых скриптов. К примеру, пару лет назад, я тоже писал подобный скрипт:Казалось бы, хорошая гибкость и большой набор опций? Увы, не все так просто. Во-первых, Mikrotik периодически меняет параметры, иногда вносятся правки в синтаксис, от чего рано или поздно ваши скрипты перестают работать (это вопрос времени), а на их отладку уходит драгоценное время. Во-вторых, рядовому пользователю сложно понять тонкости работы скриптов – чаще всего пользователь хочет просто скопировать скрипт, не вдаваясь в подробности.

Так есть ли выход?
Если Вы хотите научиться настраивать MikroTik, предлагаем пройти онлайн обучение. Более подробную информацию Вы можете найти в конце данной публикации.

Простое и надежное переключение на резервный канал в Mikrotik 

К большому сожалению, абсолютное большинство инструкций по данной теме предлагают варианты «как есть», без должного разъяснения принципа работы алгоритма и формирования у пользователя четкого понимания того, что они делают.

Если вы ищите «готовый рецепт» и не хотите вдаваться в тонкости настройки, возможно, вам следует поискать другое решение. Если же у вас есть желание разобраться в том, как научиться настраивать резервный канал практически на любом устройстве RouterBOARD с любым типом подключения – эта публикация для вас!

Перед тем, как приступить к описанию метода, хотел бы добавить небольшую рекомендацию. Не бойтесь командной строки. Вас никто не заставляет ею пользоваться, хоть это и очень удобно при частичном импорте различных конфигураций. Не хотите – не пользуйтесь. Рекомендую начать с того, чтобы попытаться понять смысл используемых параметров и опций. Абсолютно все команды дублируют интерфейс Winbox – читая «конфиг», проделать то же самое через Winbox легко и просто. Если вы захотите работать с Mikrotik и RouterOS на более продвинутом уровне, рано или поздно, пользоваться командной строкой все-равно придется.

Первым делом следует определить, каким образом вы подключены к сети провайдера – из актуальных методов подключения – DHCP или PPPoE. Также это могут быть и устаревшие методы подключения – L2TP или PPTP.

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

Ищите маршрут по-умолчанию, его легко определить, т.к. в Dst. Address всегда указано 0.0.0.0/0. К примеру, на скриншоте показан маршрут в интернет через интерфейс ether1-gateway и шлюз провайдера 134.249.110.190. Шлюз может понадобиться для того, чтобы правильно прописать маршруты.

С маршрутами определились, далее необходимо отключить маршруты по-умолчанию для обеих провайдеров. К примеру, для подключения по DHCP это делается в IP – DHCP Client.
Add Default Route = NO

/ip dhcp-client
add add-default-route=no disabled=no interface=sfp-sfpplus1 use-peer-dns=no

Для PPPoE, а также PPTP/L2TP в списке интерфейсов выберите интерфейс провайдера и отключите опцию Add Default Route.
После этого в списке маршрутов пропадут маршруты 0.0.0.0/0, а доступ к сети Интернет будет прекращен. Необходимо вручную добавить маршруты на оба провайдера.

Для этого создаем два маршрута к 0.0.0.0/0 через 2 разные интерфейса и 2 разные шлюза. В конкретном примере первый провайдер находится на интерфейсе sfp-sfpplus1 с шлюзом 195.16.77.129. Для основного провайдера добавляем комментарий ISP1 – нужен он нам будет для корректной работы переключения между провайдерами. В качестве Distance указываем 1.

В случае с ppp-интерфейсами все чуть проще, можно просто указать интерфейс в качестве шлюза. Ниже пример для PPPoE. Для резервного канала добавляем примечание ISP2, в качестве Distance указываем 2. Параметр Distance влияет на приоритет маршрута, чем меньше число – тем выше приоритет маршрута.

Теперь необходимо определиться с эталонным ресурсом в сети интернет, по которому мы будем определять доступность всей сети Интернет. Я бы рекомендовал использовать надежные DNS Google 8.8.8.8, 8.8.4.4 или Amazon Cloudflare 1.1.1.1. Почему? Данные сервисы используют мощную распределенную сетевую инфраструктуру и гарантируют практически бесперебойный аптайм.
/ip route
add comment=ISP1 distance=1 gateway=195.16.77.129
add comment=ISP2 disabled=yes distance=2 gateway=pppoe-dvssat
add comment="=== ROUTE 1.1.1.1 ===" distance=1 dst-address=1.1.1.1/32 \
gateway=195.16.77.129

После того как выбран IP, добавляем еще один статический маршрут на этот IP, с указанием шлюза, через который необходимо пересылать пакеты. Иными словами, мы явно указываем маршрутизатору, что на 1.1.1.1 (как пример) надо ходить через первого провайдера.

И все бы хорошо, только RouterOS этого мало, необходимо в чейне Output дополнительно отфильтровать пакеты, которые идут на 1.1.1.1 через второго провайдера по протоколу ICMP (ping). Это позволит избежать отправки и прохождения ICMP-запросов к 1.1.1.1 через резервный канал.
/ip firewall filter
add action=drop chain=output comment="=== ISP CHECK ===" dst-address=1.1.1.1 \
out-interface=pppoe-dvssat protocol=icmp

Почти готово. Переходим в Tool – Netwatch и добавляем новый мониторинг:
  • Host: 1.1.1.1 (IP, который мониторится)
  • Interval: 00:00:10 (например, 10 секунд)
  • Timeout: 200 ms (таймаут ожидания, по-умолчанию равен 1000 мс)

Во вкладках Up и Down добавляем команды, которые необходимо выполнить в случаях, когда хост в сети и оффлайн. По сути, скрипт ищет маршруты с комментариями ISP1 и ISP2. Если узел 1.1.1.1 недоступен, скрипт отключает маршрут ISP1 и включает резервный маршрут ISP2. В случае, когда узел 1.1.1.1 доступен, скрипт принудительно включает маршрут ISP1.
/tool netwatch
add down-script="/ip route set [find comment=\"ISP1\"] disabled=yes\r\
\n/ip route set [find comment=\"ISP2\"] disabled=no" host=1.1.1.1 \
interval=10s timeout=200ms up-script="/ip route set [find comment=\"ISP1\"\
] disabled=no\r\
\n/ip route set [find comment=\"ISP2\"] disabled=yes"

Работа Netwatch основана на том, что доступ к 1.1.1.1 у нас разрешен только с первого провайдера (ISP1), что и выступает индикатором работоспособности Интернет.

Основной провайдер выдает динамический IP по DHCP со сменой шлюза

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

В случае с получением параметров по DHCP, обычный маршрут 0.0.0.0/0 с gateway = ether1 не обеспечит выход в Интернет, т.к. при таком подключении следует явно указывать IP шлюза. Но шлюз периодически меняется – как быть? Можно писать скрипты, но есть вариант на порядок проще и легче.

Для ISP1 следует задать Disatance, отличный от 1, например, 2. Делается это в подменю IP – DHCP Client - [ISP1] – вкладка Advanced – опция Default Route Distance.

Что это нам даст? При отсутствии других маршрутов, такой маршрут будет основным. Для второго провайдера следует задать Distance = 1. Если включить такой маршрут – он станет основным, т.к. имеет больший приоритет. Таким образом, включая и отключая маршрут резервного провайдера, можно управлять переключением между провайдерами. Учитывая, что в качестве резервного канала обычно выбирают 3G/4G-модем, больше проблем не возникнет.

Ответы на частые вопросы

Казалось бы, все понятно, но метод переключения не работает. Такое может быть, если у вас NAT имеет настройки, отличные от дефолтных.

Для работы данного метода, необходимо, чтобы у вас присутствовало стандартное правило маскарадинга:
/ip firewall nat
add action=masquerade chain=srcnat ipsec-policy=out,none out-interface-list=WAN

Данное правило позволяет хостам в локальной сети, находящимся за NAT, выходить в интернет через группу интерфейсов «WAN».
Данного правила недостаточно, необходимо, чтобы оба интернет-интерфейса находились в группе WAN. Для вышеприведенной конфигурации это имеет следующий вид:
/interface list member
add interface=sfp-sfpplus1 list=WAN
add interface=ether1 list=WAN
add interface=pppoe-dvssat list=WAN

Также рекомендую отказаться от использования DNS-серверов провайдера. Как показывает практика, они работают менее стабильно, чем сервисы 8.8.8.8 и 1.1.1.1. Если же вы не хотите использовать перечисленные сервисы и хотите использовать DNS-серверы провайдера, необходимо использовать DNS-серверы обеих провайдеров – опция Use Peer DNS в свойствах подключения.

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

Видеокурс «Настройка оборудования MikroTik» (аналог MTCNA)

Учитесь работать с MikroTik? Рекомендую видеокурс «Настройка оборудования MikroTik». В курсе разобраны все темы из официальной учебной программы MTCNA и много дополнительного материала. Курс сочетает теоретическую часть и практику – настройку маршрутизатора по техническому заданию. Консультации по заданиям курса ведет его автор Дмитрий Скоромнов. Подойдет и для первого знакомства с оборудованием MikroTik, и для систематизации знаний опытным специалистам.

Интернет-магазин ntools.com.ua

Комментарии:

Добавить
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
  1. Гость Anton
    Гость Anton Гости 12 апреля 2020 17:38
    + 0 -
    Здравствуйте! Подскажите, пожалуйста, как настроить резервирование. В сети два микротика, на каждом свой провайдер. Соединены напрямую шнурком. Каждый раздаёт настройки определённому VLANу.
  2. Гость ALEX
    Гость ALEX Гости 9 марта 2020 15:37
    + 0 -
    Некоторые специалисты советуют оставлять distance=1 для 8.8.4.4 или еще чего-то важного. Соответственно ISP1 distance=2, а ISP2 distance=3

    /ip route add distance=1 dst-address=8.8.4.4/32 gateway=200.40.2.1
    /ip route add comment=ISP1 distance=2 gateway=200.40.2.1
    /ip route add comment=ISP2 disabled=yes distance=3 gateway=180.90.56.1


    У меня interval=30s timeout=997ms потому что выяснилось, что бывают ложные срабатывания. Так что timeout я бы увеличил. Или подберите самостоятельно наблюдая за логом.

    Еще в netwatch можно/нужно добавить строку для логирования — :log warning "ISP1 - UP!" / :log error "ISP1 - DOWN!"

    Для того чтобы получить доступ к Микротику со второго, неактивного провайдера (IP) нужно сделать так :

    /ip firewall mangle add action=mark-connection chain=input in-interface=ISP1 new-connection-mark=connections-isp1 passthrough=yes
    /ip firewall mangle add action=mark-connection chain=input in-interface=ISP2 new-connection-mark=connections-isp2 passthrough=yes
    /ip firewall mangle add action=mark-routing chain=output connection-mark=connections-isp1 new-routing-mark=ISP1 passthrough=yes
    /ip firewall mangle add action=mark-routing chain=output connection-mark=connections-isp2 new-routing-mark=ISP2 passthrough=yes

    /ip route add distance=2 gateway=ШЛЮЗ routing-mark=ISP1
    /ip route add distance=2 gateway=ШЛЮЗ routing-mark=ISP2

    https://www.youtube.com/watch?v=Gwl-0bRxOY4
    http://mum.mikrotik.com/presentations/RU18M/presentation_6157_1554717194.pdf
  3. DmitryAVET
    DmitryAVET Создатель 9 февраля 2020 21:29
    + +1 -
    Списки IP-шек заблокированных ресурсов можно взять из [url=http://|https://weblance.com.ua/317-obhod-blokirovki-saytov-so-storony-provaydera-na-mikrotik-routeros.html]предыдущей публикации[/url].

    Далее корректный дроп средствами Firewall:

    chain: forward
    protocol: tcp
    dst. address list: [список заблокированных ресурсов]
    action: reject
    reject with: tcp reset

    В случае с DNS сложно заблокировать все ресурсы, т.к. там куча доменов и субдоменов. Можно упустить часть доменов, тогда браузер и дальше будет подвисать при обращении к таким страницам.
  4. DmitryAVET
    DmitryAVET Создатель 7 февраля 2020 20:09
    + 0 -
    Что именно интересует? Практически все эти правила есть в тех или иных публикациях:

    1) первой идет базовая защита от ddos, в которой задан лимит подключений и при превышении которого, IP попадает в черный список, после чего обрасываются все соединения с данного IP еще на этапе prerouting

    2) далее имеется проверка на сканирование портов, а точнее ловушки - при попытке установления соединения с популярными портами (а-ля tcp 80, 3389 и т.д.) - IP попадает в черный список

    3) входящий ICMP разрешен только с подсети провайдера

    4) пара правил, обеспечивающих работу сервера L2TP/IPsec

    5) разрешение использования DNS для гостевой подсети

    6) корректная блокировка vk, ok, mailru, yandex - reject, т.к. у нас провайдеры тупо делают drop, от чего браузеры долго грузят русскоязычные сайты на которых имеется метрика и социальные кнопки
    1. Константин
      Константин Гости 9 февраля 2020 19:09
      + 0 -
      Если можно то поподробней по 6 пункту. Я сейчас сделал через подмену в DNS.
  5. Костянтин
    Костянтин Гости 7 февраля 2020 15:48
    + 0 -
    Очень хорошая статья, сам пользуюсь таким методом больше 2х лет. Ни разу не подвела. Поделись всеми настройками фаервола лучше.

Отправка Push-уведомлений из Mikrotik RouterOS прямо на мобильный при помощи

Ранее в блоге я уже писал о том, как можно осуществлять удаленное управление устройствами Mikrotik под управлением RouterOS при помощи SMS-команд....

Управление Mikrotik удаленно при помощи SMS

В двух предыдущих публикациях я уже рассказывал, как можно очень просто подключить 3G-модем к маршрутизаторам Mikrotik и настроить автоматическое...

Mikrotik Advanced Failover: автоматическое переключение между основным каналом

В рамках вводной публикации, опубликованной ранее, были изложены основные моменты подключения 3G-модема к маршрутизатору Mikrotik, на примере Huawei...

Подключаем 3G-модем к Mikrotik: самый простой вариант резервирования канала. На

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

Mikrotik: обновление загрузчика RouterBOOT в устройствах RouterBOARD, список

RouterBOOT – специальный загрузчик, который отвечает за запуск операционной системы RouterOS на устройствах RouterBOARD компании Mikrotik. На самом...

Создание и настройка HotSpot на оборудовании Mikrotik под управлением RouterOS

Жизнь современного активного человека немыслима без смартфона и постоянного доступа к сети Интернет. Всё это приводит к необходимости создания...

авторизация на сайте

Войти при помощи Facebook Войти при помощи Google+
Забыли пароль?