Найти тему

Два провайдера на микротике

Оглавление

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

Такие картины - обыденность многих провайдеров...
Такие картины - обыденность многих провайдеров...
Я сетевой инженер в большой компании, пишу статьи про сетевое оборудование, сетевые технологии и околоАЙТИшные темы. Рассматриваю возможности разного оборудования, вместе с вами продолжаю изучать разный функционал и привожу конкретные примеры того, что сделано и как сделано. Это не призыв к действию и не точный мануал - в моих статьях бывают ошибки, которые я всегда готов обсудить в комментариях. Прошу следовать правилам платформы, не нарушать законодательство РФ, не оскорблять других людей и все будет норм!

С учетом текущих реалий и последствий самоизоляций и пр., наличие постоянного выхода в интернет дома стало очень актуальным вопросом. Абоненты, получив достаточное количество проблем от их домашних провайдеров и невозможность пользоваться интернетом тогда, когда он действительно нужен, привели к ожидаемому росту спроса на устройства, которые, помимо проводного, работают и с 4G. Рост стоимости некоторых роутеров взлетел в 2-2,5 раза (помимо общего роста стоимости). Ну и тарифы мобильных операторов туда же...

Давайте рассмотрим вариант, как не менять весь роутер целиком, а просто добавить ему дополнительный функционал в виде 4G-свистка. И настроить автоматическое переключение между провайдерами при отключении основного. Также, есть возможность пользоваться обоими интернет-соединениями одновременно. Далее все с примерами настройки.

Для простоты понимания:
1 порт микротика с основным провайдером назван main_ISP
2 порт с резервным провайдером - rezerv_ISP
192.168.1.1 - шлюз первого провайдера
192.168.2.1 - шлюз втого провайдера

1. Резервирование простое.

Простое резервирование - это самый простой способ продублировать канал связи в интернет. В данном методе даже настраивать ничего дополнительно не нужно, просто прописать оба интернет соединения и поменять им метрику, чтобы одно было приоритетнее другого. Если оба соединения прописываются статически, то в меню IP -> Routes, где будете указывать дефолтный маршрут 0.0.0.0\0 на шлюз провайдера (в моем примере 192.168.1.1), нужно изменить Distance, например, на 10 и указать параметр Check gateway - ping. Для второго тоже самое, кроме шлюза (должен сообщаться вашим провайдером в договоре) и Distance ставим, например, 20 (должно быть больше, чем у основного, но не более 255).

Это дефолтный маршрут/шлюз, который говорит что все-все-все адреса интернет надо искать через вот этого соседа (в данном примере 192.168.1.1)
Это дефолтный маршрут/шлюз, который говорит что все-все-все адреса интернет надо искать через вот этого соседа (в данном примере 192.168.1.1)

Итак, что мы только что сделали?! Мы прописали приоритет в таблице маршрутизации основного провайдера, над резервным. И параметр Check gateway будет периодически пытаться пинговать данный шлюз. Если шлюз недоступен, то маршрут перестанет быть актуальным и заработает второй. Т.е. ваш роутер просто перестроит свою работу через резервного провайдера автоматически. Красота же?! Но не все так хорошо...

-3

К сожалению, как правило, шлюз провайдера доступен почти всегда, потому что это некая железка, которую провайдер установил в вашем доме. И если не брать в расчет вандалов, которые обрезали/вытащили физически провод от этой железки до вашего роутера, то связь с ним не порвется. А интернета, тем не менее, через этот маршрут не будет по другим причинам, вызванными сбоем внутри провайдера или банальным отсутствием средств на счете. Поэтому данный метод хорош простотой, но не результатом.

-4

Если же провайдер вам выдает не статические настройки, а DHCP, то делается это почти так же. В меню IP -> DHCP client создаем новое подключение, если еще не создано, или заходим в имеющееся на тот порт, который отвечает за основного провайдера. Переходим на вкладку Advanced и меняем метрику на "10". У резерва тоже самое, но на "20".

В принципе, на данном этапе мы закончили, даже нет смысла указывать Check gateway, потому что если шлюз провайдера недоступен, то и адрес по DHCP ваш роутер не получит и дефолтный маршрут просто не создастся.

-6

2. Резервирование с проверкой внешних ресурсов.

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

Итак, у нас уже есть два дефолтных маршрута с разными метриками, настроенных по типу, как в верхнем примере (IP -> Routes). Нам нужно добавить к ним комментарий (желтый листочек рядом с красным крестиком) и обзовем одного "ISP1", а второго "ISP2", от сокращения Internet Service Provider.

