Mikrotik — балансировка трафика между двумя провайдерами

Сегодня мы с вами разберем на примере настройку балансировки нагрузки на двух WAN-линках  на роутере Mikrotik. Балансировка нагрузки на между двумя каналами доступа и разными провайдерами используется для повышения производительности и надежности доступа в Интернет. Зачем это нужно?

  • Повышение пропускной способности
  • Повышение отказоустойчивости (фейловер)
  • Экономия средств
  • Гибкость настроек
  • Снижение перегрузки одного канала.

Балансировка на MikroTik достигается через использование технологий, таких как Policy-Based Routing (PBR), ECMP (Equal Cost Multi-Path) и Mangle Rules для управления маршрутами и очередями.  Я покажу на примере последнего варианта.

Настройка балансировки между двумя провайдерами

Шаг 1. Настройка IP-адресов:

Начнем с настройки локальных IP-адресов для WAN-линков и локальной сети. Это базовая конфигурация для работы двух провайдеров.

/ip address
add address=1.1.1.199/24 interface=ether1 comment="RTK"
add address=2.2.2.199/24 interface=ether2 comment="Beeline"
add address=192.168.1.1/24 interface=ether3 comment="LAN Gateway"

Шаг 2. Настройка шлюзов:

Задаем несколько шлюзов с проверкой доступности по ICMP (ping), что позволяет автоматически переключаться между каналами при отказе одного из них.

/ip route
add dst-address=0.0.0.0/0 check-gateway=ping gateway=1.1.1.1,2.2.2.1

Шаг 3. Настройка NAT:

Для выхода трафика из локальной сети в интернет через оба WAN-линка настраиваем NAT на интерфейсах.

/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1 comment="RTK"
add action=masquerade chain=srcnat out-interface=ether2 comment="Beeline"

Шаг 4. Маркировка соединений и маршрутизация:

Настроим Mangle для того, чтобы трафик с одного WAN-интерфейса всегда возвращался через тот же интерфейс. Это особенно важно для корректной работы VPN.

/ip firewall mangle
add action=mark-connection chain=input in-interface=ether1 new-connection-mark="RTK Input"
add action=mark-connection chain=input in-interface=ether2 new-connection-mark="Beeline Input"
add action=mark-routing chain=output connection-mark="RTK Input" new-routing-mark="Out RTK"
add action=mark-routing chain=output connection-mark="Beeline Input" new-routing-mark="Out Beeline"

Шаг 5. Балансировка трафика по LAN:

Настроим правила для балансировки трафика, исходящего из локальной сети через два WAN-порта.

/ip firewall mangle
add action=mark-routing chain=prerouting in-interface=ether3 new-routing-mark="Out RTK" per-connection-classifier=both-addresses-and-ports:2/0
add action=mark-routing chain=prerouting in-interface=ether3 new-routing-mark="Out Beeline" per-connection-classifier=both-addresses-and-ports:2/1

Шаг 6. Маршруты с метками:

Завершаем настройку, создавая маршруты по умолчанию с метками для правильного распределения трафика.

/ip route
add distance=1 gateway=1.1.1.1 routing-mark="Out RTK"
add distance=1 gateway=2.2.2.1 routing-mark="Out Beeline"