настройка двух каналов в интернет

Fox

Участник
11.05.2018
179
9
18
Доброго времени суток! Нет ли у кого мануала под рукой как настроить два интернет провайдера в маршрутизаторе mikrotik ?
 
Настройка двух провайдеров на MikroTik — одна из самых популярных задач. Существует два основных подхода: базовое резервирование (Failover) и балансировка нагрузки (Load Balancing). Выбор зависит от ваших целей.

Вот как реализовать каждый из них.

1. Балансировка нагрузки с автоматическим резервированием​

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

Ключевая технология здесь — Per Connection Classifier (PCC). Она позволяет разделять трафик не по пакетам, а по целым соединениям, чтобы один и тот же сеанс (например, загрузка файла) всегда шел через одного провайдера.

Схема с PCC​

  1. Настройка интерфейсов: Назначьте ваши физические порты (ether1, ether2) под WAN1 и WAN2. Настройте получение IP-адресов (статически, через DHCP-клиент или PPPoE).
  2. Создание таблиц маршрутизации: В RouterOS v7 (актуальная версия) сначала нужно создать именованные таблицы:

    bash
    /routing table add fib name=to_ISP1
    /routing table add fib name=to_ISP2
    Важно: Ключевой момент для RouterOS v7 — это флаг fib. Без него таблица будет существовать, но не будет участвовать в пересылке пакетов.
  3. Настройка Mangle (PCC):
    Создаем правила в /ip firewall mangle, чтобы помечать новые соединения. per-connection-classifier разделяет трафик на два потока (2/1 и 2/2).

    bash
    # Для ISP1
    /ip firewall mangle add chain=prerouting in-interface=bridge-lan \
    action=mark-connection new-connection-mark=ISP1-conn \
    per-connection-classifier=both-addresses:2/1 passthrough=no
    /ip firewall mangle add chain=prerouting connection-mark=ISP1-conn \
    action=mark-routing new-routing-mark=to_ISP1 passthrough=no

    # Для ISP2
    /ip firewall mangle add chain=prerouting in-interface=bridge-lan \
    action=mark-connection new-connection-mark=ISP2-conn \
    per-connection-classifier=both-addresses:2/2 passthrough=no
    /ip firewall mangle add chain=prerouting connection-mark=ISP2-conn \
    action=mark-routing new-routing-mark=to_ISP2 passthrough=no
  4. Настройка маршрутов:
    Добавляем маршруты в созданные таблицы. Маршруты с меньшим значением distanceимеют приоритет.

    bash
    # Основные маршруты
    /ip route add dst-address=0.0.0.0/0 gateway=192.168.1.1 routing-table=to_ISP1 distance=1
    /ip route add dst-address=0.0.0.0/0 gateway=192.168.2.1 routing-table=to_ISP2 distance=1

    # Резервные маршруты для каждого провайдера (на случай сбоя)
    /ip route add dst-address=0.0.0.0/0 gateway=192.168.2.1 routing-table=to_ISP1 distance=2
    /ip route add dst-address=0.0.0.0/0 gateway=192.168.1.1 routing-table=to_ISP2 distance=2
  5. Настройка NAT (маскарадинг):
    Для каждого WAN-интерфейса нужно включить маскарадинг, чтобы пакеты покидали сеть с правильным IP-адресом.

    bash
    /ip firewall nat add chain=srcnat out-interface=ether1 action=masquerade
    /ip firewall nat add chain=srcnat out-interface=ether2 action=masquerade

2. Простое резервирование (Failover)​

Если вам не нужна балансировка, а требуется только автоматическое переключение на резервный канал при пропадании основного, конфигурация будет проще.

Схема с резервированием​

  1. Настройка интерфейсов: Аналогично первому варианту.
  2. Настройка маршрутов:
    Основной маршрут получает приоритет distance=1, резервный — distance=2.

    bash
    /ip route add dst-address=0.0.0.0/0 gateway=192.168.1.1 distance=1
    /ip route add dst-address=0.0.0.0/0 gateway=192.168.2.1 distance=2
    В этой базовой конфигурации роутер будет использовать маршрут с меньшим distance, пока он существует. Если интерфейс основного провайдера отключится физически, маршрут будет удален, и трафик пойдет по резервному.
  3. Расширенное резервирование с NetWatch (Рекомендуется):
    Провайдер может «упасть» не физически, а на уровне доступа в интернет. В этом случае маршрут останется в таблице, и переключения не произойдет.
    Для надежности используют NetWatch или планировщик (Scheduler), который проверяет доступность надежного IP-адреса (например, 8.8.8.8) через основного провайдера.
    • NetWatch пингует контрольный IP.
    • Если пинг не проходит, срабатывает скрипт, который отключает (/ip route disable) основной маршрут или повышает его distance.

Дополнительные сценарии​

  • Политическая маршрутизация (Policy-Based Routing): Если нужно, чтобы трафик от определенных устройств (например, сервера) всегда шел через конкретного провайдера, независимо от балансировки или резерва. Это делается через создание правил в /routing rule или через Mangle, помечая трафик по src-address.
  • Уведомления: В вашу конфигурацию можно добавить скрипты для отправки уведомлений в Telegram или по электронной почте при смене провайдера, что очень удобно для мониторинга.

Практические готовые решения​

На GitHub есть несколько готовых скриптов для автоматической настройки:

  • vishnunuk/mikrotik-dual-wan-loadbalance-failover: Полноценное решение для RouterOS v7 с балансировкой, резервированием и уведомлениями по Email. Подходит для сложных сетей.
  • justtryhard/MikroTik-Dual-WAN-Failover-Configuration: Простой скрипт для резервирования (Failover) с уведомлениями в Telegram. Отличный выбор для быстрого старта.
  • mizitheji/Load-balancing-ISP-using-Mikrotik: Конфигурация с балансировкой PCC для RouterOS v7, включающая настройку VLAN для сегментации сети