Объединение двух провайдеров на MikroTik: балансировка нагрузки PCC
Зачем объединять два интернет-канала?
В компании подключено два интернет-провайдера (например, основной 100 Мбит/с и резервный 100 Мбит/с). При стандартной схеме резервирования (Failover) второй канал простаивает без дела 99% времени. Балансировка нагрузки позволяет распределять исходящие соединения пользователей равномерно по двум каналам, суммируя общую пропускную способность офиса до 200 Мбит/с.
Принцип классификатора соединений PCC
| Механизм PCC | Параметры классификации | Поведение пользовательской сессии |
|---|---|---|
both-addresses-and-ports | IP источника + IP назначения + Порты | Идеальное распределение (торренты, многопоточная загрузка) |
src-address-and-port | IP клиента + Порт клиента | Стабильное распределение для локальных ПК |
both-addresses | IP клиента + IP целевого сайта | Оптимально для банковских сайтов и онлайн-касс |
Базовая конфигурация балансировки PCC 50/50 в MikroTik
- Маркировка маршрутов в таблице IP -> Firewall -> Mangle:
/ip firewall mangle # Исключаем локальный трафик из балансировки: add chain=prerouting dst-address=192.168.1.0/24 action=accept in-interface=bridge-lan # Привязка входящих соединений к своим провайдерам: add chain=prerouting in-interface=ether1-ISP1 connection-state=new action=mark-connection new-connection-mark=ISP1_conn add chain=prerouting in-interface=ether2-ISP2 connection-state=new action=mark-connection new-connection-mark=ISP2_conn # Деление исходящего трафика LAN на 2 потока через PCC: add chain=prerouting in-interface=bridge-lan connection-state=new dst-address-type=!local \ per-connection-classifier=both-addresses:2/0 action=mark-connection new-connection-mark=ISP1_conn add chain=prerouting in-interface=bridge-lan connection-state=new dst-address-type=!local \ per-connection-classifier=both-addresses:2/1 action=mark-connection new-connection-mark=ISP2_conn # Установка меток маршрутизации по меткам соединений: add chain=prerouting in-interface=bridge-lan connection-mark=ISP1_conn action=mark-routing new-routing-mark=to_ISP1 add chain=prerouting in-interface=bridge-lan connection-mark=ISP2_conn action=mark-routing new-routing-mark=to_ISP2 - Создание таблиц маршрутизации (IP -> Routes):
/ip route # Маршруты для маркированного трафика: add dst-address=0.0.0.0/0 gateway=192.168.10.1 routing-mark=to_ISP1 check-gateway=ping add dst-address=0.0.0.0/0 gateway=192.168.20.1 routing-mark=to_ISP2 check-gateway=ping # Основные резервные маршруты для самого роутера: add dst-address=0.0.0.0/0 gateway=192.168.10.1 distance=1 check-gateway=ping add dst-address=0.0.0.0/0 gateway=192.168.20.1 distance=2 - Настройка маскарадинга (NAT):
/ip firewall nat add chain=srcnat out-interface=ether1-ISP1 action=masquerade add chain=srcnat out-interface=ether2-ISP2 action=masquerade
Почему тест Speedtest не показывает удвоенную скорость? Один конкретный файл или одиночный TCP-поток всегда идет только через одного провайдера. Суммирование скорости заметно при одновременной работе нескольких пользователей или при многопоточной загрузке (торренты, менеджеры закачек).
Частые вопросы (FAQ)
Почему выбивает из онлайн-банков и личных кабинетов при балансировке?
Некоторые сайты с повышенной безопасностью сбрасывают авторизацию, если запросы в рамках одной сессии приходят с разных IP-адресов. Используйте классификатор 'src-address' или 'both-addresses', чтобы жестко привязать сессию клиента к одному провайдеру.
Что произойдет, если один из двух провайдеров упадет?
Благодаря опции check-gateway=ping маршрут упавшего провайдера отключится, и весь трафик автоматически пойдет через оставшийся рабочий канал.
Можно ли сбалансировать каналы разной скорости (например, 100 Мбит/с и 50 Мбит/с)?
Да, для этого трафик делится на 3 части (3/0 и 3/1 направляются в первый канал 100 Мбит, а 3/2 — во второй канал 50 Мбит).
Работает ли FastTrack вместе с правилами PCC Mangle?
FastTrack обходит обработку в таблице Mangle. При включении сложной балансировки PCC стандартное правило FastTrack в фаерволе необходимо отключить.