В статье, на примере роутеров Mikrotik, разберём сетевой протокол VRRP предназначенный для резервирования роутеров.

Теория

Описание протокола

VRRP протокол позволяет объединить несколько маршрутизаторов в одну группу и этой группе назначить один общий ip-адрес. Этот ip-адрес и будет использоваться как шлюз для локальной сети. При этом, общий ip-адрес будет назначен виртуальному интерфейсу на всех маршрутизаторах в одной группе. Но этот виртуальный интерфейс будет работать только на одном маршрутизаторе, а на всех остальных он перейдет в резервное состояние.

В настоящее время, роутеры MikroTik, позволяют используют две версии VRRP: вторую и третью. Третья версия отличается от второй возможностью указать меньшее время периода отправки служебных сообщений и поддержкой IPv6. А меньшее время периода отправки служебных сообщений, означает более быстрое реагирование при поломки основного маршрутизатора и переключение на резервный.

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

ПараметрVRRP (V2)VRRP (V3)
RFC37685798
Поддержка протоколовIPv4IPv4 и IPv6
Минимальный период отправки
служебных сообщений (Interval)
Секунда
(1,00)
Миллисекунда
(0,01)
Мультикастовый адрес для отправки
служебных сообщений
224.0.0.18 для IPv4224.0.0.18 для IPv4
FF02:0:0:0:0:0:0:12 для IPv6
Различия в версиях VRRP

Мультикастовый адрес 224.0.0.18 закреплён за протоколом VRRP. Это не маршрутизируемый адрес (link local scope), то есть маршрутизатор не перенаправляет служебные сообщения VRRP в другие сети.

Если интересно, список других мультикастовых адресов и их предназначение можете посмотреть здесь.

Терминология

При изучении VRRP необходимо понять следующие термины:

  • VRID — идентификатор группы роутеров, это число от 1 до 255. То-есть, при объединении нескольких роутеров в одну группу, нужно указать одинаковый VRID на всех роутерах.
  • VIP — виртуальный ip-адрес. Этот ip-адрес назначается на всех VRRP роутерах в одной группе. Назначается он на специальном VRRP интерфейсе.
  • VMAC — виртуальный mac-адрес интерфейса для VRRP. При этом, VMAC зависит от VRID, и выглядит следующим образом: 00:00:5E:00:01:XX, где XX — это VRID представленный в 16-ричном виде.
  • Priority — приоритет роутера в группе VRRP. Роутер с наивысшим приоритетом в группе начнет обрабатывать трафик, а остальные станут резервными.
  • VRRP Interface — виртуальный интерфейс, который предназначен для работы VRRP. Именно ему назначают VIP, VMAC, VRID и Priority.
  • Master Router — роутер, который, в данный момент, обслуживает VRRP Interface. Он отвечает на запросы к VIP и VMAC. А также, этот роутер, отправляет служебные сообщения на ip-адрес 224.0.0.18, который слушают все остальные VRRP роутеры в группе.
  • Backup Router — роутер, который, в данный момент, находится в резервном состоянии. Он не обслуживает VRRP интерфейс, а только принимает служебные сообщения от Master Router. И если он не получит служебное сообщение за настроенный период времени, или получит сообщение с меньшим приоритетом, то перейдет в состояние Master Router.

В общем, обмен служебными сообщениями и выбор главного роутера из группы, это и есть основная работа VRRP.

Алгоритм определения главного роутера

Представим, что мы объединили два роутера в группу VRRP. Они оба считают себя главными (Master Router) и посылают на ip-адрес 224.0.0.18 служебные сообщения.

У первого роутера приоритет выше, поэтому, когда он получает сообщение от второго роутера с более низким приоритетом, он остается Master Router.

У второго роутера приоритет меньше, поэтому, когда он получает сообщение от первого роутера с более высоким приоритетом, он переходит в состояние Backup Router. А Backup Router перестаёт отсылать служебные сообщения.

Второй роутер может стать Master Router в двух ситуациях:

  • Как только первый роутер выходит из строя, то второй роутер перестаёт получать служебные сообщения и переходит в состояние Master Router.
  • Мы вручную, или с помощью каких-то автоматизированных средств, понижаем приоритет первого роутера. Тогда второй роутер получает сообщение, но с более низким приоритетом. И после этого второй роутер становится Master Router и тоже начинает пересылать служебные сообщения. Первый роутер получает от второго служебное сообщение с более высоким приоритетом и переходит в состояние Backup Router.

Возможные схемы использования VRRP

Схема с двумя провайдерами

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

У вас два провайдера, и каждый подключен к своему роутеру. Настройки для выхода в интернет, в этом случае, у вас разные. Но оба роутера обслуживают одну локальную сеть (в примере — 192.168.0.0/24). Чтобы роутеры общались между собой, их LAN интерфейсы соединены одним коммутатором. И этот же коммутатор обслуживает всю остальную локальную сеть.

Схема VRRP с двумя провайдерами

