Доброго дня, уважаемые! С прошедшим днем системного администратора! В данной статье рассмотрим вариант подключения нескольких провайдеров и различные сценарии их использования. Наливайте чай или кофе по вкусу, начинаем...
Я сетевой инженер в большой компании, пишу статьи про сетевое оборудование, сетевые технологии и околоАЙТИшные темы. Рассматриваю возможности разного оборудования, вместе с вами продолжаю изучать разный функционал и привожу конкретные примеры того, что сделано и как сделано. Это не призыв к действию и не точный мануал - в моих статьях бывают ошибки, которые я всегда готов обсудить в комментариях. Прошу следовать правилам платформы, не нарушать законодательство РФ, не оскорблять других людей и все будет норм!
С учетом текущих реалий и последствий самоизоляций и пр., наличие постоянного выхода в интернет дома стало очень актуальным вопросом. Абоненты, получив достаточное количество проблем от их домашних провайдеров и невозможность пользоваться интернетом тогда, когда он действительно нужен, привели к ожидаемому росту спроса на устройства, которые, помимо проводного, работают и с 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).
Итак, что мы только что сделали?! Мы прописали приоритет в таблице маршрутизации основного провайдера, над резервным. И параметр Check gateway будет периодически пытаться пинговать данный шлюз. Если шлюз недоступен, то маршрут перестанет быть актуальным и заработает второй. Т.е. ваш роутер просто перестроит свою работу через резервного провайдера автоматически. Красота же?! Но не все так хорошо...
К сожалению, как правило, шлюз провайдера доступен почти всегда, потому что это некая железка, которую провайдер установил в вашем доме. И если не брать в расчет вандалов, которые обрезали/вытащили физически провод от этой железки до вашего роутера, то связь с ним не порвется. А интернета, тем не менее, через этот маршрут не будет по другим причинам, вызванными сбоем внутри провайдера или банальным отсутствием средств на счете. Поэтому данный метод хорош простотой, но не результатом.
Если же провайдер вам выдает не статические настройки, а DHCP, то делается это почти так же. В меню IP -> DHCP client создаем новое подключение, если еще не создано, или заходим в имеющееся на тот порт, который отвечает за основного провайдера. Переходим на вкладку Advanced и меняем метрику на "10". У резерва тоже самое, но на "20".
В принципе, на данном этапе мы закончили, даже нет смысла указывать Check gateway, потому что если шлюз провайдера недоступен, то и адрес по DHCP ваш роутер не получит и дефолтный маршрут просто не создастся.
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 - это днс со встроенным детским фильтром. Но не фильтр нам нужен, а сами эти сервера, которые, скорее всего, менее нагружены, чем основные. И доступность их должна быть повыше на этом фоне... Ну, я так думаю.
Так вот, когда с данным вопросом определились, нам нужно прописать данные адреса отдельными маршрутами, чтобы они не зависели от основного маршрута. Делается это как с дефолтным, только вместо 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", при наступлении которых мы либо дизейблим наш маршрут, либо поднимаем обратно, когда он восстановится. Все просто и красиво... вроде бы...
Проблема данного "монитора" в отличии от ip sla - в его продвинутости, видимо. Данный сервис может выполнять целые скрипты, не ограничиваясь таким простым применением, как у нас. И можно хоть весь конфиг микрота менять в зависимости от этих состояний. Отсюда, видимо, и его прожорливость к ресурсам. На младших моделях серии hAP загруженность ЦП подпрыгивает на 5-10% после включения. Хотя, это не критично дома с пустым конфигом, наверное. В остальном все работает нормально.
Теперь давайте разберем ситуацию, когда оба провайдера работают через DHCP. Для этого нам надо в IP -> Routes продублировать статикой с нужными метриками дефолтные маршруты, которые сообщают нам провайдеры, не забыть выставить комментарии ISP1 и ISP2. И далее просто выключить добавление дефолтного маршрута автоматически. Идем в IP -> DHCP client, проваливаемся в нужный и на первой же вкладке в графе Add Default Route выбираем "no".
3. Выводы, итого...
Мы рассмотрели основные ситуации на простых и удобных примерах, чтобы все было максимально прозрачно и понятно. Но вы должны понимать, что, например, подключенный usb-4G модем и отображающийся как интерфейс lte1 - ничем не отличается от моего rezerv_ISP, более того, если переименовать один в другой, то вообще никакой разницы не будет. В данном примере интерфейс выхода в интернет роли не играет никакой. Главное понять суть.
Другой вопрос, что все вышеизложенные методы описывают ситуацию, когда работает только 1 провайдер, а второй висит в режиме ожидания. Для дома этого, в принципе, достаточно. Но есть вариант использования двух провайдеров одновременно. Чтобы не затягивать данную статью, я опишу его в одной из следующих. Но надо понимать, что речь не о суммаризации скорости двух и более провайдеров - такое практически невозможно с такими вводными и оборудование, которое умеет это делать, стоит уже как машина. Но кое-чего интересного можно будет добиться и от нашего микротика.
Надеюсь, вам было интересно и все понятно с данной темой. Очень сложно было упростить весь материал до "объяснения на пальцах", не пользуясь терминологией и идти от простого к сложному... Не судите строго, если, вдруг, что-то осталось непонятным - задавайте вопросы в комментариях, всегда стараюсь отвечать или направить в нужную сторону ваш пытливый ум. Спасибо за прочтение, за лайк и подписку - огромная благодарность! Удачи!