mikrotik-wiki.ru
Главная
Загрузка...

VRRP на MikroTik — отказоустойчивость шлюза

RouterOS 7.xRouting13 мин30 мар. 2026 г.
TelegramVK

VRRP (Virtual Router Redundancy Protocol) — протокол, позволяющий двум и более маршрутизаторам выступать в роли единого виртуального шлюза для локальной сети. Если основной роутер выходит из строя, резервный автоматически берёт на себя его функцию — клиенты продолжают работать без ручного переключения. В RouterOS 7 VRRP реализован как виртуальный интерфейс поверх физического или bridge. В этом руководстве настроим отказоустойчивый шлюз из двух MikroTik, интегрируем VRRP с DHCP и добавим мониторинг WAN через Netwatch.

Описание

Зачем нужен VRRP

В типичной сети все устройства используют один IP-адрес в качестве default gateway. Если маршрутизатор с этим адресом выходит из строя, вся сеть теряет доступ в интернет. Решение — VRRP: два физических маршрутизатора делят между собой один виртуальный IP, который всегда доступен.

ПараметрОписание
Virtual IP (VIP)IP-адрес, который «плавает» между роутерами. Клиенты используют его как шлюз
Virtual MACСпециальный MAC-адрес формата 00:00:5E:00:01:XX, где XX — VRID. Гарантирует, что ARP-ответ не меняется при переключении
VRIDVirtual Router ID (1–255). Идентификатор группы VRRP. Должен совпадать на Master и Backup
PriorityПриоритет маршрутизатора (1–254). Чем выше — тем вероятнее роль Master
PreemptionМеханизм, при котором роутер с более высоким приоритетом автоматически забирает роль Master обратно после восстановления

Как работает VRRP

  1. Master — роутер с наивысшим приоритетом в группе VRID. Он отвечает на ARP-запросы виртуального IP, отправляет VRRP Advertisement пакеты (протокол IP 112, multicast 224.0.0.18) каждый интервал (по умолчанию 1 секунда).

  2. Backup — роутер(ы) с более низким приоритетом. Они слушают Advertisement от Master. Если пакеты прекращаются (Master Dead Interval = 3 × advertisement-interval + skew time), Backup переходит в роль Master.

  3. Переключение занимает обычно 3–4 секунды. После переключения новый Master начинает отправлять Gratuitous ARP, чтобы обновить ARP-таблицы коммутаторов и хостов.

  4. Preemption — если исходный Master восстанавливается и его приоритет выше текущего, он автоматически забирает роль обратно (если preemption включён, что является поведением по умолчанию).

Схема сети

code
                   ISP
                    |
            ┌───────┴───────┐
            │               │
       [Router A]      [Router B]
       ether1: WAN     ether1: WAN
       Priority: 254   Priority: 100
       Role: MASTER     Role: BACKUP
            │               │
            └───────┬───────┘
                    │
              [Switch/Bridge]
              VRRP VIP: 192.168.88.1
                    │
            ┌───┬───┼───┬───┐
            PC1 PC2 PC3 PC4 PC5
            Gateway: 192.168.88.1

Router A и Router B подключены к одному L2-сегменту через bridge/switch. Оба участвуют в VRRP-группе с VRID 1. Виртуальный IP 192.168.88.1 используется всеми клиентами как default gateway. При нормальной работе Router A (priority 254) является Master.

VRRP vs скриптовый failover

КритерийVRRPFailover через скрипты
Время переключения3–4 секунды10–60 секунд (зависит от Netwatch)
СтандартизацияRFC 5798Кастомное решение
Переключение IPВиртуальный IP «плавает»Необходимо менять IP на интерфейсах
ARP-обновлениеАвтоматическое через Virtual MACРучное через Gratuitous ARP
СложностьМинимальная — встроен в RouterOSТребуются скрипты и Netwatch
Мониторинг WANНужен дополнительный скриптВстроено в логику
ТребованияДва роутера в одном L2-сегментеЛюбая топология

VRRP идеален, когда оба роутера находятся в одном L2-сегменте. Если маршрутизаторы разнесены географически — используйте скриптовый failover.

Настройка

Предварительные требования

  • Два маршрутизатора MikroTik с RouterOS 7.20+
  • Оба подключены к одному L2-сегменту (одному коммутатору или bridge)
  • Каждый маршрутизатор имеет собственный IP на LAN-интерфейсе
  • Каждый маршрутизатор имеет собственный выход в интернет (WAN)

Адресация

УстройствоLAN IPWAN IPVRRP VIPVRIDPriority
Router A192.168.88.2/24DHCP от ISP192.168.88.1/321254
Router B192.168.88.3/24DHCP от ISP192.168.88.1/321100

