Балансирование трафика с двух каналов интернет на Mikrotik

Октябрь 26.2019

Задача: реализовать сбалансированную нагрузку на двух провайдеров интернет с учетом входящего трафика.

Реализовывать будем на роутере Mikrotik. В качестве двух каналов интернет будут использованы профессиональные роутеры Tandem-4GL-OEM с 4G мобильным интернетом.

Первоначальная настройка роутера подробно описана в статье Настройка роутера Mikrotik 

В качестве интернет - интерфейсов WAN будут 2 DHCP-клиента с разными IP адресами

Итак, 2 канала интернет работают, локальная сеть и Wi-Fi объединены в Bridge.

1. Создаем новые маршруты.

Перейдите в меню IP - Routes, Нажмите + (Добавить новый маршрут)

Требуется поставить "маркер" на маршруты каждого интернет-канала.

Заполните все поля как на картинке ниже, в поле Gateway введите шлюз вашего провайдера

Требуется поставить "маркер" на маршруты каждого интернет-канала.

Заполните все поля как на картинке ниже, в поле Gateway введите шлюз вашего провайдера

Сейчас нужно создать маршруты локальной сети с "маркерами" каждого интернет-канала

Нажимаем +, вводим данные как на картинке.

  • В поле Dst. Address вводим пул адресов вашей локальной сети. (192.168.10.0/24 означает пул 192.168.10.0 - 192.168.10.255)
  • В поле Gateway выбираем Bridge вашей локальной сети

Создайте еще один маршрут аналогично, за исключением Routing Mark: isp1.

В итоге должно получиться 4 новых маршрута

2. Настройка Firewall Mangle. Для обработки маркированных пакетов в RouterOS Mikrotik использется утилита Mangle.

Перейдите в меню IP - Firewall - вкладка Mangle.

Здесь нужно создать 3 правила. Нажмите + и заполните поля как на картинке. Данные вводятся на вкладках General и Action.

В поле Dst. Address введите пул адресов вашей локальной сети. 

Добавьте еще одно правило. Нажмите + и заполните поля как на картинке. Данные вводятся на вкладках General и Action.

Первое правило обнаруживает все не промаркированные (новые) подключения, которые идут не в нашу локальную сеть, а следовательно пойдут через WAN интерфейс и маркирует их нужной меткой. Второе правило подключениям с нужной меткой назначает марк роутинга. Comment служит для того что бы мы могли найти это правило скриптом.

3. Создание скрипта сравнения загруженности каналов.

 Переходим в меню System - Scripts и создаем новый скрипт кнопкой +. В поле Name вводим имя скрипта

В поле Source впишите скрипт:

 :global rx1 "0"
:global rx2 "0"
/interface monitor WAN1 once do={
:global rx1 $("rx-bits-per-second");
}
/interface monitor WAN2 once do={
:global rx2 $("rx-bits-per-second");
}
:local one 20000000
:local two 8000000
:global wan1 ($one / $rx1)
:global wan2 ($two / $rx2)
if ($wan1>$wan2) do={/ip firewall mangle set [find comment=multiwan] new-routing-mark=isp1} else={/ip firewall mangle set [find comment=multiwan] new-routing-mark=isp2}

Сначала мы обнуляем переменные, потом получаем в эти переменные данные о загруженности интерфейсов (количество получаемых бит в секунду, за что отвечает параметр rx-bits-per-second). Далее в переменные one и two вписываем ширину каждого интернет-канала в битах, и получаем  относительную загруженность. Затем сравниваем: если число больше у первого WAN то в наш Mangle  вписываем Router mark для WAN1, иначе к WAN2.

 4. Задаем периодичность выполнения скрипта

  • Перейдите в меню System - Sheduler и нажмите +.
  • Введите имя задержки выполнения в поле Name.
  • В поле Interval введите интервал повторения скрипта. Мы установили 5 секунд
  • В поле On Event введите: /system script run erazel_balancing

Теперь мы имеем полностью автоматическую систему балансировки нагрузки на внешние интерфейсы в зависимости от их относительной загруженности.

Похожие СТАТЬИ

ОТПРАВИТЬ ЗАПРОС МЕНЕДЖЕРУ
Удалить ответ?

Удалить вопрос?

Опубликовать вопрос?

Ответ на вопрос