Инструкция по настройке 2-ух провайдеров на роутере MikroTik. В описании буду рассмотрены два распространённых типа работы двух провайдеров: резервирование и балансировка.
Резервирование(автопереключение) — при обрыве провайдера-1, весь интернет трафик переключается на провайдера-2;
Балансировка — тип настройки, когда две линии интернета работают одновременно. Распределение между провайдером-1 и провайдером-2 может быть в ручном или автоматическом режиме.
Настройка двух провайдеров в MikroTik, предварительная подготовка
Данный набор настроек будет считаться контрольной точкой для дальнейших режимов работы роутера MikroTik, а именно резервирования(автопереключения) и балансировки.
В исходной настройке роутера MikroTik произведена базовая настройка и как минимум один интернет провайдер уже работает.
Начать нужно с того, что требуется физическое подключение 2-ого провайдера. Для этого нужно подготовить свободный порт и исключить его из Bridge(LAN).
Освободить порт для 2-ого провайдера
Настройка находится Bridge→Ports
На данном примере, был удалён ether2 со списка портов, принадлежащих к Bridge-LAN.
Настроить 2-ого провайдера
Настройка находится IP→DHCP client
Add Default Route = no — статическая маршрутизация для 2-ого провайдера будет доставлена вручную.
Настройка находится IP→Addresses
Настройка находится IP→Routes
Настройка находится PPP→Interface
Add Default Route = no — статическая маршрутизация для 2-ого провайдера будет доставлена вручную.
Добавление 2-ого провайдера в список WAN
Настройка находится Interfaces→Interface List
Список WAN должен включать интерфейсы двух провайдеров для того, чтобы правило Masquerade в IP→Firewall→NAT работало сразу для двух провайдеров
Отключить добавление DNS серверов для провайдера-1
Эти действия приведут к тому, что роутер MikroTik не будет использовать DNS сервера текущих интернет провайдеров. К примеру ситуация переключения на резервную линию может спровоцировать отсутствие DNS ответа, т.к. клиент или сам роутер осуществляет DNS запрос через основного провайдера. А он в то время уже перестал работать. Поэтому будут установлены общедоступные DNS сервера, который будут работать с двух провайдеров.
Настройка находится IP→DHCP client
Настройка находится PPP→Interface
Определить общедоступные DNS сервера
Настройка находится IP→DNS
Отсутствие записей DNS серверов в разделе Dynamic Servers указывает на то, что роутер MikroTik не использует автоматические DNS сервера, которые назначаются в автоматическом режиме.
В Servers стоит указать общедоступные DNS сервера типа Cloudflare DNS и удалить любые другие DNS сервера.
Отключить автоматическое добавление маршрутов
Т.к. все маршруты будут добавлены в ручном режиме, следует отключить все динамические маршруты для основного провайдера. Такие маршруты помечены буквой D(Dynamic) в таблице маршрутизации:
Настройка находится IP→Routes
Настройка находится IP→DHCP client
Настройка находится PPP→Interface
Добавление маршрутов для двух провайдеров
Для переключение между провайдерами, будет использоваться скрипт, который будет находить маршрут с комментарием ISP-1 или ISP-2 и выключать или включать его в зависимости от статуса работы интернета. Ниже будет описан метод, как это можно сделать для типов подключения: статический IP, dhcp клиент, PPPoE подключение. Этим методом нужно воспользоваться для назначения комментария двух провайдеров.
Кроме обозначенных комментариев нужно определить distance = 2.
Настройка находится IP→Routes
В случае с DHCP client значение Gateway можно взять с раздела Status самого DCHP клиента
Настройка находится IP→DCHP Client
Настройка находится IP→Routes
Mangle маркировка ответов для двух провайдеров
Правила маркировки маршрутов нужно определять только для белых(постоянных) IP адресов! Этот набор правил будет гарантировать то, что если пришёл input запрос на порт второго(или первого) провайдера, через этот же порт будет отправлен ответ. При отсутствии этих правил, доступ к роутеру по внешним IP может сопровождаться непредсказуемой работой.
Маркировка будет состоять из двух каскадных правил: маркировки соединения и маркировки маршрута
Настройка находится IP→Firewall→Mangle
/ip firewall mangle add action=mark-connection chain=input in-interface=pppoe-out1 \ new-connection-mark=From-ISP-1 add action=mark-routing chain=output connection-mark=From-ISP-1 \ new-routing-mark=To-ISP-1 add action=mark-connection chain=input in-interface=ether2 \ new-connection-mark=From-ISP-2 add action=mark-routing chain=output connection-mark=From-ISP-2 \ new-routing-mark=To-ISP-2
Статическая маршрутизация для маркированных маршрутов
Кроме стандартных правил маршрутизации, нужно добавить маршруты для промаркированных ответов с раздела Mangle.
Настройка находится IP→Routes
И все текущие правила статической маршрутизации будут иметь вид:
/ip route add distance=1 gateway=pppoe-out1 routing-mark=To-ISP-1 add distance=1 gateway=109.87.159.126 routing-mark=To-ISP-2 add comment=ISP-1 distance=1 gateway=pppoe-out1 add comment=ISP-2 distance=2 gateway=109.87.159.126
Настройка двух провайдеров MikroTik, режим резервирования(автопереключение)
Как было сказано выше, резервирование или автоматическое переключение между провайдерами это режим работы роутера MikroTik, когда есть основной провайдер и резервный. При отсутствии интернета у основного провайдера, должно происходить переключение на резервного провайдера. А когда услуга интернета на основном провайдере будет восстановлена, то следует снова вернуться с резервной линии на основную.
Резервирование(автопереключение) это самый распространённый метод работы двух и более интернет провайдеров на роутере MikroTik.
Описание переключение на резервную линию условно такое: роутер MikroTik будет отправлять ICMP(ping) запросы на 8.8.8.8(Google DNS) и в случае отсутствия ответа или большой задержки, интернет будет переключаться с основной(провайдер-1) линии на резервную(провайдер-2).
Добавить статический маршрут для Google DNS
Настройка находится IP→Routes
/ip route add comment=Netwatch distance=1 dst-address=8.8.8.8/32 gateway=pppoe-out1
Запретить ICMP запросы через провайдера-2
Настройка находится IP→Firewall
/ip firewall filter add action=drop chain=output comment=Netwatch dst-address=8.8.8.8 \ out-interface=ether2 protocol=icmp
Этим правилом будет гарантирована диагностика статуса интернет канала только через провайдера-1. При попытке отправить аналогичный запрос через провайдера-2, Firewall роутера MikroTik будет это блокировать.
Добавить правило Netwatch для переключения
Настройка находится Tools→Netwatch
/tool netwatch add down-script="/ip route disable [find comment=\"ISP-1\"]\r\ \n/ip route enable [find comment=\"ISP-2\"]\r\ \n:foreach i in=[/ip firewall connection find protocol~\"tcp\"] do={ /ip f\ irewall connection remove \$i }\r\ \n:foreach i in=[/ip firewall connection find protocol~\"udp\"] do={ /ip f\ irewall connection remove \$i }\r\ \nlog warning (\"ISP-1 IS DOWN\")" host=8.8.8.8 up-script="/ip route disab\ le [find comment=\"ISP-2\"]\r\ \n/ip route enable [find comment=\"ISP-1\"]\r\ \n:foreach i in=[/ip firewall connection find protocol~\"tcp\"] do={ /ip f\ irewall connection remove \$i }\r\ \n:foreach i in=[/ip firewall connection find protocol~\"udp\"] do={ /ip f\ irewall connection remove \$i }\r\ \nlog warning (\"ISP-1 IS UP\")"
- Host — узел, на который будут отправляться ICMP(ping) запросы;
- Interval — время, в течении которого будет производиться диагностика для смены статуса;
- Timeout — задержка пакета, которая будет восприниматься как отсутствие связи;
- Status — текущий статус узла;
- Закладка Up — скрипт, который будет выполнен, если провайдер-1 восстановит связь, после её обрыва;
- Закладка Down — скрипт, который будет выполнен, если связь с провайдером-1 будет прервана.
Представленными скриптами с помощью утилиты Netwatch будет происходить переключение между провайдерами. Все соединения, которые были установлены через провайлера-1 будут удалены. Это позволит гарантированно переключиться на провайдера-2.
Настройка 2 провайдеров в MikroTik, режим балансировки(одновременная работа)
Существует два метода распределения нагрузки между 2-мя провайдерами в MikroTik:
Ручная балансировка. Все узлы делятся в ручном режиме на 2-ве условные группы и каждая из групп направляется к выделенному ей провайдеру;
Автоматическая балансировка. Узлы роутера MikroTik будут поделены на группы с помощью внутренних инструментов RouterOS.
Пример с балансировкой будет отличаться тем, чтобы в рамках настройки внимание также будет уделено соединениям. Переключение станет более мягким и незаметным и это будет достигнуто благодаря маркировке соединений и частичную их очистку при переключении между провайдерами.
Когда работают оба провайдеры, нагрузка распределяется согласно ручному распределению в Address list.
ISP-1=Down & ISP-2=Up → соединения To-ISP-1 очищаются и начинают работать через ISP-2. При этом соединения To-ISP-2 остаются не тронутыми. При восстановлении связи с ISP-1, соединения To-ISP-1 также очищаются и трафик вместо ISP-2 начинает проходить через ISP-1.
ISP-1=Up & ISP-2=Down → соединения To-ISP-2 очищаются и начинают работать через ISP-1. При этом соединения To-ISP-1 остаются не тронутыми. При восстановлении связи с ISP-2, соединения To-ISP-2 также очищаются и трафик вместо ISP-1 начинает проходить через ISP-2.
Ручная настройка балансировки 2 провайдеров в MikroTik
Как видно из названия, условную подсеть роутера MikroTik будет поделено на две группы: To-ISP-1 и To-ISP-2.
- pppoe-out1 — это провайдер-1;
- ether2 — это провайдер-2.
Настройка находится IP→Firewall→Address List
И для каждой из групп, нужно промаркировать соединения и маршрут, для плавного переключение между провайдерами в случае обрыва одного из них.
Mangle маркировка соединений для балансировки 2 провайдеров
Настройка находится IP→Firewall→Mangle
Mangle маркировка маршрута для балансировки двух провайдеров
Настройка находится IP→Firewall→Mangle
Аналогичные действия по маркировке соединений и маршрута нужно выполнить для Address List = To-ISP-2.
Общий вид раздела Mangle
/ip firewall address-list add address=192.168.2.2-192.168.2.125 list=To-ISP-1 add address=192.168.2.126-192.168.2.254 list=To-ISP-2 /ip firewall mangle add action=mark-connection chain=prerouting disabled=no dst-address-type=\ !local new-connection-mark=To-ISP-1-Connection src-address-list=To-ISP-1 add action=mark-routing chain=prerouting connection-mark=To-ISP-1-Connection \ disabled=no new-routing-mark=To-ISP-1 src-address-list=To-ISP-1 add action=mark-connection chain=prerouting disabled=no dst-address-type=\ !local new-connection-mark=To-ISP-2-Connection src-address-list=To-ISP-2 add action=mark-routing chain=prerouting connection-mark=To-ISP-2-Connection \ disabled=no new-routing-mark=To-ISP-2 src-address-list=To-ISP-2
Для каждой группы узлов To-ISP-1 и To-ISP-2 будет создано по два маршрута, чтобы обеспечить плавное переключение согласно первоначальным условиям по балансировке 2 провайдеров.
Общий вид таблицы маршрутизации при балансировке 2 провайдеров
Настройка находится IP→Route
/ip route add comment=Group-1-1 distance=1 gateway=pppoe-out1 routing-mark=To-ISP-1 add comment=Group-2-1 disabled=yes distance=2 gateway=109.87.159.126 \ routing-mark=To-ISP-1 add comment=Group-2-2 distance=1 gateway=109.87.159.126 routing-mark=To-ISP-2 add comment=Group-1-2 disabled=yes distance=2 gateway=pppoe-out1 \ routing-mark=To-ISP-2 add comment=Netwatch-2 distance=1 dst-address=8.8.4.4/32 gateway=109.87.159.126 add comment=Netwatch-1 distance=1 dst-address=8.8.8.8/32 gateway=\ pppoe-out1
Контроль ICMP запросов через нужный интерфейс
Эти правила обеспечат контроль статуса интернет соединения для каждого из провайдера. Диагностика статуса интернета будет осуществляться только через те интерфейсы, которые обозначены в таблице маршрутизации с комментариями Netwatch-1 и Netwatch-2.
Настройка находится IP→Firewall→Filter Rules
/ip firewall filter add action=drop chain=output comment=Netwatch-1 dst-address=8.8.8.8 \ out-interface=ether2 protocol=icmp add action=drop chain=output comment=Netwatch-2 dst-address=8.8.4.4 \ out-interface=!ether2 protocol=icmp
Настройка Netwatch для переключения провайдеров
И собственно утилита Netwatch, именно она будет заниматься переключением между провайдерами в случае обрыва связи на одном из них.
Настройка находится Tools→Netwatch
/tool netwatch add down-script="/ip route disable [find comment=\"ISP-2\"]\r\ \n/ip route disable [find comment=\"Group-2-2\"]\r\ \n/ip route enable [find comment=\"Group-1-2\"]\r\ \nlog warning (\"ISP-2 IS DOWN\")\r\ \n:foreach i in=[/ip firewall connection find connection-mark~\"To-ISP-2-C\ onnection\"] do={ /ip firewall connection remove \$i }" host=8.8.4.4 \ up-script="/ip route enable [find comment=\"ISP-2\"]\r\ \n/ip route enable [find comment=\"Group-2-2\"]\r\ \n/ip route disable [find comment=\"Group-1-2\"]\r\ \nlog warning (\"ISP-2 IS UP\")\r\ \n:foreach i in=[/ip firewall connection find connection-mark~\"To-ISP-2-C\ onnection\"] do={ /ip firewall connection remove \$i }" add down-script="/ip route disable [find comment=\"ISP-1\"]\r\ \n/ip route disable [find comment=\"Group-1-1\"]\r\ \n/ip route enable [find comment=\"Group-2-1\"]\r\ \nlog warning (\"ISP-1 IS DOWN\")\r\ \n:foreach i in=[/ip firewall connection find connection-mark~\"To-ISP-1-C\ onnection\"] do={ /ip firewall connection remove \$i }" host=8.8.8.8 \ up-script="/ip route enable [find comment=\"ISP-1\"]\r\ \n/ip route enable [find comment=\"Group-1-1\"]\r\ \n/ip route disable [find comment=\"Group-2-1\"]\r\ \nlog warning (\"ISP-1 IS UP\")\r\ \n:foreach i in=[/ip firewall connection find connection-mark~\"To-ISP-1-C\ onnection\"] do={ /ip firewall connection remove \$i }"
Балансировка и резервирование в MikroTik используя настройки NTH раздела Mangle
Можно также применить схему, в которой каждое соединение будет промаркировано по принципу:
четный-пакет = провайдер-1
нечетный-пакет = провайдер-2
Настройка находится IP→Firewall→Mangle
/ip firewall mangle add action=mark-connection chain=prerouting disabled=yes dst-address-type=\ !local new-connection-mark=To-ISP-1-Connection src-address-list=To-ISP-1 nth=2,1 add action=mark-routing chain=prerouting connection-mark=To-ISP-1-Connection \ disabled=yes new-routing-mark=To-ISP-1 src-address-list=To-ISP-1 add action=mark-connection chain=prerouting disabled=yes dst-address-type=\ !local new-connection-mark=To-ISP-2-Connection src-address-list=To-ISP-2 nth=2,2 add action=mark-routing chain=prerouting connection-mark=To-ISP-2-Connection \ disabled=yes new-routing-mark=To-ISP-2 src-address-list=To-ISP-2
Балансировка между двумя провайдерами будет производиться в соотношении 50:50, это определяется параметрами nth=2,1 и nth=2,2.
Все остальные действия по настройке маршрутизации, Firewall и Netwatch будут аналогичны описанных в разделе «Ручная балансировка 2 провайдеров в MikroTik →«.
Настройка балансировки двух провайдеров Per Connection Classifier (PCC) раздела Mangle
Per Connection Classifier (PCC) позволят разделить трафик на равные потоки с возможностью держать пакеты с определенным набором параметров в одном потоке (определяется в наборе параметров из src-address, src-port, dst-address, dst-port)
Настройка находится IP→Firewall→Mangle
/ip firewall mangle add action=mark-connection chain=prerouting dst-address=\ !192.168.2.0/24 new-connection-mark=To-ISP-1-Connection \ per-connection-classifier=both-addresses-and-ports:2/0 src-address=\ 192.168.2.0/24 add action=mark-routing chain=prerouting connection-mark=To-ISP-1-Connection \ new-routing-mark=To-ISP-1 src-address=192.168.2.0/24 add action=mark-connection chain=prerouting dst-address=\ !192.168.2.0/24 new-connection-mark=To-ISP-2-Connection \ per-connection-classifier=both-addresses-and-ports:2/1 src-address=\ 192.168.2.0/24 add action=mark-routing chain=prerouting connection-mark=To-ISP-2-Connection \ new-routing-mark=To-ISP-2 src-address=192.168.2.0/24
Все остальные действия по настройке маршрутизации, Firewall и Netwatch будут аналогичны описанных в разделе «Ручная балансировка 2 провайдеров в MikroTik →«.
Провайдер меняет шлюз в DHCP клиенте, не работает переключение или балансировка
DHCP клиент это один из самых распространённых типов настроек WAN интерфейса. Все настройки проходят в автоматическом режиме и не требуют ни каких дополнительных усилий. Однако в варианте с балансировкой двух провайдеров, используемая настройка требует явного определения шлюза(Gateway) в таблице маршрутизации. А если IP адрес серый(динамический), то правила с балансировкой перестанут работать при его изменении.
Для того, чтобы в правиле статической маршрутизации указывался текущий шлюз(Gateway) провайдера, в свойствах DHCP клиента следует укатать скрипт
Настройка находится IP→DHCP client
{ :local rmark "ISP-2" :local count [/ip route print count-only where comment="ISP-2"] :if ($bound=1) do={ :if ($count = 0) do={ /ip route add gateway=$"gateway-address" comment="ISP-2" distance=2 } else={ :if ($count = 1) do={ :local test [/ip route find where comment="ISP-2"] :if ([/ip route get $test gateway] != $"gateway-address") do={ /ip route set $test gateway=$"gateway-address" } } else={ :error "Multiple routes found" } } } else={ /ip route remove [find comment="ISP-2"] } }
И аналогичный пример, только для первого провайдера с добавлением маршрута к 8.8.4.4.
{ :local rmark "ISP-1" :local count [/ip route print count-only where comment="ISP-1"] :if ($bound=1) do={ :if ($count = 0) do={ /ip route add gateway=$"gateway-address" comment="ISP-1" distance=1 /ip route add gateway=$"gateway-address" comment="Netwatch" distance=1 dst-address=8.8.4.4 } else={ :if ($count = 1) do={ :local test [/ip route find where comment="ISP-1"] :if ([/ip route get $test gateway] != $"gateway-address") do={ /ip route set $test gateway=$"gateway-address" } } else={ :error "Multiple routes found" } } } else={ /ip route remove [find comment="ISP-1"] /ip route remove [find comment="Netwatch"] } }
Скрипт может быть дополнен добавлениями(и удалениями) маршрутов для Routing-mark и Netwatch.
Одновременный проброс с двух провайдеров в MikroTik настройка Mangle
Входящая задача: сделать проброс портов таким образом, чтобы сервер отвечал с того провайдера, с которого пришёл запрос. На практике это может быть Web сервер(443\https), у которого объявлены две DNS записи с двумя внешними IP роутера MikroTik.
Настройка находится IP→Firewall→Mangle
/ip firewall mangle add chain=forward action=mark-connection new-connection-mark=From-ISP-1 in-interface=pppoe-out1 add chain=prerouting action=mark-routing new-routing-mark=To-ISP-1 passthrough=no connection-mark=From-ISP-1 in-interface=bridge add chain=forward action=mark-connection new-connection-mark=From-ISP-2 in-interface=ether2 add chain=prerouting action=mark-routing new-routing-mark=To-ISP-2 passthrough=no connection-mark=From-ISP-2 in-interface=bridge
где
- pppoe-out1 — это провайдер-1;
- ether2 — это провайдер-2;
- bridge — локальный bridge интерфейс.
Не позволяет создать маршрут без указания distance.
Самостоятельно настроить микротик на 2провайдера не получилось, но все заработало после обращения за помощью к специалистам сайта. Спасибо за настройку!
Подтверждаю. Инструкцию по настройке 2ух провайдеров в Микротике тяжело осилить самостоятельно
Если сравнивать с переключением через Netwatch, то последняя постабильнее будет для двух провайдеров в MikroTik.
Максим,
Подтверждаю, все сделал по статье, тютелька-в-тютельку.
1. Дистанция проставляется «1», хотя в статье указано, что дистанции не должно быть. Микротик не дает пустое поле проставить.
2. Не работает.
Николай, вы делаете поспешные выводы, в статье нет указания, что статический маршрут можно сохранять с пустым параметром distance. Уточню по статье:
1. В примерах, где не указан distance он заполняется автоматически значением 1
2. Балансировка двух провайдеров регулируется не distance, а gateway
Ошибку делаете или вы самостоятельно или ваша прошивка. Статья не панацея, рассматривайте её как заметку автора а не руководство к действию.
Что произойдёт в сценарии балансировки нагрузки, если канал одного из интернет-провайдеров «упадёт»?
Возникнут ли проблемы с маршрутизацией трафика?
По идее должен переключится на другой
А почему не рассматривается сценарий, когда нужно пустить трафик одного интерфейса через одного провайдера, а других интерфесов через второго провайдера?
Например — компы, рабочий вифи через более скоростного оператора, а телефоны и гостевую сеть через резервного и плюс сделать так, что бы с рабочих компов был доступ до телефонов.
Я пустил трафик одного интерфейса через оператора1, а весь остальной через оператора2, при помощм Mangle. на прероуте промаркировал и в NATe пустил через другого операта. + нарисовал дефолт для маркированного трафика
Потерял доступ к телефонам. Головой понимаю, что из-за маркировки трафика, но не могу понять, как сделать что бы «внутри» микротика маршрутизация продолжала работать.
все супер. у кого не получается сначала обновите прошивку до последней стабильной.
по умол, переключает провайд.в маскараде указивать не интерфейс а src.address ваша локалка.
А вот как настроить одновременную работу в MikroTik, но для 3-ех провайдеров? Не хватает скорости в сети, нужна также применять Mangle? К кому можно обратиться за помощью по этой настройке?
Как это всё проделать на RoS 7.1
Там намудрил с
Спасибо за подробную статью с пояснениями.
Все объясняется таким способом чтобы большинство читателей не понимали что они делают. Те же скрипты написанные неизвестно каким программистом, вмешиваются в штатную работу исходного кода нарушая математическую гармонию всей программы 🙂 Как следствие неискушенные люди читающие статью наталкиваются на мысль обратиться за помощью к специалистам. И о чудо прямо сдесь в этой длинной и сложной для переваривания статье можно обратиться к профессионалам, даже баннер как бы намекает 🙂 Недружелюбность RouteOS и учебная литература рассчитанная на инженеров и программистов, это отличное средство для отмывания бабла, такова политика Mikrotik зачем делать все просто и понятно если из за этого будет меньше прибыли ?
как насчет привести удобную альтернативу для домохозяек? где не нужно знать что такое шлюзы маршруты и все такое. где просто «нажал волшебную кнопочку- и все само сделалось» ?
routerOS это лишь интерфейс, позволяющий управлять и настраивать сетевые соединения в соответствии со стандартами. если вам не знаком какой-либо термин из интерфейса-это не является признаком недружелюбности интерфейса- просто этот инструмент не рассчитан для неопытных. (кстати у него есть Quick Seetings) и из коробки он готов к базовой работе в доме о принципу «включи и работай».
для вас придумали как раз TP-link c двумя кнопками
=)
RouterOS не призначений для рядових користувачів ПК. Роутери mikrotik (так само як і Cisco та інше професійне мережеве обладнання) потрібно купувати виключно у випадках, якщо ти знаєш для чого тобі він та можеш сам (або попросити допомоги в друга/брата/свата/тех-майстра) налаштувати його. Для звичайного користувача є великий вибір роутерів та компаній. «вмешиваются в штатную работу исходного кода нарушая математическую гармонию всей программы 🙂» -> не згоден з вами. Якщо RouterOS дозволяє з коробки використовувати різного роду скрипти, чому б їх не використовувати? Це не є втручанням в штатну роботу роутера («прошивка» в цьому випадку не міняється), а використовується нативний функціонал. Дякую за увагу
Зачем нужно правило фаервола, блокирующее ICMP на 8.8.4.4 через второго провайдера, если есть маршрут, явно указывающий, что на 8.8.4.4 надо ходить только через первого? Чтобы наверняка? И что, если у какого-то клиента своим DNS-сервером как раз указан 8.8.4.4? У него же от такого маршрута всё отвалится при переключении на второго провайдера.
вы верно описали про правила в firewall, они обеспечивают строгую маршрутизацию только через указанного провайдера. На счет клиентов, правило содержит chain=output protocol=icmp ограничения только для роутера.
Так отвалится не из-за правила, а из-за маршрута. Правило дополнительно запрещает пинг через второго провайдера, а маршрут обеспечивает любые обращения на 8.8.4.4 всегда только через первого. Данная инструкция, в отличие от прочих в сети, учитывает множество нюансов, но этот упускает. У маршрута на 8.8.4.4 должна быть метка (routing mark) плюс mangle-правило, пускающее только icmp именно по маршруту с этой меткой. Но если включен fasttrack, то это не сработает: нужно или все DNS-запросы от клиентов заворачивать на DNS роутера/провайдера, или выбрать для теста какой-то другой адрес.
маршрут станет не активным, когда отвалится провайдер(gateway будет unreachable). Поэтому DNS будет работать в описанной ваше схеме
Всё, я понял. Не понял только как тестировал, прежде чем нести свой бред. Маршрутам через Distance задаётся «приоритет», если не срабатывает «верхний» маршрут — срабатывает «нижний», потому и правило фаервола необходимо (всё же выпендрился, и поместил его в Raw). Routing Mark у меня вообще не заработал, т.е. логику я вроде правильно описал, а как воплотить на практике — ещё не дошло.
Доброго дня. Все працює чудово, але маю питання по mangle. Коли прописав mangle рули, як описано в пункті «Ручная настройка балансировки 2 провайдеров в MikroTik», то пропав доступ до vlan підмережі з основної мережі. Як тільки mangle рули дісеблю, то доступ зявляється. Для vlan треба якийсь додатковий mangle прописати чи їх додати в якийсь Addres List?
І ще бачу у вас в командах створення манглів всі вони задісеблені — disabled=yes, це ок?
/ip firewall mangle
add action=mark-connection chain=prerouting disabled=yes dst-address-type=\
!local new-connection-mark=To-ISP-1-Connection src-address-list=To-ISP-1
add action=mark-routing chain=prerouting connection-mark=To-ISP-1-Connection \
disabled=yes new-routing-mark=To-ISP-1 src-address-list=To-ISP-1
add action=mark-connection chain=prerouting disabled=yes dst-address-type=\
!local new-connection-mark=To-ISP-2-Connection src-address-list=To-ISP-2
add action=mark-routing chain=prerouting connection-mark=To-ISP-2-Connection \
disabled=yes new-routing-mark=To-ISP-2 src-address-list=To-ISP-2
Верно, Vlan нужно добавить в список исключения
додав рул щоб не маркати внутрішній трафік, допомогло, дякую!
/ip route rule add action=lookup-only-in-table dst-address=192.168.0.0/16 table=main
Добрый день. Выше уже писали подобный вопрос. Есть 2 провайдера. Интересно настроить ISP-1 только для vpn тунеля во 2 офис, а ISP-2 только для инета. Но, при падении 1 из интерфейсов, происходил перевод соединений на другого. Попытаюсь сам настроить на «стенде», но если есть мысли или решения — поделитесь. Спасибо.
В статье по настройке 2 провайдеров есть достаточно много примеров с маркировкой пакетов\маршрутов\соединений(раздел Mangle). Попробуйте эти принципы адаптировать под вашу задачу
Добрый день. С трудом настроил двух провайдеров (я далеко не спец 🙂 — по схеме «основной-резервный». Переключение хорошо работает. Теперь задумался — а есть ли какая-то возможность индикации, от какого провайдера в данный момент я получаю инет? … м.б. какой-то скрипт, чтобы в трее компа светилось? или какая-то сообщалка (в смс, телегу, вайбер, мыло и т.п.) «вы перешли на резервный»-«вы перешли на основной»… или что-то еще 🙂
Если вы использовали Netwatch для переключения между провайдерами, то можно отправлять сообщения через Telegram бота, как это сделать →
Прочитал бегло статью, понял, что очень многого просто не знаю и потрачу много времени на изучение. Обратился за помощью по телефону в шапке этого сайта. Артем удаленно подключился сделал все как надо. Очень рекомендую. Спасибо.
Короч історія така.
Два рази скидав на завод і настроював, кожного разу та сама проблема, а саме:
коли пінгую проходить 10 пакетів і зникає інтернет, на 10 пакетів потім з’являється на тих самих 10 пакетів.
Причому так відбувається і на основному і на додатковому каналі.
Основний pppoe додатковий статика.
Підскажіть, що я роблю не так або де шукати зариту собаку. прошивка v6.49.7 (stable)
Дякую за відповідь.
Наблюдал на той же прошивке похожие симптомы при подключении третьим каналом антенны Starlink когда в маршрутах указывал не адрес шлюза, а имя интерфейса. Типа:
/ip route
add distance=1 gateway=inet3
При этом два канала оптики с DHCP прекрасно работали и переключались при указании в маршрутах их интерфейсов.
Заменил в маршрутах интерфейс на адрес шлюза из DHCP этого интерфейса, в том числе и в обработке маркированных пакетов, и всё заходило:
/ip route
add distance=1 gateway=ip_шлюза
Все круто работает переключение.
Есть только одно жирное «но», у меня оба провайдера регулярно, раз в неделю, меняют IP адрес gateway. И вся эта отказоустойчивость благополучно ломается.
Остаюсь без интернета, хотя по факту интернет работает.
Нельзя ли как-то не использовать захардкоженые ip адреса gateway провайдеров?
Конечно можно. Это как раз рассматривается в отдельном пункте Провайдер меняет шлюз в DHCP клиенте
А для чого творити такий ужас з скриптами щоб розділити трафік?
Хіба не простіше
1. промаркірувати трафік з 2х провайдерів.
2. Вказати два шлюзи від обох провайдерів в одному дефолтному маршруті. Тоді буде 50/50
І тут вже можна або рекурсивно провіряти доступність провайдерів, або, якщо це потрібно, через простенький скрипт на кілька рядків, яким можна і конекшени вбивати (наприклад SIP) при будь-якій зміні доступності провайдерів.
можете поділитися таким сриптиком, який при зміні статусу будь-якого з гейтов буде чистити сесії UDP того ж SIP?
знайшов сам, дякую
Для v7 є якісь нюанси?
Чи треба прописувати статичний маршрут для Netwatch, якщо ми все одно блокуємо файрволом цей адрес для другого провайдера?
А, все, сам додумався, бо ми деактивуємо дефолтні роути для перемикання на іншого провайдера
в мене ця конструкція не злетіла, тут все написано заплутано, я б назвав цю статтю «збірка нотаток на тему», з метою що хтось, такий як я, але із меншим терпінням залишить телефон по допомогу)) , однак, якщо потрібно пішить — поділюся своім досвідом.
Зробив таку настройку для 2х провайдерів але через ether2 не пінгується 8.8.4.4.
Якщо підключити на пряму ноут то пінгується.
Як це можна віправити?
Робив поетапно. Скинув всі настройки, зробив базову настроку, а потім настроку з переключення з основного на резервного.
в инструкции по переключению используется 8.8.8.8(не 8.8.4.4). Если речь о 8.8.8.8 то и не должно пинговаться с ether2, это блокируется правилом firewall
Фигня, на 7 версии роутрОС если вписать в маршруты выход 8.8.8.8 через определенный интерфейс, то пинги вообще не идут никак. На 6 версии такого не было. Адаптируйте пожалуйста инструкцию к новой версии прошивки
Используйте IP вместо интерфейса. Сейчас как раз активное обсуждение по переходу с RouterOS v6 на v7. В случае одобрения по переходу, все статьи на сайте будет поэтапно обновлены.
О який жах!!!! Читаю і не розумію)))) В мене 2 мікрота і 2 провайдера , хочу налаштувати все як описано в Інструкції і налаштувати переключення, але мабуть не в моїх це силах))))
статья хорошая но не для 7 версии ……
Подскажите при подключении основного провайдера через PPTP надо ли отключать автоматическое назначение DNS от провайдера и Default route в DHCP client -> ether1
Попробуйте отключить, если будут какие-то проблемы с работой DNS — включите обратно
I managed to set up two providers on the Mikrotik router using Google translator
По поводу Запретить ICMP запросы через провайдера-2 на самом деле при настройке у меня там оказалось ether1 а не 2 и оно работает. Или ошибка в статье или ошибка в настройке. Путаница какая-то…
Настроил на RO7.5 c резервным провайдером. подключился по белому адресу основного провайдера и решил выключить интерфейс резервного провайдера. И все, почему то связь рухнула, и не восстанавливается. Что случилось? Пока не имею доступа к роутеру, что бы посмотреть что там произошло, но подозреваю что интернет там пропал, хотя основной провайдер исправен
При удаленной настройке MikroTik рекомендуется использовать режим Safe mode, чтобы не оказаться в подобной ситуации. Для ответа нужно увидеть, какие параметры вы применили
Добрый день. Есть 2 WAN.
WAN1 1Gbps,
WAN2 100Mbps
Можно ли через PCC настроить чтобы трафик делился не пополам а например 70/30?
Вам нужен параметр per-connection-classifier=both-addresses-and-ports:2/0, в котором вы определяете долю каждого из провайдеров. В вашем случае это 10/0, где 7-мь долей определяете для WAN1 и 3-ри доли для WAN2
А почему именно 7 и 3?
Я думал сделать так 11/0 — 11/9 WAN1 11/10 — WAN2
1000mbit + 100mbit = 1100mbit
По логике должно разбить по долям в 100mbit 10 из которых на WAN1 и 1 на WAN2
Или я что то не так понял?
Понял почему 7 и 3 ))) Если разобью на то как выше расписал буде правильно?
Доли можете менять как угодно, 11/0 тоже будет работать. Главное чтобы эти пропорции не выходили за возможности провайдеров
Делаю отличное от WAN1 2/0 WAN2 2/1 и пропадает инет. Если делю пополам все ок. Не пойму в чем проблема. В статистике пакты уходят и приходят. а speedtest.net не замеряет скорость.
Доброго времени суток, есть задача подключить 3 провайдера (wan). что бы когда у первого нет инет.(не света) то включался автом. 2, если и у него нет то 3, но если у 1 или 2 появился цепочка пошла в обратку, таким образом есть 5 вариантов (1-2,2-3,3-1,3-2,2-1), пробивал сделать через Netwatch с помощью пингов 8.8.8.8, но не получается вернутся с 3 на 2, если 3ий работает а основной 1ый нет, а на 2м лучше инет.
Подскажите варианты или решение данной проблемы, буду очень признателен ♥
Для настройки переключения между 3 WAN(3 провайдера) в MikroTik можно использоваться схему с двумя Netwatch:
Netwatch-1: переключается между WAN-1 и WAN-2. При статусе DOWN включает Netwatch-2, если UP — выключает Netwatch-2
Netwatch-2: переключается между WAN-2 и WAN-3
На выходе получается каскадная схема. Для WAN маршрутов также рекомендуется определять советующие distance, чтобы иметь дополнительный инструмент контроля очередности для интернет маршрутов, т.е. WAN-1=distance-1, WAN-2=distance-2…
Спасибо за ответ, решение нашел методом втыка.
#on
/ip route set [find comment=»ISP1″] disabled=no
#off
/ip route set [find comment=»ISP2″] disabled=yes
/ip route set [find comment=»ISP3″] disabled=yes
/tool netwatch set [find comment=»Netwatch-2″] disabled=yes
Netwatch-1: Down
#off
/ip route set [find comment=»ISP1″] disabled=yes
#on
/ip route set [find comment=»ISP2″] disabled=no
/tool netwatch set [find comment=»Netwatch-2″] disabled=no
Netwatch-2: up
#on
/ip route set [find comment=»ISP2″] disabled=no
#off
/ip route set [find comment=»ISP3″] disabled=yes
Netwatch-1: Down
#off
/ip route set [find comment=»ISP2″] disabled=yes
#on
/ip route set [find comment=»ISP3″] disabled=no
#ISP1,ISP2,ISP3 — это инет.
Начинающий, по этому если есть замечания или грубые нарушения, прошу исправьте меня, буду рад доп. опыту ))
Не дождёмся видимо для ROS7
ROS 7.8
Работа с несколькими провайдерами в режиме резервирования, но входящие запросы (vpn) и пробросы портов (https) должны обрабатываться с обоих провайдеров независимо от того какой из них в текущий момент является основным для офисной сети.
Fasttrack включен.
Динамический DNS от правайдеров отключен и используется статически заданные в микротике 1.1.1.1, 1.0.0.1
Интерфейсы обоих провайдеров включил в список WAN. Сделал Masquerade в IP→Firewall→NAT для этого списка.
Согласно рекомендаций в статье промаркировал соединения и маршруты по обоим провайдерам.
add action=mark-connection chain=input in-interface=ether1 \
new-connection-mark=From-ISP-1
add action=mark-routing chain=output connection-mark=From-ISP-1 \
new-routing-mark=To-ISP-1
add action=mark-connection chain=input in-interface=ether2 \
new-connection-mark=From-ISP-2
add action=mark-routing chain=output connection-mark=From-ISP-2 \
new-routing-mark=To-ISP-2
add chain=forward action=mark-connection new-connection-mark=From-ISP-1 in-interface=ether1
add chain=prerouting action=mark-routing new-routing-mark=To-ISP-1 passthrough=no connection-mark=From-ISP-1 in-interface=bridge
add chain=forward action=mark-connection new-connection-mark=From-ISP-2 in-interface=ether2
add chain=prerouting action=mark-routing new-routing-mark=To-ISP-2 passthrough=no connection-mark=From-ISP-2 in-interface=bridge
Добавил соответствующие маршруты:
/ip route
add comment=TO-ISP-1 distance=1 gateway=192.168.10.1 routing-mark=To-ISP-1
add comment=TO-ISP-2 distance=1 gateway=192.168.11.1 routing-mark=To-ISP-2
add comment=ISP-1 distance=1 gateway=192.168.10.1
add comment=ISP-2 distance=2 gateway=192.168.11.1
Но результатом я остался не доволен.
Если с входящими VPN подключениями через любого из провайдеров никаких проблем нет — всё работает гладко, то вот с пробросом портов к web-серверу (443 порт) всё не так хорошо: входящие запросы через неосновного провайдера обрабатываются туго и ответы клиентам приходят с большим таймаутом.
Т.е если в офисе основным провайдером является ISP-1, то входящие web-запросы на ISP-1 обрабатываются шустро и клиенты получают ответ быстро, а пришедшие через ISP-2 очень туго — можно десяток секунд ждать ответ.
Как только меняю приоретизацию провайдеров (пока в ручном режиме, а не скриптом)
add comment=ISP-1 distance=2 gateway=192.168.10.1
add comment=ISP-2 distance=1 gateway=192.168.11.1
делая провайдера ISP-2 основным, то всё становится с точностью наоборот: входящие запросы на ISP-2 обрабатываются шустро, а те, что приходят через ISP-1 очень сильно тупят.
Такие же трудности испытываю при попытках пропустить часть пользователей локальной сети через резервного провайдера — пинги интернет ресурсов с клиентских машин проходят успешно, tracert говорит, что в интернет идём правильно — через резервное подключение, но при этом пользоваться интернетом на клиентском компьютере практически невозможно: странички в браузере открываются так туго, будто скорость 100 кбит/сек.. Если же «резервного провайдера» на микротике делаю основным, то сразу все проблемы на клиентских машинах уходят.
Не могу понять в чём проблема и как с этим бороться. Можете что-то толковое подсказать? Куда смотреть?
Здравствуйте.
Нужно пустить через второго провайдера только обращения на web proxy, все остальное через первого.
как будут выглядеть правила?
Здравствуйте….
Необходимо сделать балансировку по VLAN… VLAN1 — SP1, VLAN2 — SP2
Переключение на другого провайдера при потере связи — не предусмотрено.
Можно ли использовать статью, как руководство? Что нужно добавить или убрать? Скажите пожалуйста новичку?
к сожалению данная инструкция по настройке двух провайдеров в MikroTik не является прямой инструкцией к выполнению и не подойдёт вам в качестве решения
настроил по инструкции, всё работает.
подскажите, как выдрать из общего правила обратную приоритезацию трафика до нужных ip?
т.е. хочется завести адресс лист куда записать ip до которых трафик будет всегда ходить через резерв,
а если резерв упал то через основной.
пример простой
основной канал провайдер A
резерв канал провайдер Б
требуется поднимать с ПК впн к сети провайдера Б
т.е. что бы по возможности впн работал в сети одного провайдера
через провайдера А оно тоже работает, но локалка есть локалка
в подразделе Ручная настройка описан принцип маркировки(Magle), который вы можете применить для ручной маршрутизации
Добрый день.
Спасибо за подробную инструкцию.
Настроил балансировку по схеме Per Connection Classifier, переключение между каналами работает, но почему-то перестали обрабатываться правила masquerade для VPN-подключений и из-за этого нет связи с удаленными площадками. У меня настроено несколько клиентских подключений до удаленных точек и так же на самом роутере настроены сервера VPN, к которым устанавливаются клиентские подключения. Опытным путем выяснил, что это происходит из-за правил в Mangle mark connection.
Видимо нужно как-то подкорректировать правила masquerade? Не подскажете, в какую сторону копать?
Вам нужно добавить в исключение ваши VPN подсети при маркировке
А в какое поле для этого их надо вписывать?
Спасибо, разобрался.
Добавил все подсети в Adress List с одним именем и его добавил в исключения Dst. Address List на вкладке Advanced для правил mark connection-prerouting.
Проверил — все работает
підкажіть як бути. у мене налаштований резерв на 2 провайдери. основний провайдер видає білий статичний айпі по ДХЦП. періодично провайдер змінює шлюз. відповідно в роутах залишається прописаний старий шлюз і тому не працює інтернет на основному провайдері.
як зробити щоб шлюз в роутах на ISP-1 змінювався при зміні його провайдером?
дякую.
Попробуйте ознакомиться с разделом Провайдер меняет шлюз в DHCP клиенте
А можна те само для 7 версії?
Ще цікавить доступ з різних локальних груп адрес через різних провайдерів.