Настройка двух провайдеров на MikroTik, балансировка и автопереключение

 

Для настройки двух провайдеров маршрутизатор(роутер) MikroTik необходимо привести к Базовой настройке →.

 

Нужна настройка 2 провайдеров в MikroTik?

Настройка сервисов на маршрутизаторах MikroTik: подключение интернета, DHCP, brige, VLAN, WiFi, Capsman, VPN, IpSec, PPTP, L2TP, Mangle, NAT, проброс портов, маршрутизация(routing), удаленное подключение и объединение офисов.

 

Динамическая и статическая маршрутизация в MikroTik

Для регулирования последовательностью движения трафика, в свойствах маршрута(route) есть атрибут Distance. Значением этого атрибута и нужно манипулировать для указания в какой из интернет каналов в будет убегать трафик.

 

Настройка находится в IP->Routes

Настройка нескольких провайдеров на MikroTik, distance route

При появлении 2-ого провайдера нужно контролировать значение Distance. Есть два пути для этого действия:

Создание статического маршрута

На примере DHCP client: необходимо зафиксировать шлюз, который указан в динамическом маршруте.

Настройка нескольких провайдеров на MikroTik, динамический маршрут

Отключить добавление маршрута по умолчанию

Настройка находится в IP->DHCP client

Настройка нескольких провайдеров на MikroTik, отлючить маршрут по умолчанию

 

Создать статический маршрут, где

Dst. Address = 0.0.0.0/0;

Gateway = зафиксированный шлюз.

Настройка находится в IP->Routes

Настройка нескольких провайдеров на MikroTik, добавить статический маршрут

Также этот способ является методом по умолчанию описания свойств интернет подключения для статического IP адреса.

Указать Distance в типе подключения

  • PPPoe
  • DHCP клиент

Настройка находится в PPP->Interface

Настройка нескольких провайдеров на MikroTik, изменение distance для PPPoe

 


Автоматическое переключение между двумя провайдерами в MikroTik

Это пример будет состоять из двух линий интернета – основной и резервной. Резервная линия будет включать лишь тогда, когда основная будет недоступной.

Настройка нескольких провайдеров на MikroTik, схема сети

В маршрутизаторах(роутерах) MikroTik чаще всего используют два самых распространённых метода по ограничиванию скорости для локальных подключений:

  1. С резервированием канала. Имеет популярность в QOS трафике – звук и видео, тем самым не позволяет создавать прерывания при загрузке общего канала.
  2. Равномерное распределение ширины канала на всех участников. Продуктивный способ использования интернет канала на всю ширину.

И масса других вариантов, когда можно комбинировать оба способа в разной последовательности. В рамках данной статьи рассмотрим п.2, как более часто встречаемое в частном и корпоративном сегменте.

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

Провайдер-1 Distance = 1;

Настройка находится в IP->Routes

Настройка нескольких провайдеров на MikroTik, distance route

 

Провайдер-2 Distance = 2.

Настройка нескольких провайдеров на MikroTik, определение второго интернет провайдера

Методы указания Distance возлагаются на фантазию специалиста по настройке MikroTik.

Как работает автоматическое переключение интернета в MikroTik

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

Настройка находится в IP->Routes

Настройка нескольких провайдеров на MikroTik, пример работы двух провайдеров в автоматическом режиме

Но как только основная линия станет недоступной, на основании значения Distance произойдет переключение на резервную линию. Резервная линия будет оставаться в работе до тех пора, пока интернет на основной линии не восстановится. Это полностью автоматический процесс.

Настройка нескольких провайдеров на MikroTik, автоматическое переключение на резервного провайдера

 

Не работает автоматические переключение интернета в MikroTik

Достаточная большая часть статических маршрутов с указанным Distance и параметром Ping может не отработать при отсутствии интернета на основном канале. В этом случае стоит обратиться к утилите Netwatch, которая лучше отработает сценарий при изменении состояния интерфейса с UP на DOWN и в обратную сторону. Как правильно настроить правила для переключения между провайдера используя утилиту Netwatch в MikroTik рассмотрено в статье “Настройка резервирования интернета в MikroTik, автопереключение провайдера через Netwatch →

Одновременное использование двух провайдеров в MikroTik

Будет рассмотрена ситуация, когда нужно использовать одновременно две линии интернета по принципу:

  • Группа-1(192.168.0.2-192.168.0.100) – через провайдера-1;
  • Группа-2(192.168.0.101-192.168.0.200) – через провайдера-2;

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

Для удобства редактирования групп будут созданы Address List, в которые необходимо добавлять или удалять узлы, которые будут назначать или провайдеру-1 или провайдеру-2.

Настройка находится в IP->Firewall-Address Lists

Настройка нескольких провайдеров на MikroTik, создание address list-1

Настройка нескольких провайдеров на MikroTik, создание address list-2

 

