{sape_links}
Быстрая навигация
802.11ac 802.11ac Wave 2 802.11n Android DVB-T2 Google hAP hAP lite Intel IPSec Keenetic LTE Mikrotik MU-MIMO Netis Qualcomm Realtek RouterBOARD RouterOS Rozetka rozetka.com.ua Strong Trimax Ubiquiti UBNT UniFi wAP 60G Wi-Fi Winbox wireless Zyxel безопасность маршрутизатор обзор обновление промо промо-код прошивка роутер скидкиMikrotik на 2 провайдера: настройка резервного канала в RouterOS
05 февраль 2020
114 705
33
Одна из наиболее популярных задач, решаемых на оборудовании Mikrotik – настройка RouterOS на работу с двумя интернет-провайдерами или, простыми словами, настройка резервного канала. Данный вопрос будет актуальный как для бизнеса, так и для домашних пользователей, которым требуется организовать бесперебойный канал выхода в сеть Интернет.
При помощи описанного метода, вы сможете настроить резервный канал на любом оборудовании Mikrotik RouterBOARD, независимо от типа подключения к сети провайдера.
Вариантом модификации данного метода является использование параметра ping, при котором RouterOS для проверки доступности интернета использует пинг шлюза. Недостатком данного метода является то, что он не обеспечивает корректное переключение на резервный канал в тех случаях, когда шлюз провайдера доступен, а интернет отсутствует.
Решая данную проблему, пользователи порой прибегают к использования самых разнообразных и замысловатых скриптов. К примеру, пару лет назад, я тоже писал подобный скрипт:Казалось бы, хорошая гибкость и большой набор опций? Увы, не все так просто. Во-первых, 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
Для 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, добавляем еще один статический маршрут на этот IP, с указанием шлюза, через который необходимо пересылать пакеты. Иными словами, мы явно указываем маршрутизатору, что на 1.1.1.1 (как пример) надо ходить через первого провайдера.
И все бы хорошо, только RouterOS этого мало, необходимо в чейне Output дополнительно отфильтровать пакеты, которые идут на 1.1.1.1 через второго провайдера по протоколу ICMP (ping). Это позволит избежать отправки и прохождения ICMP-запросов к 1.1.1.1 через резервный канал.
Почти готово. Переходим в Tool – Netwatch и добавляем новый мониторинг:
Во вкладках Up и Down добавляем команды, которые необходимо выполнить в случаях, когда хост в сети и оффлайн. По сути, скрипт ищет маршруты с комментариями ISP1 и ISP2. Если узел 1.1.1.1 недоступен, скрипт отключает маршрут ISP1 и включает резервный маршрут ISP2. В случае, когда узел 1.1.1.1 доступен, скрипт принудительно включает маршрут ISP1.
Работа Netwatch основана на том, что доступ к 1.1.1.1 у нас разрешен только с первого провайдера (ISP1), что и выступает индикатором работоспособности Интернет.
В случае с получением параметров по 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, выходить в интернет через группу интерфейсов «WAN».
Данного правила недостаточно, необходимо, чтобы оба интернет-интерфейса находились в группе WAN. Для вышеприведенной конфигурации это имеет следующий вид:
Также рекомендую отказаться от использования DNS-серверов провайдера. Как показывает практика, они работают менее стабильно, чем сервисы 8.8.8.8 и 1.1.1.1. Если же вы не хотите использовать перечисленные сервисы и хотите использовать DNS-серверы провайдера, необходимо использовать DNS-серверы обеих провайдеров – опция Use Peer DNS в свойствах подключения.
Если вы будете использовать DNS только одного провайдера – при его недоступности, интернет на втором провайдере также будет недоступен. Но даже если вы будете использовать DNS двух провайдеров, возможны небольшие задержки при обработке DNS-запросов, в случаях, когда один из провайдеров недоступен и в кеше DNS отсутствует необходимая запись.
При помощи описанного метода, вы сможете настроить резервный канал на любом оборудовании 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, и для систематизации знаний опытным специалистам.