Обратите внимание: виртуальный IP (192.168.88.1) отличается от реальных IP обоих роутеров. Это обязательное условие.

Шаг 1: Настройка LAN-интерфейсов

Router A:

[admin@MikroTik] >
/interface/bridge add name=bridge-lan
/interface/bridge/port add bridge=bridge-lan interface=ether2
/interface/bridge/port add bridge=bridge-lan interface=ether3
/interface/bridge/port add bridge=bridge-lan interface=ether4
/interface/bridge/port add bridge=bridge-lan interface=ether5

/ip/address add address=192.168.88.2/24 interface=bridge-lan

Router B:

[admin@MikroTik] >
/interface/bridge add name=bridge-lan
/interface/bridge/port add bridge=bridge-lan interface=ether2
/interface/bridge/port add bridge=bridge-lan interface=ether3
/interface/bridge/port add bridge=bridge-lan interface=ether4
/interface/bridge/port add bridge=bridge-lan interface=ether5

/ip/address add address=192.168.88.3/24 interface=bridge-lan

Шаг 2: Создание VRRP-интерфейса

VRRP в RouterOS создаётся как виртуальный интерфейс, привязанный к физическому или bridge-интерфейсу.

Router A (Master, priority=254):

[admin@MikroTik] >
/interface/vrrp add name=vrrp1 interface=bridge-lan vrid=1 priority=254 \
    interval=1s preemption-mode=yes version=3

Router B (Backup, priority=100):

[admin@MikroTik] >
/interface/vrrp add name=vrrp1 interface=bridge-lan vrid=1 priority=100 \
    interval=1s preemption-mode=yes version=3

Параметры:

  • interface — интерфейс, на котором работает VRRP (bridge, ether, vlan)
  • vrid — идентификатор группы (1–255), должен совпадать на обоих роутерах
  • priority — приоритет (1–254); 254 — максимальный для ручной настройки
  • interval — интервал отправки Advertisement (1 секунда — оптимально)
  • preemption-mode=yes — Master автоматически забирает роль обратно после восстановления
  • version=3 — VRRPv3 (RFC 5798), поддерживает IPv4 и IPv6, рекомендуется для новых инсталляций

Шаг 3: Назначение виртуального IP

Виртуальный IP назначается на VRRP-интерфейс, а не на bridge. Этот IP будет активен только на текущем Master.

Router A и Router B (одинаково):

[admin@MikroTik] >
/ip/address add address=192.168.88.1/32 interface=vrrp1

Маска /32, потому что это виртуальный адрес, не определяющий подсеть.

Шаг 4: Настройка WAN и NAT

Каждый роутер имеет собственный WAN. NAT masquerade должен быть на обоих.

Router A:

[admin@MikroTik] >
/ip/dhcp-client add interface=ether1 add-default-route=yes use-peer-dns=yes

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

Router B:

[admin@MikroTik] >
/ip/dhcp-client add interface=ether1 add-default-route=yes use-peer-dns=yes

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

Шаг 5: Базовый Firewall

На обоих роутерах необходимо разрешить VRRP-протокол (IP protocol 112). Если firewall блокирует этот протокол, Backup не получит Advertisement и оба роутера станут Master одновременно (split-brain).

Router A и Router B:

[admin@MikroTik] >
/ip/firewall/filter add chain=input protocol=vrrp action=accept \
    comment="Allow VRRP protocol 112" place-before=0

/ip/firewall/filter add chain=input dst-address=224.0.0.18 action=accept \
    comment="Allow VRRP multicast" place-before=1

Правила размещаем в самом начале цепочки input, чтобы они сработали до любых drop-правил.

Интеграция VRRP с DHCP

DHCP-сервер на обоих роутерах

Типичная ошибка — запустить DHCP только на одном роутере. Если он упадёт, новые клиенты не получат IP. Правильное решение — DHCP на обоих роутерах с непересекающимися пулами.

Router A (DHCP pool: .50–.149):

[admin@MikroTik] >
/ip/pool add name=dhcp-pool-a ranges=192.168.88.50-192.168.88.149

/ip/dhcp-server add name=dhcp-lan interface=bridge-lan address-pool=dhcp-pool-a \
    lease-time=1h authoritative=after-2sec-delay

/ip/dhcp-server/network add address=192.168.88.0/24 gateway=192.168.88.1 \
    dns-server=192.168.88.1,8.8.8.8

Router B (DHCP pool: .150–.249):

[admin@MikroTik] >
/ip/pool add name=dhcp-pool-b ranges=192.168.88.150-192.168.88.249

/ip/dhcp-server add name=dhcp-lan interface=bridge-lan address-pool=dhcp-pool-b \
    lease-time=1h authoritative=after-2sec-delay

