Приглашаем пройти обучение в нашем тренинг-центре и научиться настраивать оборудование MikroTik на профессиональном уровне! Узнайте расписание ближайших курсов и бронируйте место!
Введение — зачем нужны два и более провайдера
Представьте: вы работаете над важным проектом, а интернет внезапно «лёг». Или вечером, когда вся семья смотрит видео, а вы пытаетесь загрузить отчёт — скорость падает до нуля. Один канал — это всегда риск. Роутер с одним провайдером не имеет выбора: если шлюз недоступен или перегружен, трафик встаёт. Именно поэтому всё больше компаний и продвинутых пользователей подключают два (или больше) независимых провайдера к своему MikroTik.
Однако просто вставить два провода в интерфейс недостаточно. Нужно решить, как использовать эти ресурсы. Здесь возникает ключевое различие:
- Балансировка нагрузки (Load Balancing) — активное распределение соединений между обоими каналами. Трафик идёт одновременно через первого и второго провайдера, что повышает общую пропускную способность.
- Резервирование (Failover) — пассивный режим: один канал основной, второй ждёт в тени. При отказе основного маршрут автоматически переключается на резервный.
Какой подход выбрать? Можно и то, и другое. Но главная сложность — добиться, чтобы пакеты возвращались тем же путём, иначе начнутся сбои. Лучшее решение для MikroTik сегодня — Per Connection Classifier (PCC). Этот метод даёт почти идеальную балансировку без «рваных» соединений и асимметрии. О том, как настроим его на вашем роутере, читайте дальше. А для наглядности — сравните оба подхода в таблице:
| Характеристика | Load Balancing (PCC) | Failover (резервирование) |
|---|---|---|
| Использование каналов | Оба активны, делят трафик | Один рабочий, второй — холодный резерв |
| При отказе канала | Оставшийся берёт всю нагрузку (если настроено) | Автоматическое переключение |
| Прирост скорости | Да, суммируется | Нет, скорость ограничена основным каналом |
| Идеально для | Офисы, дома с тяжёлым интернетом | Критические сервисы, где важна доступность |
Исходные данные и подготовка сети
Прежде чем лезть в терминал или WinBox, давайте разберёмся, что у нас есть. Типовая схема выглядит так: роутер MikroTik с несколькими интерфейсами. Один порт (например, ether1 смотрит в вашу локальную сеть (LAN). А два других порта (ether2 и ether3) подключены к разным провайдерам — назовём их isp1 и isp2. У каждого провайдера — свои сети, свои IP-адреса и свои gateway (шлюзы). В локальной сети у вас, скорее всего, адрес из диапазона 192.168.x.x.
Перед настройкой запишите следующие данные — они нам понадобятся на каждом шагу:
- Интерфейсы WAN: какой порт смотрит на первого провайдера, какой — на второго. Допустим, isp1 на ether2, isp2 на ether3.
- IP-адреса на WAN: обычно провайдер выдаёт их по DHCP или вы прописываете статику. Например, isp1 даёт адрес 192.168.10.2/24 с gateway 192.168.10.1, а isp2 — 10.0.0.2/24 с gateway 10.0.0.1. Если IP динамические — тоже не беда, просто запомните интерфейсы.
- Локальная сеть (LAN): ваш внутренний диапазон, например 192.168.88.0/24 на интерфейсе ether1.
Вот пример таблицы, которую мы рекомендуем заполнить для вашего роутера:
| Провайдер | Интерфейс | IP-адрес (WAN) | Gateway | LAN-интерфейс | LAN-сеть |
|---|---|---|---|---|---|
| isp1 | ether2 | 192.168.10.2/24 | 192.168.10.1 | ether1 | 192.168.88.0/24 |
| isp2 | ether3 | 10.0.0.2/24 | 10.0.0.1 | ether1 | 192.168.88.0/24 |
Обратите внимание: если у провайдера динамический ip (через DHCP), gateway назначится автоматически. Всё равно запишите имя интерфейса — это главное. Также проверьте, что локальной сети нет пересечений с WAN-сетями (иначе возникнут проблемы с маршрутизации).
Итак, данные у нас готовы. В следующем разделе перейдём к настройке базового функционала.
Настройка интерфейсов и базового NAT
Начнем с самого главного: дадим нашим WAN-портам адреса. Предположим, как мы договорились ранее, isp1 сидит на интерфейсе ether2, а isp2 — на ether3. У каждого — свой IP и свой gateway. Выполним назначение через терминал RouterOS или WinBox.
Пример для CLI (команду вводим по очереди):
/ip address add address=192.168.10.2/24 interface=ether2 comment="isp1_wan" /ip address add address=10.0.0.2/24 interface=ether3 comment="isp2_wan"
В WinBox: перейдите в раздел IP → Addresses, нажмите «+», указываем address, выбираем нужный interface и сохраняем. Точно так же для второго провайдера.
Теперь трафик из вашей локальной сети должен выходить в интернет. Для этого создадим правило masquerade — оно транслирует ваши внутренние IP за адресом роутера на каждом WAN-порту. Это стандартный srcnat.
CLI:
/ip firewall nat add chain=srcnat out-interface=ether2 action=masquerade comment="NAT для isp1" /ip firewall nat add chain=srcnat out-interface=ether3 action=masquerade comment="NAT для isp2"
WinBox: IP → Firewall → NAT, нажмите «+», выберите chain=srcnat, в поле out-interface укажите ether2, action=masquerade. Повторите для ether3.
Обратите внимание: у нас два правила NAT, потому что исходящий трафик может уходить через разные интерфейсы в зависимости от того, какой провайдер выбран. Если вы подключаете третьего провайдера — просто добавьте аналогичное правило.
На этом базовая связность готова: роутер получил IP, а устройства из вашей локальной сети через правило masquerade могут выходить в Интернет. Но если сейчас добавить два маршрута по умолчанию — начнутся проблемы. Почему — разберём в следующем шаге. А пока — краткая справка по выполненным действиям:
| Действие | WinBox (путь) | CLI (пример) |
|---|---|---|
| Назначить IP на WAN | IP → Addresses → + | /ip address add address=192.168.10.2/24 interface=ether2 |
| Включить masquerade для провайдера | IP → Firewall → NAT → + → chain=srcnat, out-interface=ether2, action=masquerade | /ip firewall nat add chain=srcnat out-interface=ether2 action=masquerade |
Таблицы маршрутизации и шлюзы по умолчанию
Итак, базовый NAT и IP на интерфейсах уже есть. Казалось бы, просто добавить два маршрута по умолчанию — и готово. Но нет. Если вы напишете:
/ip route add gateway=192.168.10.1 /ip route add gateway=10.0.0.1
RouterOS будет использовать только один — тот, у которого distance меньше (оба по умолчанию равны 1). Второй маршрут станет резервным, но активным никогда не станет, пока первый жив. Это уже failover, но не балансировка. А если принудительно сделать оба активными (через ECMP), возникнет другая проблема: пакеты, предназначенные первому провайдеру, будут частично направлены через второго и наоборот. Провайдеры посчитают это атакой и запретят соединение.
Поэтому нам нужно научить роутер различать трафик. Каждому провайдеру — своя таблица маршрутизации. В RouterOS таблицы создаются через /routing tables. А чтобы трафик попал в нужную таблицу, мы ставим на него метку (routing mark) через специальную таблицу в firewall – mangle.
Пока запомните главное: мы не будем использовать глобальную таблицу маршрутов для обоих провайдеров. Вместо этого:
- Создадим отдельные таблицы — скажем, to_isp1 и to_isp2.
- В каждой пропишем свой gateway (шлюз) как default route.
- А затем с помощью routing mark направим пакеты в соответствующую таблицу.
Ниже — пример создания таблиц и маршрутов (мы выполним это позже, сейчас просто показываем логику):
| Компонент | Значение для isp1 | Значение для isp2 |
|---|---|---|
| Имя таблицы маршрутизации | to_isp1 | to_isp2 |
| Gateway | 192.168.10.1 | 10.0.0.1 |
| Routing mark | via_isp1 | via_isp2 |
Без такого разделения любой метод балансировки обречён на провал. PCC как раз и работает на основе этих меток, решая проблему асимметрии на корню. Итак, таблицы созданы — теперь переходим к самому интересному: маркировке трафика в Mangle.
Маркировка трафика в Mangle (основа для PCC)
Чтобы роутер знал, какой трафик отправить через isp1, а какой — через isp2, мы поставим на соединения специальные метки. В RouterOS за это отвечает раздел /ip firewall mangle. Принцип двухэтапный:
- Маркируем соединение (connection mark) — когда пакет устанавливает новое соединение, мы решаем, к какому провайдеру оно пойдёт.
- Маркируем маршрутизацию (routing mark) — переносим метку с соединения на каждый пакет внутри него, чтобы маршрутизация знала, какую таблицу использовать.
Почему два шага? Потому что трафик состоит из множества пакетов. Если маркировать каждый пакет независимо, одно соединение может разорваться. Маркируем один раз — при рождении соединения, а затем все пакеты автоматически получают ту же routing-mark.
Что нам понадобится в Mangle
Создадим правило, которое ловит новые соединения, идущие из вашей локальной сети в интернет. Важно: мы не трогаем трафик, который сам роутер генерирует (об этом позже). И не трогаем уже установленные соединения.
Параметры для первого правила (пример для isp1):
| Поле | Значение | Пояснение |
|---|---|---|
| chain | prerouting | Пакет только пришёл, ещё не маршрутизирован |
| in-interface | ether1 (LAN) | Трафик из вашей локальной сети |
| connection-state | new | Только новые соединения |
| dst-address-type | !local | Не в локальную сеть |
| action | mark-connection | Действие — поставить метку на соединение |
| new-connection-mark | conn_isp1 | Имя метки |
| passthrough | yes | Передать управление дальше (чтобы второе правило тоже сработало) |
Аналогично для isp2 — только new-connection-mark=conn_isp2.
После этого создаём второе правило (уже без проверки connection-state=new), которое берёт помеченное соединение и проставляет routing mark:
| Поле | Значение |
|---|---|
| chain | prerouting |
| in-interface | ether1 (LAN) |
| connection-mark | conn_isp1 |
| action | mark-routing |
| new-routing-mark | via_isp1 |
| passthrough | no |
И точно так же для conn_isp2 → via_isp2.
Важное замечание про passthrough
Если в первом правиле поставить passthrough=no, роутер остановит обработку и не перейдёт ко второму правилу. Поэтому сначала ставим метку connection-mark с passthrough=yes, а затем routing-mark с passthrough=no.
Что происходит на этом этапе
Трафик из локальной сети, выходя в WAN, получает метку соединения и метку маршрутизации. Но пока routing mark ни к чему не привязана. Мы свяжем её с таблицами маршрутизации на следующем шаге. Пока просто запомните: Mangle подготовил почву. Далее мы соединим эти routing marks с конкретными gateway и таблицами.
Маркировка соединений по провайдерам
Итак, создаем в /ip firewall mangle первое правило для нового трафика из локальной сети. Оно будет ловить пакеты, которые только начинают соединение, и ставить на это соединение метку — например, conn_isp1 или conn_isp2.
Для isp1 (CLI):
/ip firewall mangle add chain=prerouting in-interface=ether1 connection-state=new dst-address-type=!local action=mark-connection new-connection-mark=conn_isp1 passthrough=yes comment="PCC: mark new connections for isp1"
Для isp2 (CLI):
/ip firewall mangle add chain=prerouting in-interface=ether1 connection-state=new dst-address-type=!local action=mark-connection new-connection-mark=conn_isp2 passthrough=yes comment="PCC: mark new connections for isp2"
В WinBox путь: IP → Firewall → Mangle, нажмите «+», выберите chain=prerouting, в поле in-interface укажите ваш LAN-порт (например, ether1), отметьте connection-state=new, в Advanced поставьте dst-address-type=!local, затем на вкладке Action выберите mark-connection, введите new-connection-mark (например, conn_isp1), passthrough оставьте yes.
| Параметр | Значение для isp1 | Значение для isp2 |
|---|---|---|
| chain | prerouting | prerouting |
| in-interface | ether1 (LAN) | ether1 (LAN) |
| connection-state | new | new |
| dst-address-type | !local | !local |
| action | mark-connection | mark-connection |
| new-connection-mark | conn_isp1 | conn_isp2 |
| passthrough | yes | yes |
Почему passthrough=yes? Потому что после этого правила другие правила Mangle (например, для routing mark) должны иметь возможность обработать тот же пакет. Если поставить no, обработка остановится, и роутер не проставит routing mark — балансировка не заработает.
Обратите внимание: мы не используем out-interface, потому что на этапе prerouting роутер ещё не знает, через какой интерфейс пакет уйдёт. Задача — схватить его до принятия решения о маршрутизации.
Теперь у каждого нового соединения из локальной сети есть connection-mark: либо conn_isp1, либо conn_isp2. Следующий шаг — превратить эту метку в routing-mark, которую поймут таблицы маршрутизации. Этим мы займёмся прямо сейчас.
Маркировка маршрутизации (routing mark)
Итак, connection-mark у нас уже есть. Но роутер пока не знает, куда отправлять помеченные пакеты. Нужен второй шаг — правило mangle, которое прочитает connection-mark и назначит пакету routing mark. Именно routing-mark позднее будет сопоставлена с конкретной таблицей маршрутизации (той самой, где мы пропишем gateway для isp1 и isp2).
Создаём два правила (по одному на каждого провайдера). Обратите внимание: chain=prerouting остаётся, in-interface — ваш LAN-порт. Проверяем connection-mark и выполняем action=mark-routing.
CLI для isp1:
/ip firewall mangle add chain=prerouting in-interface=ether1 connection-mark=conn_isp1 action=mark-routing new-routing-mark=via_isp1 passthrough=no comment="PCC: routing mark for isp1"
CLI для isp2:
/ip firewall mangle add chain=prerouting in-interface=ether1 connection-mark=conn_isp2 action=mark-routing new-routing-mark=via_isp2 passthrough=no comment="PCC: routing mark for isp2"
В WinBox: IP → Firewall → Mangle → «+», chain=prerouting, in-interface=ether1, вкладка Advanced → connection-mark выберите conn_isp1 (или введите вручную), затем Action → mark-routing, new-routing-mark введите via_isp1, passthrough=no.
| Параметр | Значение для isp1 | Значение для isp2 |
|---|---|---|
| chain | prerouting | prerouting |
| in-interface | ether1 | ether1 |
| connection-mark | conn_isp1 | conn_isp2 |
| action | mark-routing | mark-routing |
| new-routing-mark | via_isp1 | via_isp2 |
| passthrough | no | no |
Почему passthrough=no? Потому что после того как пакет получил routing mark, дальнейшая обработка в Mangle этому конкретному пакету уже не нужна. Он готов к передаче в таблицу маршрутизации.
Теперь трафик из локальной сети имеет routing-mark via_isp1 или via_isp2. Осталось последнее: сказать роутеру, какой gateway соответствует каждой routing-mark. Это делается в разделе /ip route созданием специальных маршрутов с параметром routing-mark. Мы выполним это чуть позже, когда будем собирать всё в единую схему балансировки. А сейчас — самое время перейти к PCC и понять, как именно распределяются соединения между двумя провайдерами.
Балансировка нагрузки через PCC (per connection classifier)
Теперь переходим к сердцу нашей настройки — Per Connection Classifier (PCC). Это метод, который RouterOS использует для умного распределения трафика между несколькими провайдерами.
Как работает PCC
Когда новое соединение пытается выйти в интернет, роутер снимает с пакеты определённые атрибуты — например, src-address (ваш локальный ip), dst-address (куда идёте), src-port и dst-port (порты). Из этой информации вычисляется хэш (число). Затем хэш делится на количество провайдеров (например, два), и остаток от деления (0 или 1) определяет, через кого пойдёт соединение.
Почему PCC лучше NTH
NTH просто считает соединения по порядку: первое — isp1, второе — isp2, третье — isp1 и так далее. Это грубо и не учитывает, что одному пользователю может понадобиться открыть много соединений к одному серверу (например, при загрузке файла). NTH может отправить их на разных провайдеров, что вызовет разрыв. PCC же гарантирует: все пакеты одного соединения (с одинаковыми src-addr, dst-addr, портами) получат один и тот же хэш, а значит, пойдут через одного провайдера.
| Характеристика | PCC | NTH |
|---|---|---|
| Основа принятия решения | Хэш от src-addr, dst-addr, src-port, dst-port | Порядковый номер соединения |
| Стабильность соединения | Идеально — все пакеты одного соединения идут одним путём | Риск разрыва соединения при редистрибуции |
| Подходит для реального трафика (HTTP, видео, загрузки) | Да | Нет (проблемы с асинхронностью) |
| Настройка в MikroTik | Через per-connection-classifier | Через nth |
Настройка PCC в Mangle
Чтобы включить PCC, мы изменим наши предыдущие правила Mangle для маркировки новых соединений. Вместо жёсткого назначения conn_isp1 или conn_isp2 через разные правила, мы создадим ОДНО правило для первого провайдера и ОДНО для второго, но с параметром per-connection-classifier.
Основной синтаксис:per-connection-classifier=both-addresses:2/0 — где 2 — количество провайдеров, 0 — номер "корзины" (первый провайдер). Для второго провайдера будет :2/1.
Пример CLI для isp1 (первый провайдер, корзина 0):
/ip firewall mangle add chain=prerouting in-interface=ether1 connection-state=new dst-address-type=!local per-connection-classifier=both-addresses:2/0 action=mark-connection new-connection-mark=conn_isp1 passthrough=yes comment="PCC isp1 (bucket 0)"
Для isp2 (корзина 1):
/ip firewall mangle add chain=prerouting in-interface=ether1 connection-state=new dst-address-type=!local per-connection-classifier=both-addresses:2/1 action=mark-connection new-connection-mark=conn_isp2 passthrough=yes comment="PCC isp2 (bucket 1)"
Что значит both-addresses? Это означает, что хэш учитывает и src-address, и dst-address. Есть и другие варианты: src-address (только отправитель), dst-address (только получатель), both-addresses-and-ports (добавляет порты — самый точный). Для большинства случаев both-addresses достаточно.
Для трёх провайдеров (3/0, 3/1, 3/2):per-connection-classifier=both-addresses:3/0 # isp1per-connection-classifier=both-addresses:3/1 # isp2per-connection-classifier=both-addresses:3/2 # isp3
После этих правил новые соединения получат connection-mark conn_isp1 или conn_isp2, а затем Mangle с action=mark-routing (который мы уже создали) превратит их в routing-mark via_isp1 / via_isp2. Останется только добавить маршруты с этими метками и шлюзами — и балансировка заработает.
Важно: убедитесь, что правила PCC стоят в Mangle ДО того, как вы проверяете connection-mark для mark-routing. Порядок правило имеет значение: сначала маркируем соединения (PCC), затем назначаем routing-mark.
Альтернативный метод NTH
Хотя PCC стал стандартом де-факто для балансировки в MikroTik, существуют и другие методы. О них полезно знать — возможно, вы встретите их на старом оборудовании или в простых сценариях.
NTH (Nth packet) — роутер присваивает каждому новому соединению порядковый номер и направляет его к провайдеру по кругу: первое — isp1, второе — isp2, третье — снова isp1. Это просто, но непредсказуемо. Например, один пользователь открывает 10 вкладок браузера — они могут разбежаться по разным каналам, и сервер увидит запросы с разных IP-адресов. Многие сайты сбросят авторизацию. NTH подходит только для очень грубой нагрузки (например, раздача торрентов), где требования к стабильности минимальны.
Failover — резервирование каналов
Подробная настройка резервирования каналов (Failover) вынесена в отдельную статьюhttps://spw.ru/educate/articles/rezervirovanie-kanalov-mikrotik/, так как это объёмная тема, требующая детального рассмотрения.
В рамках данной статьи мы сосредоточились исключительно на балансировке нагрузки через PCC. Для полноценной работы с двумя провайдерами настоятельно рекомендуем также настроить Failover согласно указанному руководству.
Особые и специфичные маршруты
PCC отлично распределяет трафик, но не всё полезно балансировать. Некоторые сервисы требуют, чтобы соединения всегда выходили с одного ip-адрес. Онлайн-банк может сбросить сессию, если вы зашли через isp1, а следующий запрос пошёл через isp2. Корпоративный VPN не поймёт, почему пакеты приходят с разных адресов. VoIP-звонок может оборваться при смене канала.
Решение — создать исключения. Вы сами направляете определённый трафик через конкретного провайдера, минуя PCC. Для этого добавим выше (раньше) наших PCC-правил правило Mangle, которое маркирует нужные соединения и ставит им connection-mark напрямую.
Пример: направить весь трафик на адрес банка 193.124.xxx.xxx через isp1.
CLI:
/ip firewall mangle add chain=prerouting in-interface=ether1 dst-address=193.124.xxx.xxx action=mark-connection new-connection-mark=conn_isp1 passthrough=yes comment="Bank via isp1" /ip firewall mangle add chain=prerouting in-interface=ether1 connection-mark=conn_isp1 action=mark-routing new-routing-mark=via_isp1 passthrough=no
Обратите внимание: мы не используем per-connection-classifier. Новое правило срабатывает раньше (благодаря порядку в mangle), поэтому PCC даже не увидит этот трафик. Аналогично можно маркировать по порту (например, dst-port=443 для HTTPS) или по протоколу (protocol=tcp). Если нужно, чтобы определённый клиента (по src-address) всегда ходил через isp2 — тоже легко.
Собственный трафик роутера
До сих пор мы маркировали трафик, который проходит через роутер из локальной сети в WAN. А как быть с трафиком, который генерирует сам роутер? Например, обновления RouterOS, запросы NTP к серверам времени, DNS или системные уведомления. По умолчанию такой трафик идёт через default route без routing-mark — то есть всегда через один канал (обычно первый активный шлюз). Это не страшно, но при отказе этого канала роутер потеряет связь для своих нужд.
Чтобы роутер тоже использовал балансировки или хотя бы Failover, нужно маркировать его собственные пакеты. Здесь in-interface не работает — входящего интерфейса нет. Нужно использовать chain=output.
Создадим правило для трафика с роутера (например, для DNS-запросов на 8.8.8.8):
/ip firewall mangle add chain=output dst-address=8.8.8.8 action=mark-connection new-connection-mark=conn_isp1 passthrough=yes comment="Router DNS via isp1" /ip firewall mangle add chain=output connection-mark=conn_isp1 action=mark-routing new-routing-mark=via_isp1 passthrough=no
А можно сделать универсальное правило: маркировать весь исходящий трафик самого роутера (кроме локальных сетей) через PCC. Для этого потребуется chain=output с per-connection-classifier. Это сложнее, но вполне реально.
Проще всего — добавить для роутера отдельный маршрут по умолчанию с routing-mark (например, via_router) и в Mangle проставить эту метку всему output-трафику. Тогда он будет следовать правилам Failover, как обычный клиента.
Другие сети за роутером
Если у вас не одна локальная сеть, а несколько — например, VLAN для гостей, для офиса, для камер видеонаблюдения. Вы можете применить балансировки ко всем или выборочно. Всё, что нужно, — указать в mangle соответствующие in-interface (или использовать src-address из разных подсетей).
Допустим, для гостевой сети на интерфейсе vlan20 вы хотите балансировки, а для корпоративной vlan10 — только failover через isp1. Создадим правило для vlan20 так же, как для ether1, просто заменив in-interface. А для vlan10 — не добавляем PCC, а ставим connection-mark на conn_isp1.
Таким образом, MikroTik позволяет гибко управлять трафиком любых подключенных сегментов.
Проверка и диагностика работы балансировки
Вы настроили PCC, Failover, исключения. Как убедиться, что трафик действительно распределяется? Есть несколько простых способов.
1. Просмотр таблицы соединений
В терминале введите:
/ip firewall connection print where connection-mark~"conn_isp"
Вы видите список активных соединений и их connection-mark. Если оба значения (conn_isp1 и conn_isp2) присутствуют примерно в равном количестве — PCC работает.
2. Отслеживание исходящего интерфейса через Torch
WinBox: Tools → Torch, выберите интерфейс LAN (ether1), нажмите Start. Смотрите поле Dst. Address — пакеты должны уходить на разные gateway (адреса ваших провайдеров). Если все идут через один — проверьте порядок правил в Mangle.
3. Проверка через ping с разных источников
Запустите ping 8.8.8.8 с двух разных компьютеров в локальной сети. На роутере выполните /ip route print where routing-mark~"via_isp" — вы увидите, какой маршрут используется для каждого routing-mark. Сравните с метками соединений.
4. Логи ошибок
Включите логи для firewall:
/system logging add topics=firewall,info
Если балансировка работает некорректно, вы увидите сообщения о недоступности gateway или асимметричной маршрутизации.
5. Имитация отказа
Отключите канал isp1 (выдерните кабель или отключите интерфейс). Проверьте, переключается ли трафик на isp2 через Failover. В WinBox смотрите /ip route — пропал ли маршрут с routing-mark via_isp1. Если да — резервирование работает.
Если что-то идёт не так, перепроверьте последовательность правил в Mangle. PCC-правила должны быть первыми после маркировки исключений, но до mark-routing. И не забывайте про passthrough=yes для правил mark-connection.
Заключение — сравнение методов и рекомендации
Итак, мы прошли путь от одного ненадёжного канала до полноценной балансировки с Failover на MikroTik. Какой метод выбрать?
- Только failover — идеален, если вам не нужна суммарная скорость, но важна доступность. Например, для точки продаж или банкомата.
- Балансировка (особенно PCC) — лучший выбор для офиса, дома или провайдера, где много пользователей и тяжёлый трафик (видео, торренты, облака). PCC даёт стабильность и предсказуемость.
Если скорость ваших каналов разная (например, isp1 — 100 Мбит/с, isp2 — 50 Мбит/с), PCC позволяет взвешенную балансировку (об этом ниже в блоке «Взвешенная балансировка»). Но даже с равными каналами PCC справляется отлично.
Краткий чек-лист настройки:
- Запишите данные: интерфейс, IP, Gateway каждого провайдера.
- Назначьте IP на WAN и настройте masquerade.
- Создайте таблицы маршрутизации (например, /routing table add fib).
- Добавьте default route для каждой таблицы с соответствующим gateway.
- Настройте Mangle: PCC-правила для mark-connection, затем правила для mark-routing.
- Настройте Failover (рекурсивные маршруты или Netwatch).
- При необходимости добавьте исключения и трафик роутера.
- Проверьте через
/ip firewall connection print.
Теперь ваш роутер готов работать с двумя и более провайдерами надёжно и эффективно.
FAQ (вопросы и ответы)
1. Чем отличается балансировка нагрузки (Load Balancing) от резервирования (Failover)?
Балансировка — активное распределение трафика по нескольким каналам одновременно, повышает скорость. Резервирование — держит резервный канал в тени, включает его только при отказе основного.
2. Что такое PCC и почему он лучше NTH для балансировки?
PCC использует хэш от адресов и портов, гарантируя, что одно соединение всегда идёт через одного провайдера. NTH просто считает соединения по порядку, что ведёт к разрывам.
3. Нужно ли прописывать два маршрута по умолчанию (default route)?
Нет, достаточно одного маршрута с routing-mark в каждой таблице. Глобальная таблица может вообще не иметь default-маршрута.
4. Как заставить MikroTik автоматически переключать трафик при отказе одного провайдера?
Настройте Failover: рекурсивную маршрутизацию (без скриптов) или Netwatch со скриптами.
5. Как проверить, что балансировка действительно работает?
Используйте /ip firewall connection print, Torch или ping с разных устройств и смотрите routing-mark в таблице маршрутов.
Мы надеемся, что эта статья помогла вам освоить одну из самых полезных технологий в MikroTik. Теперь ваш интернет станет быстрее и надёжнее. Удачной настройки!
