VRRP на MikroTik — отказоустойчивость шлюза
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-ответ не меняется при переключении |
| VRID | Virtual Router ID (1–255). Идентификатор группы VRRP. Должен совпадать на Master и Backup |
| Priority | Приоритет маршрутизатора (1–254). Чем выше — тем вероятнее роль Master |
| Preemption | Механизм, при котором роутер с более высоким приоритетом автоматически забирает роль Master обратно после восстановления |
Как работает VRRP
-
Master — роутер с наивысшим приоритетом в группе VRID. Он отвечает на ARP-запросы виртуального IP, отправляет VRRP Advertisement пакеты (протокол IP 112, multicast 224.0.0.18) каждый интервал (по умолчанию 1 секунда).
-
Backup — роутер(ы) с более низким приоритетом. Они слушают Advertisement от Master. Если пакеты прекращаются (Master Dead Interval = 3 × advertisement-interval + skew time), Backup переходит в роль Master.
-
Переключение занимает обычно 3–4 секунды. После переключения новый Master начинает отправлять Gratuitous ARP, чтобы обновить ARP-таблицы коммутаторов и хостов.
-
Preemption — если исходный Master восстанавливается и его приоритет выше текущего, он автоматически забирает роль обратно (если preemption включён, что является поведением по умолчанию).
Схема сети
codeISP | ┌───────┴───────┐ │ │ [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
| Критерий | VRRP | Failover через скрипты |
|---|---|---|
| Время переключения | 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 IP | WAN IP | VRRP VIP | VRID | Priority |
|---|---|---|---|---|---|
| Router A | 192.168.88.2/24 | DHCP от ISP | 192.168.88.1/32 | 1 | 254 |
| Router B | 192.168.88.3/24 | DHCP от ISP | 192.168.88.1/32 | 1 | 100 |
Обратите внимание: виртуальный 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:
codeFlags: 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:
coderunning: yes backup: no master: yes on-master-event: none master-address: 192.168.88.2
На Backup:
coderunning: yes backup: yes master: no on-master-event: none master-address: 192.168.88.2
Поле master-address показывает реальный IP текущего Master.
Проверка ARP
На клиентском устройстве проверяем, что виртуальный IP отвечает с виртуальным MAC:
codearp -a | findstr 192.168.88.1
Ожидаемый результат: 192.168.88.1 00-00-5e-00-01-01 dynamic
MAC-адрес не должен меняться при переключении Master/Backup — это главное преимущество VRRP.
Тест переключения
- Убедитесь, что Router A — Master:
[admin@MikroTik] >/interface/vrrp monitor vrrp1 once
- Отключите VRRP на Router A для имитации отказа:
[admin@MikroTik] >/interface/vrrp disable vrrp1
- На Router B проверьте, что он стал Master:
[admin@MikroTik] >/interface/vrrp monitor vrrp1 once
-
Проверьте, что клиенты не потеряли связь (пинг 192.168.88.1 может прерваться на 3–4 секунды).
-
Включите VRRP обратно на Router A:
[admin@MikroTik] >/interface/vrrp enable vrrp1
- Благодаря 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.
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"