/ip/dhcp-server/network add address=192.168.88.0/24 gateway=192.168.88.1 \
    dns-server=192.168.88.1,8.8.8.8

Ключевой момент: gateway=192.168.88.1 — виртуальный IP VRRP. Клиенты всегда получают VIP как шлюз, независимо от того, какой DHCP-сервер выдал аренду.

Параметр authoritative=after-2sec-delay предотвращает конфликты между двумя DHCP-серверами: если клиент запросил адрес из чужого пула, сервер подождёт 2 секунды перед ответом DHCPNAK.

DNS через виртуальный IP

Если MikroTik используется как DNS-резольвер, настройте кэширующий DNS на обоих роутерах:

Router A и Router B:

[admin@MikroTik] >
/ip/dns set allow-remote-requests=yes servers=8.8.8.8,1.1.1.1

DNS будет доступен через виртуальный IP 192.168.88.1, так как он активен на текущем Master.

VRRP + мониторинг WAN через Netwatch

Проблема

VRRP отслеживает только доступность самого VRRP-интерфейса на Master. Если у Master пропадёт WAN-канал (ISP упал), VRRP об этом не узнает — Master продолжит держать виртуальный IP, но клиенты потеряют интернет, хотя Backup имеет рабочий WAN.

Решение: Netwatch + скрипт изменения priority

Идея: мониторим доступность внешнего хоста (например, 8.8.8.8). Если хост недоступен — понижаем priority VRRP ниже уровня Backup, Master отдаёт виртуальный IP. Когда WAN восстанавливается — возвращаем priority обратно.

Router A (Master):

[admin@MikroTik] >
/tool/netwatch add host=8.8.8.8 type=icmp interval=5s timeout=2s \
    up-script="/interface/vrrp set vrrp1 priority=254" \
    down-script="/interface/vrrp set vrrp1 priority=50" \
    comment="VRRP WAN tracking"

Логика:

  • WAN работает → priority=254 → Router A остаётся Master
  • WAN упал → priority=50 (ниже 100 у Backup) → Router B становится Master
  • WAN восстановился → priority=254 → preemption возвращает роль Master роутеру A

Router B (Backup): можно добавить аналогичный Netwatch с понижением до 10, чтобы при падении WAN на обоих роутерах Master оставался тот, у кого priority выше.

[admin@MikroTik] >
/tool/netwatch add host=8.8.8.8 type=icmp interval=5s timeout=2s \
    up-script="/interface/vrrp set vrrp1 priority=100" \
    down-script="/interface/vrrp set vrrp1 priority=10" \
    comment="VRRP WAN tracking"

Мониторинг через два хоста

Для более надёжного определения состояния WAN рекомендуется проверять два независимых хоста и понижать priority только при недоступности обоих. Это предотвращает ложные срабатывания.

Создаём скрипт на Router A:

[admin@MikroTik] >
/system/script add name=vrrp-wan-check source={
    :local host1 [/tool/netwatch get [find host=8.8.8.8] status]
    :local host2 [/tool/netwatch get [find host=1.1.1.1] status]
    :if ($host1 = "up" || $host2 = "up") do={
        /interface/vrrp set vrrp1 priority=254
    } else={
        /interface/vrrp set vrrp1 priority=50
    }
}

/tool/netwatch add host=8.8.8.8 type=icmp interval=5s timeout=2s \
    up-script="/system/script run vrrp-wan-check" \
    down-script="/system/script run vrrp-wan-check"

/tool/netwatch add host=1.1.1.1 type=icmp interval=5s timeout=2s \
    up-script="/system/script run vrrp-wan-check" \
    down-script="/system/script run vrrp-wan-check"

Расширенная конфигурация

VRRP на VLAN-интерфейсе

Если LAN-сегмент работает поверх VLAN, VRRP привязывается к VLAN-интерфейсу:

[admin@MikroTik] >
/interface/vlan add name=vlan100 vlan-id=100 interface=bridge-lan

/interface/vrrp add name=vrrp-vlan100 interface=vlan100 vrid=100 priority=254 version=3

/ip/address add address=10.0.100.1/32 interface=vrrp-vlan100

VRID рекомендуется делать равным VLAN ID для удобства администрирования (если ID не превышает 255).

Несколько VRRP-групп (load sharing)

Можно распределить нагрузку между роутерами, создав две VRRP-группы с разными приоритетами:

Router A:

[admin@MikroTik] >
/interface/vrrp add name=vrrp1 interface=bridge-lan vrid=1 priority=254 version=3
/interface/vrrp add name=vrrp2 interface=bridge-lan vrid=2 priority=100 version=3

/ip/address add address=192.168.88.1/32 interface=vrrp1
/ip/address add address=192.168.88.4/32 interface=vrrp2