На компьютерах, в качестве шлюза прописан ip-адрес 192.168.0.1. Основным маршрутизатором, в этом случае, выступает Router1, а резервным Router2 (так как у него приоритет ниже).

Чтобы улучшить работу, можно мониторить выход в интернет с первого роутера. И в случае его отсутствия понижать приоритет. Тогда при проблемах первого провайдера, вы переключитесь на второй роутер и начнёте работать через второго провайдера. Mikrotik это позволяет сделать с помощью инструмента Netwatch.

Схема с одним провайдером

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

Схема VRRP с одним провайдером

Чтобы разделить одного провайдера на два роутера, используем коммутатор. При этом, настройки для выхода в интернет на обоих роутерах будут одинаковым. А чтобы не допустить дублирование ip-адресов на стороне провайдера, на резервном роутере выключим WAN интерфейс. Включать мы его будет автоматически, при переключении резервного роутера в состояние Master Router. Mikrotik позволяет выполнять скрипты при переключении VRRP интерфейса в состояния: Master Router или Backup Router. То есть, когда резервный маршрутизатор становится основным, нужно на нём включить wan-интерфейс. А когда он снова станет резервным — отключить wan интерфейс.

Практика

Я буду воспроизводить схему с двумя провайдерами:

Схема VRRP с двумя провайдерами

Для начала определимся с интерфейсами: ether2 — это lan, а ether3 — это wan.

Настройка Router1

Создадим VRRP Interface на ether2:

[admin@Router1] > interface vrrp add interface=ether2 vrid=100 priority=100 version=3

VRRP интерфейс у меня получает следующие настройки:

  • Идентификатор группы VRRP (vrid) = 100
  • Приоритет роутера в этой группе (priority) = 100
  • Версия VRRP = 3

Настроим ip-адреса на каждом интерфейсе:

[admin@Router1] > ip address add interface=ether2 address=192.168.0.2/24 comment=lan
[admin@Router1] > ip address add interface=ether3 address=10.10.10.5/24 comment=wan
[admin@Router1] > ip address add address=192.168.0.1 interface=vrrp1 comment=vip

Обратите внимание, на vrrp интерфейсе маску сети не указываем! Нельзя ip-адреса из одной подсети назначать разным интерфейсам, иначе произойдет путаница в маршрутах. А таким способом мы обходим это ограничение. Или можно было для ether2 назначить ip-адреса из другой подсети (например 192.168.1.1/30 для первого роутера и 192.168.1.2/30 для второго). Тогда для VRRP интерфейса вы бы указали — 192.168.0.1/24.

Создадим маршрут по умолчанию на провайдера и настроим nat (masquerade):

[admin@Router1] > ip route add dst-address=0.0.0.0/0 gateway=10.10.10.1
[admin@Router1] > ip firewall nat add chain=srcnat src-address=192.168.0.0/24 out-interface=ether3 action=masquerade

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

Настройка Router2

Создадим VRRP Interface на ether2:

[admin@Router2] > interface vrrp add interface=ether2 vrid=100 priority=80 version=3

VRRP интерфейс у меня получает следующие настройки:

  • Идентификатор группы VRRP (vrid) = 100
  • Приоритет роутера в этой группе (priority) = 80
  • Версия VRRP = 3

Настроим ip-адреса на каждом интерфейсе:

[admin@Router2] > ip address add interface=ether2 address=192.168.0.3/24 comment=lan
[admin@Router2] > ip address add interface=ether3 address=10.10.15.5/24 comment=wan
[admin@Router2] > ip address add address=192.168.0.1 interface=vrrp1 comment=vip

Здесь, точно также, на vrrp интерфейсе маску сети не указываем!

Создадим маршрут по умолчанию на провайдера и настроим nat (masquerade):

[admin@Router2] > ip route add dst-address=0.0.0.0/0 gateway=10.10.15.1
[admin@Router2] > ip firewall nat add chain=srcnat src-address=192.168.0.0/24 out-interface=ether3 action=masquerade

На этом настройка второго роутера закончена. Он от первого роутера получит служебное сообщение, поймет что у него приоритет ниже и VRRP интерфейс перейдет в состояние Backup.

Что в итоге?

После проделанных настроек vrrp-интерфейс на первом роутере перейдёт в состояние Ranning/Master:

Интерфейсы на Router1

А на втором роутере vvrp-интерфейс окажется в состоянии Backup:

Интерфейсы на Router2

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

А что с фаерволом?

В этом примере я не настраивал фаервол. Но если он у вас работает как «нормально закрытый» (запрещено всё, что не разрешено). То вам нужно разрешить входящий трафик для служебных сообщений VRRP.

  • Разрешите протокол 112 (vrrp) на ether2, если не используете авторизацию или используете аутентификацию simple.
  • Разрешите протокол 51 (ipsec-ah) на ether2, если используете аутентификацию ah.

Замечу что VRRP версии 3 не поддерживает авторизацию совсем.