Подготовленные адрес листы, а точнее маршруты в интернет нужно промаркировать с помощью Mangle

Маркировка маршрутов Mangle

Настройка находится в IP->Firewall-Mangle

Настройка нескольких провайдеров на MikroTik, маркировка пакета prerouting

Настройка нескольких провайдеров на MikroTik, маркировка пакета Scr address

Настройка нескольких провайдеров на MikroTik, mark routing

 
/ip firewall mangle
add action=mark-routing chain=prerouting dst-address=!192.168.0.0/24 \
new-routing-mark=Group-1-Route passthrough=yes src-address-list=Group-1

Аналогичную маркировку в разделе Mangle нужно создать для Group-2.

Создание статического маршрута для маркированных узлов

Настройка находится в IP->Routes

Настройка нескольких провайдеров на MikroTik, статический маршрут провайдера 1

Настройка нескольких провайдеров на MikroTik, статический маршрут провайдера 2

/ip route
add gateway=10.10.10.10 routing-mark=Groupe-1-Route
add gateway=11.11.11.11 routing-mark=Groupe-2-Route
 

Стоит обратить внимание на параметр Distance, в этой схеме он не участвует. Но если нужно расширить эту схему автоматическим переключением на резервную линию между провайдерами, достаточно добавить два статических маршрута со значением distance 1 и 2.

Балансировка нагрузки между двумя интернет провайдерами в MikroTik

Пропускная способность канала и его стабильность выносятся за рамки данной настройки. Предположим есть две линии интернета по 100мб.

Настройка находится в IP->Routes

Настройка нескольких провайдеров на MikroTik, балансировка нагрузки

Суть этого правила в том, что первый узел будет переадресован к провайдеру-1, а второй – к провайдеру-2. Если ширина каналов не равномерная, к примеру у первого провайдера 50Мб, а у второго 100Мб, то правило можно привести к виду

Настройка нескольких провайдеров на MikroTik, вариант балансировки нагрузки

 


Балансировка и резервирование в MikroTik используя NTH

Можно также применить схему, в которой каждое соединение будет промаркировано по принципу:

четный-пакет = провайдер-1

нечетный-пакет = провайдер-2

/ip firewall mangle
add dst-address=!192.168.0.0/24 src-address=192.168.0.0/24 action=mark-routing chain=prerouting new-routing-mark=Groupe-1-Route nth=2,1
add dst-address=!192.168.0.0/24 src-address=192.168.0.0/24 action=mark-routing chain=prerouting new-routing-mark=Groupe-2-Route nth=2,2

/ip route 
add distance=1 gateway=10.10.10.10 routing-mark=Groupe-1-Route check-gateway=ping
add distance=1 gateway=11.11.11.11 routing-mark=Groupe-2-Route check-gateway=ping

add distance=2 gateway=11.11.11.11 routing-mark=Groupe-1-Route
add distance=2 gateway=10.10.10.10 routing-mark=Groupe-2-Route

Такой подход к балансировке будет совмещать два свойства: балансировка + резервирование.

Балансировка. Когда оба провайдера будут работать, нагрузка будет распределяться 50:50.

Резервирование. Если один из провайдеров перестанет работать – его нагрузка будет назначена второму провайдеру.

Балансировка 2 провайдеров используя Mangle

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

Когда работают оба провайдеры, нагрузка распределяется согласно ручному распределению в Address list.

ISP-1=Down & ISP-2=Up  соединения Group-1 очищаются и начинают работать через ISP-2. При этом соединения Group-2 остаются не тронутыми. При восстановлении связи с ISP-1, соединения Group-1 также очищаются и трафик вместо ISP-2 начинает проходить через ISP-1.

ISP-1=Up & ISP-2=Down → соединения Group-2 очищаются и начинают работать через ISP-1. При этом соединения Group-1 остаются не тронутыми. При восстановлении связи с ISP-2, соединения Group-2 также очищаются и трафик вместо ISP-1 начинает проходить через ISP-2.

  • ethe1 – провайдер со статическим IP;
  • ethe8 – провайдер с динамическим IP.

Разделение сети на два диапазона

/ip firewall address-list
add address=192.168.88.25-192.168.88.90 list=Group-1
add address=192.168.88.91-192.168.88.200 list=Group-2
add address=192.168.88.0/24 list=Local-Subnet

Маркировка соединений

#Для входящих и исходящих подключений

/ip firewall mangle
add action=mark-connection chain=input in-interface=ether1 new-connection-mark=From-ISP-1 passthrough=yes
add action=mark-routing chain=output connection-mark=From-ISP-1 new-routing-mark=To-ISP-1 passthrough=yes
add action=mark-connection chain=input in-interface=ether8 new-connection-mark=From-ISP-2 passthrough=yes
add action=mark-routing chain=output connection-mark=From-ISP-2 new-routing-mark=To-ISP-2 passthrough=yes

#Маркировка маршрутов для двух отдельных групп

add action=mark-connection chain=prerouting dst-address-list=!Local-Subnet new-connection-mark=To-ISP-1-Connection passthrough=yes src-address-list=Group-1
add action=mark-routing chain=prerouting connection-mark=To-ISP-1-Connection new-routing-mark=To-ISP-1 passthrough=no src-address-list=Group-1
add action=mark-connection chain=prerouting dst-address-list=!Local-Subnet new-connection-mark=To-ISP-2-Connection passthrough=yes src-address-list=Group-2
add action=mark-routing chain=prerouting connection-mark=To-ISP-2-Connection new-routing-mark=To-ISP-2 passthrough=no src-address-list=Group-2

Автоматическое добавление маршрутов при изменении шлюза

/ip dhcp-client
add add-default-route=no disabled=no interface=ether8 script="{\r\
\n:local rmark \"ISP-2\"\r\
\n:local count [/ip route print count-only where comment=\"ISP-2\"]\r\
\n:if (\$bound=1) do={\r\
\n:if (\$count = 0) do={\r\
\n/ip route add gateway=\$\"gateway-address\" comment=\"ISP-2\" distance=2\
\r\
\n/ip route add gateway=\$\"gateway-address\" comment=\"Netwatch-2\" dista\
nce=1 dst-address=8.8.4.4\r\
\n/ip route add gateway=\$\"gateway-address\" comment=\"Group-2\" distance\
=1 routing-mark=To-ISP-2\r\
\n} else={\r\
\n:if (\$count = 1) do={\r\
\n:local test [/ip route find where comment=\"ISP-2\"]\r\
\n:if ([/ip route get \$test gateway] != \$\"gateway-address\") do={\r\
\n/ip route set \$test gateway=\$\"gateway-address\"\r\
\n}\r\
\n} else={\r\
\n:error \"Multiple routes found\"\r\
\n}\r\
\n}\r\
\n} else={\r\
\n/ip route remove [find comment=\"ISP-2\"]\r\
\n/ip route remove [find comment=\"Netwatch-2\"]\r\
\n/ip route remove [find comment=\"Group-2\"]\r\
\n}\r\
\n}" use-peer-dns=no use-peer-ntp=no

Настройка статической маршрутизации

/ip route
add comment=Group-1-1 distance=1 gateway=111.158.227.1 routing-mark=To-ISP-1
add comment=Group-2-1 disabled=yes distance=2 gateway=200.45.147.1 \
routing-mark=To-ISP-1
add comment=Group-2-2 distance=1 gateway=200.45.147.1 routing-mark=To-ISP-2
add comment=Group-1-2 disabled=yes distance=2 gateway=111.158.227.1 \
routing-mark=To-ISP-2
add comment=ISP-1 distance=1 gateway=111.158.227.1
add comment=ISP-2 distance=2 gateway=200.45.147.1
add comment=Netwatch-2 distance=1 dst-address=8.8.4.4/32 gateway=200.45.147.1
add comment=Netwatch-1 distance=1 dst-address=8.8.8.8/32 gateway=\
111.158.227.1

Настройка 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 }"

Контроль ICMP запросов через нужный интерфейс

/ip firewall filter
add action=drop chain=output comment=Netwatch-1 dst-address=8.8.8.8 out-interface=!ether1 protocol=icmp
add action=drop chain=output comment=Netwatch-2 dst-address=8.8.4.4 out-interface=!ether8 protocol=icmp

Одновременный проброс с двух провайдеров в MikroTik

Входящая задача: сделать проброс портов таким образом, чтобы сервер отвечал с того провайдера, с которого пришёл запрос. На практике это может быть Web сервер(443\https), у которого объявлены две DNS записи с двумя внешними IP роутера MikroTik.

/ip firewall mangle 
add chain=forward action=mark-connection new-connection-mark=From-ISP-1 passthrough=no in-interface=ether1
add chain=prerouting action=mark-routing new-routing-mark=To-ISP-1 connection-mark=From-ISP-1 in-interface=bridge
add chain=forward action=mark-connection new-connection-mark=From-ISP-2 passthrough=no in-interface=ether2
add chain=prerouting action=mark-routing new-routing-mark=To-ISP-2 connection-mark=From-ISP-2 in-interface=bridge
 

Додати коментар


Захисний код
Оновити

EcoMonitoring

ЛІЧІЛЬНИК ВІДВІДУВАННЬ

Сьогодні 513
Вчора386
Цього тижня 899
Минулого тижня 2262
Цей місяць 8457
Минулий місяць 9310
За весь час 172491
Ваш IP: 18.216.93.197
Сегодня: 2025-04-28
Пользователей на сайте: 0
Гостей на сайте: 86