Router B:

[admin@MikroTik] >
/interface/vrrp add name=vrrp1 interface=bridge-lan vrid=1 priority=100 version=3
/interface/vrrp add name=vrrp2 interface=bridge-lan vrid=2 priority=254 version=3

/ip/address add address=192.168.88.1/32 interface=vrrp1
/ip/address add address=192.168.88.4/32 interface=vrrp2

Половина клиентов использует шлюз 192.168.88.1 (Master — Router A), вторая половина — 192.168.88.4 (Master — Router B). При падении одного роутера второй забирает оба VIP.

Аутентификация VRRP

VRRPv3 (RFC 5798) не поддерживает встроенную аутентификацию (в отличие от VRRPv2). Для защиты от спуфинга используйте firewall-правила, ограничивающие VRRP-трафик по source address:

[admin@MikroTik] >
/ip/firewall/filter add chain=input protocol=vrrp src-address=192.168.88.2 action=accept \
    comment="Allow VRRP from Router A"
/ip/firewall/filter add chain=input protocol=vrrp src-address=192.168.88.3 action=accept \
    comment="Allow VRRP from Router B"
/ip/firewall/filter add chain=input protocol=vrrp action=drop \
    comment="Drop VRRP from unknown sources"

Проверка

Статус VRRP-интерфейса

[admin@MikroTik] >
/interface/vrrp print detail

Ожидаемый вывод на Router A:

code
Flags: X - disabled, R - running
 0  R name="vrrp1" mtu=1500 mac-address=00:00:5E:00:01:01 arp=enabled
      interface=bridge-lan vrid=1 priority=254 interval=1s
      preemption-mode=yes version=3 v3-protocol=ipv4
      on-backup="" on-master=""

MAC-адрес 00:00:5E:00:01:01 — виртуальный MAC для VRID 1.

Мониторинг VRRP

Основная команда для проверки текущей роли:

[admin@MikroTik] >
/interface/vrrp monitor vrrp1

Ожидаемый вывод на Master:

code
              running: yes
              backup: no
               master: yes
    on-master-event: none
     master-address: 192.168.88.2

На Backup:

code
              running: yes
              backup: yes
               master: no
    on-master-event: none
     master-address: 192.168.88.2

Поле master-address показывает реальный IP текущего Master.

Проверка ARP

На клиентском устройстве проверяем, что виртуальный IP отвечает с виртуальным MAC:

code
arp -a | findstr 192.168.88.1

Ожидаемый результат: 192.168.88.1 00-00-5e-00-01-01 dynamic

MAC-адрес не должен меняться при переключении Master/Backup — это главное преимущество VRRP.

Тест переключения

  1. Убедитесь, что Router A — Master:
[admin@MikroTik] >
/interface/vrrp monitor vrrp1 once
  1. Отключите VRRP на Router A для имитации отказа:
[admin@MikroTik] >
/interface/vrrp disable vrrp1
  1. На Router B проверьте, что он стал Master:
[admin@MikroTik] >
/interface/vrrp monitor vrrp1 once
  1. Проверьте, что клиенты не потеряли связь (пинг 192.168.88.1 может прерваться на 3–4 секунды).

  2. Включите VRRP обратно на Router A:

[admin@MikroTik] >
/interface/vrrp enable vrrp1
  1. Благодаря preemption Router A снова станет Master.

Мониторинг через SNMP

Для систем мониторинга (Zabbix, Grafana) VRRP-статус доступен через SNMP OID:

[admin@MikroTik] >
/snmp set enabled=yes community=public

# VRRP MIB: 1.3.6.1.2.1.68 (VRRP-MIB)
# vrrpOperState: 1.3.6.1.2.1.68.1.3.1.3
# Значения: 1=initialize, 2=backup, 3=master

Типичные ошибки

1. Одинаковый VRID в разных подсетях

Проблема: два VRRP-интерфейса с одинаковым VRID в разных VLAN/подсетях на одном роутере конфликтуют.

Симптом: непредсказуемое переключение ролей, оба роутера попеременно становятся Master.

Решение: используйте уникальный VRID для каждой подсети/VLAN:

[admin@MikroTik] >
# VLAN 100 — VRID 100
/interface/vrrp add name=vrrp-v100 interface=vlan100 vrid=100 priority=254 version=3

# VLAN 200 — VRID 200
/interface/vrrp add name=vrrp-v200 interface=vlan200 vrid=200 priority=254 version=3

2. Firewall блокирует протокол 112

Проблема: правила firewall с action=drop в цепочке input блокируют VRRP-пакеты (IP protocol 112).