В графическом интерфейсе аутентификация для VRRP второй версии настраивается так:

Настройка аутентификации для второй версии VRRP

А в командной строке можно настроить так:

[admin@Router1] > interface vrrp add interface=ether2 vrid=100 priority=100 version=2 authentication=ah password=12345
[admin@Router2] > interface vrrp add interface=ether2 vrid=100 priority=80 version=2 authentication=ah password=12345

А так, в командной строке, создаются правила разрешающие VRRP (первое для VRRP без аутентификации или с аутентификацией simple, второе для VRRP с аутентификацией ah):

> ip firewall filter add chain=input in-interface=ether2 protocol=112 action=accept comment=vrrp
> ip firewall filter add chain=input in-interface=ether2 protocol=51 action=accept comment=vrrp

Вот так, эти правила фаервола, выглядят в окне WinBox:

Правила Firewall для VRRP

Дополнительная настройка (Netwatch)

В нашей схеме есть один недочет. Если первый роутер будет исправен, а у первого провайдера начнутся проблемы, мы не переключимся на второй роутер, хотя могли бы поработать через 2-ого провайдера.

Но, с помощью инструмента Tools / Netwatch, можно настроить переключение на второй роутер в случае неисправности у первого провайдера.

Инструмент Netwatch на MikroTik

На основном роутере (Router1) создайте следующее netwatch правило. В качестве пингуемого хоста я укажу 8.8.8.8, а интервал уменьшу до 5 секунд:

Создание Netwatch правила — вкладка Host

Если 8.8.8.8 доступен, то выполняем команду — interface vrrp set vrrp1 priority=100 (назначаем приоритет для vrrp интерфейса равным 100):

Создание Netwatch правила — вкладка Up

Если 8.8.8.8 не доступен, то выполняем команду — interface vrrp set vrrp1 priority=10 (уменьшаем приоритет для vrrp интерфейса до 10):

Создание Netwatch правила — вкладка Down

Это правило делает следующее:

  • если с этого роутера пингуется 8.8.8.8 то повышаем приоритет и VRRP интерфейс переходит в состояние Master;
  • а если 8.8.8.8 перестает пинговаться, то понижаем приоритет до 10 и VRRP интерфейс переходит в состояние Backup. При этом главным становится Router2.

Итог

Статья получилась довольно большой. Поэтому реализацию схемы сети с одним провайдером я не стал описывать. Я думаю с этим вы справитесь и сами. Могу лишь подсказать что на резервном роутере, в настройках VRRP интерфейса, нужно указать команды которые будут включать wan интерфейс когда VRRP перейдёт в состояние Master. И выключать WAN интерфейс, когда VRRP перейдет в состояние Backup.

Вот эти команды:

> interface disable ether3 
> interface enable ether3 

В WinBox эти команды можно написать в настройках VRRP интерфейса:

Скрипты в настройках VRRP интерфейса

На этом всё!


Другие статьи по теме Mikrotik вы можете найти здесь!

Сводка
Резервирование роутеров Mikrotik с помощью VRRP
Имя статьи
Резервирование роутеров Mikrotik с помощью VRRP
Описание
В статье, на примере роутеров Mikrotik, разберём сетевой протокол VRRP предназначенный для резервирования роутеров

9 Replies to “Резервирование роутеров Mikrotik с помощью VRRP”

  1. Статья хорошая, но как и все в интернете не работают у меня. Все делаю 1 в 1 как по инструкции, а VIP не пингуется, в инет с клиента не ходит.

  2. У меня, для распределения нагрузки, часть компьютеров выходит через одного провайдера микрот 1 часть через второго соответственно микрот 2. Как будет это работать в данном случае.

    1. В этом случае нужно держать ещё два микротика. Допустим у вас Router1 и Router2, и ставите ещё Router3 (резервный для Router1) и Router4 (резервный для Router2). Пара роутеров для VRRP должна быть с идентичными настройками, то есть фаервол, нат, маскарадинг, приоритеты, dhcp клент, всё это и подобное должно совпадать на обоих роутерах. При этом в MikroTik нет возможности как-то синхронизировать настройки, если только скриптами, что усложняет использование VRRP. Вот добавили вы новое правило фаервола на первый роутер, нужно не забыть добавить его на второй.

      1. Это слишком сложно и затратно. Проще сделать два VLAN и повесить на них VRRP. Задать разный приоритет скажем один VLAN будет master на R1, и slave на R2, другой наоборот. Пользователей распределить между 2я VLAN. Все. Часть будет ходить через первого, часть через второго. При этом при падении R1 всю нагрузку возьмет на себя R2

  3. «Чтобы разделить одного провайдера на два роутера, используем коммутатор. При этом, настройки для выхода в интернет на обоих роутерах будут одинаковым. А чтобы не допустить дублирование ip-адресов на стороне провайдера, на резервном роутере выключим WAN интерфейс.»

    А нельзя просто поднять vrrp интерфейс со стороны провайдера?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *