Генератор балансировки нагрузки и failover для MikroTik
Введите каналы WAN и получите балансировку PCC для RouterOS v7 с failover на рекурсивных маршрутах или только failover, с пояснением каждого блока.
Работает в браузере; введённые вами данные не покидают устройство
Риск потери доступа. Изменение маршрутов на удалённом маршрутизаторе может отрезать вас от него. Проверьте в лаборатории или сначала включите Safe Mode (Ctrl+X в терминале).
Создаёт синтаксис RouterOS v7 (таблицы маршрутизации с fib, routing-table в маршрутах). Только IPv4. Для каналов WAN, у которых шлюз меняется по DHCP, шлюз нужно обновлять вручную или скриптом DHCP-клиента. MikroTik и RouterOS являются товарными знаками SIA Mikrotīkls. Этот инструмент независим и не связан с MikroTik и не одобрен этой компанией.
Как настроить балансировку PCC на MikroTik
- Выберите балансировку PCC с failover или только failover.
- Добавьте каждый канал WAN: интерфейс, шлюз (или имя интерфейса для PPPoE и LTE), публичный проверочный хост, отвечающий на ping, и вес, определяющий долю соединений.
- Перечислите локальные сети и список интерфейсов 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 преобразует старые маршруты и добавляет таблицы.
Что-нибудь из введённого куда-нибудь отправляется?
Нет. Скрипт создаётся в вашем браузере.