Симптом: оба роутера одновременно считают себя Master (split-brain). В логах — нет ошибок, но оба отвечают на ARP для виртуального IP. Дублирование IP вызывает непредсказуемое поведение у клиентов.

Диагностика:

[admin@MikroTik] >
# Проверяем, проходят ли VRRP-пакеты
/ip/firewall/filter add chain=input protocol=vrrp action=log log-prefix="VRRP" \
    place-before=0
/log/print where message~"VRRP"

Решение: добавьте разрешающее правило до drop-правил:

[admin@MikroTik] >
/ip/firewall/filter add chain=input protocol=vrrp action=accept place-before=0

3. Preemption не работает

Проблема: после восстановления Router A не забирает роль Master обратно.

Возможные причины:

  • preemption-mode=no — проверьте настройку
  • Priority одинаковый на обоих роутерах — в этом случае Master остаётся тот, кто первым занял роль
  • Netwatch-скрипт не вернул priority обратно

Диагностика:

[admin@MikroTik] >
/interface/vrrp print detail where name=vrrp1
# Проверяем preemption-mode и текущий priority

4. Асимметричная маршрутизация

Проблема: трафик от клиентов уходит через Master (VRRP), а обратный трафик приходит через Backup (потому что ISP маршрутизирует по-другому).

Симптом: часть соединений не устанавливается; connection tracking отбрасывает пакеты как invalid.

Решение: убедитесь, что NAT masquerade настроен на обоих роутерах. Трафик должен выходить в интернет через WAN текущего Master:

[admin@MikroTik] >
# На обоих роутерах — masquerade с правильным out-interface
/ip/firewall/nat add chain=srcnat out-interface=ether1 action=masquerade

5. Virtual MAC не работает через некоторые коммутаторы

Проблема: управляемые коммутаторы с настройками безопасности (port security, DHCP snooping, dynamic ARP inspection) могут блокировать виртуальный MAC 00:00:5E:00:01:XX.

Симптом: VRRP работает (роутеры видят друг друга), но клиенты не могут достучаться до VIP.

Решение: настройте исключения на коммутаторе для VRRP MAC-адресов, либо отключите port security на портах, к которым подключены VRRP-роутеры.

6. Разные версии VRRP

Проблема: один роутер настроен с version=2, другой — с version=3. Они не видят Advertisement друг друга.

Решение: убедитесь, что version одинаковый на всех участниках:

[admin@MikroTik] >
/interface/vrrp set vrrp1 version=3

VRRPv3 рекомендуется для всех новых инсталляций.

7. VRRP и MAC-Telnet/Winbox

Проблема: после переключения VRRP управление через Winbox по MAC-адресу может перестать работать, если вы подключались через виртуальный MAC.

Решение: для управления всегда используйте реальные IP-адреса роутеров (192.168.88.2 и 192.168.88.3), а не виртуальный IP (192.168.88.1).

Полная конфигурация

Router A (Master)

[admin@MikroTik] >
# Базовая настройка
/system/identity set name="Router-A-VRRP-Master"

# Bridge
/interface/bridge add name=bridge-lan
/interface/bridge/port add bridge=bridge-lan interface=ether2
/interface/bridge/port add bridge=bridge-lan interface=ether3
/interface/bridge/port add bridge=bridge-lan interface=ether4
/interface/bridge/port add bridge=bridge-lan interface=ether5

# IP
/ip/address add address=192.168.88.2/24 interface=bridge-lan

# WAN
/ip/dhcp-client add interface=ether1 add-default-route=yes use-peer-dns=yes

# VRRP
/interface/vrrp add name=vrrp1 interface=bridge-lan vrid=1 priority=254 \
    interval=1s preemption-mode=yes version=3
/ip/address add address=192.168.88.1/32 interface=vrrp1

# NAT
/ip/firewall/nat add chain=srcnat out-interface=ether1 action=masquerade

# Firewall — разрешить VRRP
/ip/firewall/filter add chain=input protocol=vrrp action=accept \
    comment="Allow VRRP" place-before=0

# DHCP Server (pool: .50-.149)
/ip/pool add name=dhcp-pool-a ranges=192.168.88.50-192.168.88.149
/ip/dhcp-server add name=dhcp-lan interface=bridge-lan \
    address-pool=dhcp-pool-a lease-time=1h authoritative=after-2sec-delay
/ip/dhcp-server/network add address=192.168.88.0/24 gateway=192.168.88.1 \
    dns-server=192.168.88.1,8.8.8.8

# DNS
/ip/dns set allow-remote-requests=yes servers=8.8.8.8,1.1.1.1

# WAN tracking
/tool/netwatch add host=8.8.8.8 type=icmp interval=5s timeout=2s \
    up-script="/interface/vrrp set vrrp1 priority=254" \
    down-script="/interface/vrrp set vrrp1 priority=50"

Router B (Backup)

[admin@MikroTik] >
# Базовая настройка
/system/identity set name="Router-B-VRRP-Backup"

# Bridge
/interface/bridge add name=bridge-lan
/interface/bridge/port add bridge=bridge-lan interface=ether2
/interface/bridge/port add bridge=bridge-lan interface=ether3
/interface/bridge/port add bridge=bridge-lan interface=ether4
/interface/bridge/port add bridge=bridge-lan interface=ether5

# IP
/ip/address add address=192.168.88.3/24 interface=bridge-lan

# WAN
/ip/dhcp-client add interface=ether1 add-default-route=yes use-peer-dns=yes

# VRRP
/interface/vrrp add name=vrrp1 interface=bridge-lan vrid=1 priority=100 \
    interval=1s preemption-mode=yes version=3
/ip/address add address=192.168.88.1/32 interface=vrrp1

# NAT
/ip/firewall/nat add chain=srcnat out-interface=ether1 action=masquerade

# Firewall — разрешить VRRP
/ip/firewall/filter add chain=input protocol=vrrp action=accept \
    comment="Allow VRRP" place-before=0

# DHCP Server (pool: .150-.249)
/ip/pool add name=dhcp-pool-b ranges=192.168.88.150-192.168.88.249
/ip/dhcp-server add name=dhcp-lan interface=bridge-lan \
    address-pool=dhcp-pool-b lease-time=1h authoritative=after-2sec-delay
/ip/dhcp-server/network add address=192.168.88.0/24 gateway=192.168.88.1 \
    dns-server=192.168.88.1,8.8.8.8

# DNS
/ip/dns set allow-remote-requests=yes servers=8.8.8.8,1.1.1.1

# WAN tracking
/tool/netwatch add host=8.8.8.8 type=icmp interval=5s timeout=2s \
    up-script="/interface/vrrp set vrrp1 priority=100" \
    down-script="/interface/vrrp set vrrp1 priority=10"

Заключение

VRRP — самый простой и надёжный способ обеспечить отказоустойчивость шлюза в MikroTik. Протокол стандартизирован, не требует скриптов для базовой работы, а переключение занимает считанные секунды. Связка VRRP + Netwatch покрывает большинство сценариев: как отказ самого роутера, так и потерю WAN-канала. Для более сложных топологий рассмотрите использование OSPF или BGP с динамическим failover.

[admin@MikroTik] >
ISP
                    |
            ┌───────┴───────┐
            │               │
       [Router A]      [Router B]
       ether1: WAN     ether1: WAN
       Priority: 254   Priority: 100
       Role: MASTER     Role: BACKUP
            │               │
            └───────┬───────┘
                    │
              [Switch/Bridge]
              VRRP VIP: 192.168.88.1
                    │
            ┌───┬───┼───┬───┐
            PC1 PC2 PC3 PC4 PC5
            Gateway: 192.168.88.1
/interface/bridge add name=bridge-lan
/interface/bridge/port add bridge=bridge-lan interface=ether2
/interface/bridge/port add bridge=bridge-lan interface=ether3
/interface/bridge/port add bridge=bridge-lan interface=ether4
/interface/bridge/port add bridge=bridge-lan interface=ether5

/ip/address add address=192.168.88.2/24 interface=bridge-lan
/interface/bridge add name=bridge-lan
/interface/bridge/port add bridge=bridge-lan interface=ether2
/interface/bridge/port add bridge=bridge-lan interface=ether3
/interface/bridge/port add bridge=bridge-lan interface=ether4
/interface/bridge/port add bridge=bridge-lan interface=ether5

/ip/address add address=192.168.88.3/24 interface=bridge-lan
/interface/vrrp add name=vrrp1 interface=bridge-lan vrid=1 priority=254 \
    interval=1s preemption-mode=yes version=3
/interface/vrrp add name=vrrp1 interface=bridge-lan vrid=1 priority=100 \
    interval=1s preemption-mode=yes version=3
/ip/address add address=192.168.88.1/32 interface=vrrp1
/ip/dhcp-client add interface=ether1 add-default-route=yes use-peer-dns=yes

/ip/firewall/nat add chain=srcnat out-interface=ether1 action=masquerade
/ip/dhcp-client add interface=ether1 add-default-route=yes use-peer-dns=yes

/ip/firewall/nat add chain=srcnat out-interface=ether1 action=masquerade
/ip/firewall/filter add chain=input protocol=vrrp action=accept \
    comment="Allow VRRP protocol 112" place-before=0

/ip/firewall/filter add chain=input dst-address=224.0.0.18 action=accept \
    comment="Allow VRRP multicast" place-before=1
/ip/pool add name=dhcp-pool-a ranges=192.168.88.50-192.168.88.149

/ip/dhcp-server add name=dhcp-lan interface=bridge-lan address-pool=dhcp-pool-a \
    lease-time=1h authoritative=after-2sec-delay

/ip/dhcp-server/network add address=192.168.88.0/24 gateway=192.168.88.1 \
    dns-server=192.168.88.1,8.8.8.8
/ip/pool add name=dhcp-pool-b ranges=192.168.88.150-192.168.88.249

/ip/dhcp-server add name=dhcp-lan interface=bridge-lan address-pool=dhcp-pool-b \
    lease-time=1h authoritative=after-2sec-delay

/ip/dhcp-server/network add address=192.168.88.0/24 gateway=192.168.88.1 \
    dns-server=192.168.88.1,8.8.8.8
/ip/dns set allow-remote-requests=yes servers=8.8.8.8,1.1.1.1
/tool/netwatch add host=8.8.8.8 type=icmp interval=5s timeout=2s \
    up-script="/interface/vrrp set vrrp1 priority=254" \
    down-script="/interface/vrrp set vrrp1 priority=50" \
    comment="VRRP WAN tracking"
/tool/netwatch add host=8.8.8.8 type=icmp interval=5s timeout=2s \
    up-script="/interface/vrrp set vrrp1 priority=100" \
    down-script="/interface/vrrp set vrrp1 priority=10" \
    comment="VRRP WAN tracking"
/system/script add name=vrrp-wan-check source={
    :local host1 [/tool/netwatch get [find host=8.8.8.8] status]
    :local host2 [/tool/netwatch get [find host=1.1.1.1] status]
    :if ($host1 = "up" || $host2 = "up") do={
        /interface/vrrp set vrrp1 priority=254
    } else={
        /interface/vrrp set vrrp1 priority=50
    }
}

/tool/netwatch add host=8.8.8.8 type=icmp interval=5s timeout=2s \
    up-script="/system/script run vrrp-wan-check" \
    down-script="/system/script run vrrp-wan-check"

/tool/netwatch add host=1.1.1.1 type=icmp interval=5s timeout=2s \
    up-script="/system/script run vrrp-wan-check" \
    down-script="/system/script run vrrp-wan-check"
/interface/vlan add name=vlan100 vlan-id=100 interface=bridge-lan

/interface/vrrp add name=vrrp-vlan100 interface=vlan100 vrid=100 priority=254 version=3

/ip/address add address=10.0.100.1/32 interface=vrrp-vlan100
/interface/vrrp add name=vrrp1 interface=bridge-lan vrid=1 priority=254 version=3
/interface/vrrp add name=vrrp2 interface=bridge-lan vrid=2 priority=100 version=3

/ip/address add address=192.168.88.1/32 interface=vrrp1
/ip/address add address=192.168.88.4/32 interface=vrrp2
/interface/vrrp add name=vrrp1 interface=bridge-lan vrid=1 priority=100 version=3
/interface/vrrp add name=vrrp2 interface=bridge-lan vrid=2 priority=254 version=3

/ip/address add address=192.168.88.1/32 interface=vrrp1
/ip/address add address=192.168.88.4/32 interface=vrrp2
/ip/firewall/filter add chain=input protocol=vrrp src-address=192.168.88.2 action=accept \
    comment="Allow VRRP from Router A"
/ip/firewall/filter add chain=input protocol=vrrp src-address=192.168.88.3 action=accept \
    comment="Allow VRRP from Router B"
/ip/firewall/filter add chain=input protocol=vrrp action=drop \
    comment="Drop VRRP from unknown sources"
/interface/vrrp print detail
Flags: X - disabled, R - running
 0  R name="vrrp1" mtu=1500 mac-address=00:00:5E:00:01:01 arp=enabled
      interface=bridge-lan vrid=1 priority=254 interval=1s
      preemption-mode=yes version=3 v3-protocol=ipv4
      on-backup="" on-master=""
/interface/vrrp monitor vrrp1
running: yes
              backup: no
               master: yes
    on-master-event: none
     master-address: 192.168.88.2
running: yes
              backup: yes
               master: no
    on-master-event: none
     master-address: 192.168.88.2
arp -a | findstr 192.168.88.1
/interface/vrrp monitor vrrp1 once
/interface/vrrp disable vrrp1
/interface/vrrp monitor vrrp1 once
/interface/vrrp enable vrrp1
/snmp set enabled=yes community=public

# VRRP MIB: 1.3.6.1.2.1.68 (VRRP-MIB)
# vrrpOperState: 1.3.6.1.2.1.68.1.3.1.3
# Значения: 1=initialize, 2=backup, 3=master
# VLAN 100 — VRID 100
/interface/vrrp add name=vrrp-v100 interface=vlan100 vrid=100 priority=254 version=3

# VLAN 200 — VRID 200
/interface/vrrp add name=vrrp-v200 interface=vlan200 vrid=200 priority=254 version=3
# Проверяем, проходят ли VRRP-пакеты
/ip/firewall/filter add chain=input protocol=vrrp action=log log-prefix="VRRP" \
    place-before=0
/log/print where message~"VRRP"
/ip/firewall/filter add chain=input protocol=vrrp action=accept place-before=0
/interface/vrrp print detail where name=vrrp1
# Проверяем preemption-mode и текущий priority
# На обоих роутерах — masquerade с правильным out-interface
/ip/firewall/nat add chain=srcnat out-interface=ether1 action=masquerade
/interface/vrrp set vrrp1 version=3
# Базовая настройка
/system/identity set name="Router-A-VRRP-Master"

# Bridge
/interface/bridge add name=bridge-lan
/interface/bridge/port add bridge=bridge-lan interface=ether2
/interface/bridge/port add bridge=bridge-lan interface=ether3
/interface/bridge/port add bridge=bridge-lan interface=ether4
/interface/bridge/port add bridge=bridge-lan interface=ether5

# IP
/ip/address add address=192.168.88.2/24 interface=bridge-lan

# WAN
/ip/dhcp-client add interface=ether1 add-default-route=yes use-peer-dns=yes

# VRRP
/interface/vrrp add name=vrrp1 interface=bridge-lan vrid=1 priority=254 \
    interval=1s preemption-mode=yes version=3
/ip/address add address=192.168.88.1/32 interface=vrrp1

# NAT
/ip/firewall/nat add chain=srcnat out-interface=ether1 action=masquerade

# Firewall — разрешить VRRP
/ip/firewall/filter add chain=input protocol=vrrp action=accept \
    comment="Allow VRRP" place-before=0

# DHCP Server (pool: .50-.149)
/ip/pool add name=dhcp-pool-a ranges=192.168.88.50-192.168.88.149
/ip/dhcp-server add name=dhcp-lan interface=bridge-lan \
    address-pool=dhcp-pool-a lease-time=1h authoritative=after-2sec-delay
/ip/dhcp-server/network add address=192.168.88.0/24 gateway=192.168.88.1 \
    dns-server=192.168.88.1,8.8.8.8

# DNS
/ip/dns set allow-remote-requests=yes servers=8.8.8.8,1.1.1.1

# WAN tracking
/tool/netwatch add host=8.8.8.8 type=icmp interval=5s timeout=2s \
    up-script="/interface/vrrp set vrrp1 priority=254" \
    down-script="/interface/vrrp set vrrp1 priority=50"
# Базовая настройка
/system/identity set name="Router-B-VRRP-Backup"

# Bridge
/interface/bridge add name=bridge-lan
/interface/bridge/port add bridge=bridge-lan interface=ether2
/interface/bridge/port add bridge=bridge-lan interface=ether3
/interface/bridge/port add bridge=bridge-lan interface=ether4
/interface/bridge/port add bridge=bridge-lan interface=ether5

# IP
/ip/address add address=192.168.88.3/24 interface=bridge-lan

# WAN
/ip/dhcp-client add interface=ether1 add-default-route=yes use-peer-dns=yes

# VRRP
/interface/vrrp add name=vrrp1 interface=bridge-lan vrid=1 priority=100 \
    interval=1s preemption-mode=yes version=3
/ip/address add address=192.168.88.1/32 interface=vrrp1

# NAT
/ip/firewall/nat add chain=srcnat out-interface=ether1 action=masquerade

# Firewall — разрешить VRRP
/ip/firewall/filter add chain=input protocol=vrrp action=accept \
    comment="Allow VRRP" place-before=0

# DHCP Server (pool: .150-.249)
/ip/pool add name=dhcp-pool-b ranges=192.168.88.150-192.168.88.249
/ip/dhcp-server add name=dhcp-lan interface=bridge-lan \
    address-pool=dhcp-pool-b lease-time=1h authoritative=after-2sec-delay
/ip/dhcp-server/network add address=192.168.88.0/24 gateway=192.168.88.1 \
    dns-server=192.168.88.1,8.8.8.8

# DNS
/ip/dns set allow-remote-requests=yes servers=8.8.8.8,1.1.1.1

# WAN tracking
/tool/netwatch add host=8.8.8.8 type=icmp interval=5s timeout=2s \
    up-script="/interface/vrrp set vrrp1 priority=100" \
    down-script="/interface/vrrp set vrrp1 priority=10"
Routing / VRRP на MikroTik — отказоустойчивость шлюза