Далее нужно выбрать внешний ресурс, который мы будем мониторить для определения работоспособности провайдера. Механизм очень похож на ip sla в cisco, если кто сталкивался. Обычно выбирают для мониторинга публичные DNS-сервера. Как правило, они должны работать всегда и дублироваться/резервироваться компаниями, которые их поддерживают. Можете взять привычный 8.8.8.8 или, даже, 8.8.4.4, но я предлагаю днс яндекса: 77.88.8.3 и 77.88.8.7 - это днс со встроенным детским фильтром. Но не фильтр нам нужен, а сами эти сервера, которые, скорее всего, менее нагружены, чем основные. И доступность их должна быть повыше на этом фоне... Ну, я так думаю.

-7

Так вот, когда с данным вопросом определились, нам нужно прописать данные адреса отдельными маршрутами, чтобы они не зависели от основного маршрута. Делается это как с дефолтным, только вместо 0.0.0.0\0 нужно прописать адрес 77.88.8.3\32 и метрику поставить, например, "5". Это для основного шлюза. Для резерва 77.88.8.7\32 со своим шлюзом резервного провайдера и такой же метрикой "5".

Должно получиться как-то так, только черным текстом, в данном случае синий говорит о недоступности маршрута и моей лени, чтобы собрать нормальную лабу, сорян :-)
Должно получиться как-то так, только черным текстом, в данном случае синий говорит о недоступности маршрута и моей лени, чтобы собрать нормальную лабу, сорян :-)

Далее нам нужно запретить исходящий трафик до этих днсов, чтобы маршруты не скакали зайчиком и работали правильно. Идем в IP -> Firewall на вкладке Filter Rules добавляем новое правило (два):

/ip firewall filter
add action=drop chain=output dst-address=77.88.8.3 out-interface=rezerv_ISP protocol=icmp comment="ISP1 check"
add action=drop chain=output dst-address=77.88.8.7 out-interface=main_ISP protocol=icmp comment="ISP2 check"

Данное правило запретит мониторинг трафика до адреса 77.88.8.7 с основного провайдера. А второе, соответственно, с резерва до 77.88.8.3. Помещать их можно где угодно в списке, можно самыми последними - это не повлияет на результат.

Когда с этим справились, собственно, запустим сам механизм мониторинга, который в микроте называется Netwatch. Идем в меню Tools -> Netwatch и добавляем новое правило (два).

/tool netwatch
add down-script="/ip route set [find comment=\"ISP2\"] disabled=yes" host=77.88.8.7 up-script=\
"/ip route set [find comment=\"ISP2\"] disabled=no"
add down-script="/ip route set [find comment=\"ISP1\"] disabled=yes" host=77.88.8.3 up-script=\
"/ip route set [find comment=\"ISP1\"] disabled=no"

Собственно, по аналогии с ip sla - этот сервис мониторит доступность внешнего адреса и имеет два режима: "Up" и "Down", при наступлении которых мы либо дизейблим наш маршрут, либо поднимаем обратно, когда он восстановится. Все просто и красиво... вроде бы...

-11

Проблема данного "монитора" в отличии от ip sla - в его продвинутости, видимо. Данный сервис может выполнять целые скрипты, не ограничиваясь таким простым применением, как у нас. И можно хоть весь конфиг микрота менять в зависимости от этих состояний. Отсюда, видимо, и его прожорливость к ресурсам. На младших моделях серии hAP загруженность ЦП подпрыгивает на 5-10% после включения. Хотя, это не критично дома с пустым конфигом, наверное. В остальном все работает нормально.

Теперь давайте разберем ситуацию, когда оба провайдера работают через DHCP. Для этого нам надо в IP -> Routes продублировать статикой с нужными метриками дефолтные маршруты, которые сообщают нам провайдеры, не забыть выставить комментарии ISP1 и ISP2. И далее просто выключить добавление дефолтного маршрута автоматически. Идем в IP -> DHCP client, проваливаемся в нужный и на первой же вкладке в графе Add Default Route выбираем "no".

-13

3. Выводы, итого...

Мы рассмотрели основные ситуации на простых и удобных примерах, чтобы все было максимально прозрачно и понятно. Но вы должны понимать, что, например, подключенный usb-4G модем и отображающийся как интерфейс lte1 - ничем не отличается от моего rezerv_ISP, более того, если переименовать один в другой, то вообще никакой разницы не будет. В данном примере интерфейс выхода в интернет роли не играет никакой. Главное понять суть.

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

Эта статья наконец закончилась
Эта статья наконец закончилась

Надеюсь, вам было интересно и все понятно с данной темой. Очень сложно было упростить весь материал до "объяснения на пальцах", не пользуясь терминологией и идти от простого к сложному... Не судите строго, если, вдруг, что-то осталось непонятным - задавайте вопросы в комментариях, всегда стараюсь отвечать или направить в нужную сторону ваш пытливый ум. Спасибо за прочтение, за лайк и подписку - огромная благодарность! Удачи!