TanodTools
RU

Генератор балансировки нагрузки и failover для MikroTik

Введите каналы WAN и получите балансировку PCC для RouterOS v7 с failover на рекурсивных маршрутах или только failover, с пояснением каждого блока.

Работает в браузере; введённые вами данные не покидают устройство

Режим
Каналы WAN
    Перечислены в порядке предпочтения для failover и для собственного трафика маршрутизатора.
    Балансировка
    Параметры

    Риск потери доступа. Изменение маршрутов на удалённом маршрутизаторе может отрезать вас от него. Проверьте в лаборатории или сначала включите Safe Mode (Ctrl+X в терминале).

    Создаёт синтаксис RouterOS v7 (таблицы маршрутизации с fib, routing-table в маршрутах). Только IPv4. Для каналов WAN, у которых шлюз меняется по DHCP, шлюз нужно обновлять вручную или скриптом DHCP-клиента. MikroTik и RouterOS являются товарными знаками SIA Mikrotīkls. Этот инструмент независим и не связан с MikroTik и не одобрен этой компанией.

    Как настроить балансировку PCC на MikroTik

    1. Выберите балансировку PCC с failover или только failover.
    2. Добавьте каждый канал WAN: интерфейс, шлюз (или имя интерфейса для PPPoE и LTE), публичный проверочный хост, отвечающий на ping, и вес, определяющий долю соединений.
    3. Перечислите локальные сети и список интерфейсов LAN, отключите add-default-route у клиентов WAN и примените скрипт с включённым Safe Mode.

    Как работает созданная конфигурация

    У балансировки PCC три составные части. Mangle помечает каждое новое соединение из LAN меткой соединения, выбранной по per-connection-classifier, и помечает соединения, пришедшие на WAN, этим WAN, чтобы ответы на проброшенные порты уходили тем же путём, каким пришли. Второй набор правил mangle превращает каждую метку соединения в метку маршрутизации на каждом пакете. Таблицы маршрутизации, по одной на каждый WAN, содержат маршрут по умолчанию через этот WAN, а остальные WAN идут с большей дистанцией как резервные.

    Failover использует рекурсивные маршруты. Маршрут к хосту отправляет один публичный проверочный хост только через соответствующий WAN. Маршруты по умолчанию используют проверочный хост как шлюз с target-scope=11, поэтому RouterOS разрешает его через этот маршрут к хосту, а check-gateway=ping опрашивает проверочный хост каждые десять секунд. Два пропущенных ответа отключают маршрут, и его место занимает следующий по дистанции; когда хост снова отвечает, маршрут возвращается.

    Перед применением

    • Задайте add-default-route=no у клиентов DHCP или PPPoE на WAN, иначе их собственные маршруты по умолчанию возьмут верх.
    • Обновляете старую конфигурацию PCC для v6? Пропустите её экспорт через инструмент «Помощник по переходу с RouterOS v6 на v7», чтобы увидеть, что изменится.
    • Сохраните цепочки input и forward файрвола; инструмент «Генератор файрвола MikroTik» использует списки интерфейсов, поэтому добавьте каждый WAN в список WAN.

    Вопросы и ответы

    Как PCC распределяет трафик?

    per-connection-classifier хеширует поля каждого нового соединения (оба адреса или адреса и порты) в N корзин, и каждый канал WAN получает часть корзин. Соединение сохраняет свою метку, поэтому все его пакеты идут через один и тот же WAN. Вес 2 даёт каналу две корзины, то есть вдвое большую долю, чем у канала с весом 1. Распределение идёт по соединениям, а не по байтам, поэтому одна большая загрузка всё равно использует один канал.

    Что такое рекурсивный failover и зачем он нужен?

    check-gateway=ping на обычном маршруте по умолчанию проверяет только первый хоп провайдера, который часто остаётся доступным, когда сеть провайдера за ним уже неисправна. Здесь для каждого WAN создаётся маршрут к публичному проверочному хосту, а маршруты по умолчанию указывают на этот хост вместо шлюза. Когда хост перестаёт отвечать через этот WAN, RouterOS деактивирует маршруты через него, и трафик переходит на следующий WAN.

    Зачем нужны правила output drop для проверочных хостов?

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

    Нужно ли отключать FastTrack?

    Для PCC да. Метки маршрутизации применяет mangle к каждому пакету, а пакеты, прошедшие FastTrack, обходят mangle, поэтому они пошли бы по основной таблице, а не через свой WAN. Простой failover работает с включённым FastTrack.

    Что изменилось по сравнению с руководствами по PCC для RouterOS v6?

    В v6 маршруты использовали routing-mark=, а метки создавались неявно. В v7 каждая метка должна быть таблицей маршрутизации, созданной в /routing table с fib, а маршруты ссылаются на неё через routing-table=. Mangle по-прежнему использует new-routing-mark. Помощник по переходу с v6 на v7 преобразует старые маршруты и добавляет таблицы.

    Что-нибудь из введённого куда-нибудь отправляется?

    Нет. Скрипт создаётся в вашем браузере.