Sysadminium
В статье, на примере роутеров Mikrotik, разберём сетевой протокол VRRP предназначенный для резервирования роутеров.
Теория
Описание протокола
VRRP протокол позволяет объединить несколько маршрутизаторов в одну группу и этой группе назначить один общий ip-адрес. Этот ip-адрес и будет использоваться как шлюз для локальной сети. При этом, общий ip-адрес будет назначен виртуальному интерфейсу на всех маршрутизаторах в одной группе. Но этот виртуальный интерфейс будет работать только на одном маршрутизаторе, а на всех остальных он перейдет в резервное состояние.
В настоящее время, роутеры MikroTik, позволяют используют две версии VRRP: вторую и третью. Третья версия отличается от второй возможностью указать меньшее время периода отправки служебных сообщений и поддержкой IPv6. А меньшее время периода отправки служебных сообщений, означает более быстрое реагирование при поломки основного маршрутизатора и переключение на резервный.
Вторая версия поддерживала аутентификацию. То есть маршрутизаторы, в одной группе VRRP, должны содержать одинаковый пароль. Если маршрутизатор не знает пароль от группы VRRP, то он не сможет стать участником этой группы. Но все равно может стать вторым мастером, именно по этой причине аутентификацию убрали в третей версии, так как она не увеличивает безопасность сети.
На компьютерах, в качестве шлюза прописан ip-адрес 192.168.0.1. Основным маршрутизатором, в этом случае, выступает Router1, а резервным Router2 (так как у него приоритет ниже).
Чтобы улучшить работу, можно мониторить выход в интернет с первого роутера. И в случае его отсутствия понижать приоритет. Тогда при проблемах первого провайдера, вы переключитесь на второй роутер и начнёте работать через второго провайдера. Mikrotik это позволяет сделать с помощью инструмента Netwatch.
Схема с одним провайдером
Эта схема менее предпочтительная, так как вы резервируете только роутеры. Но проблемы могут быть у провайдера или у вас поломается коммутатор который обслуживает WAN интерфейсы. То есть, точек отказа становится ещё больше.
Чтобы разделить одного провайдера на два роутера, используем коммутатор. При этом, настройки для выхода в интернет на обоих роутерах будут одинаковым. А чтобы не допустить дублирование ip-адресов на стороне провайдера, на резервном роутере выключим WAN интерфейс. Включать мы его будет автоматически, при переключении резервного роутера в состояние Master Router. Mikrotik позволяет выполнять скрипты при переключении VRRP интерфейса в состояния: Master Router или Backup Router. То есть, когда резервный маршрутизатор становится основным, нужно на нём включить wan-интерфейс. А когда он снова станет резервным — отключить wan интерфейс.
Практика
Я буду воспроизводить схему с двумя провайдерами:
Для начала определимся с интерфейсами: 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:
А на втором роутере vvrp-интерфейс окажется в состоянии Backup:
Теперь, если на клиентском компьютере указать в качестве шлюза 192.168.0.1, то он будет выходить в интернет через первый роутер, а в случае его поломки переключится на работу через второй роутер.
А что с фаерволом?
В этом примере я не настраивал фаервол. Но если он у вас работает как «нормально закрытый» (запрещено всё, что не разрешено). То вам нужно разрешить входящий трафик для служебных сообщений VRRP.
- Разрешите протокол 112 (vrrp) на ether2, если не используете авторизацию или используете аутентификацию simple.
- Разрешите протокол 51 (ipsec-ah) на ether2, если используете аутентификацию ah.
Замечу что VRRP версии 3 не поддерживает авторизацию совсем.
В графическом интерфейсе аутентификация для 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:
Дополнительная настройка (Netwatch)
В нашей схеме есть один недочет. Если первый роутер будет исправен, а у первого провайдера начнутся проблемы, мы не переключимся на второй роутер, хотя могли бы поработать через 2-ого провайдера.
Но, с помощью инструмента Tools / Netwatch, можно настроить переключение на второй роутер в случае неисправности у первого провайдера.
На основном роутере (Router1) создайте следующее netwatch правило. В качестве пингуемого хоста я укажу 8.8.8.8, а интервал уменьшу до 5 секунд:
Если 8.8.8.8 доступен, то выполняем команду — interface vrrp set vrrp1 priority=100 (назначаем приоритет для vrrp интерфейса равным 100):
Если 8.8.8.8 не доступен, то выполняем команду — interface vrrp set vrrp1 priority=10 (уменьшаем приоритет для vrrp интерфейса до 10):
Это правило делает следующее:
- если с этого роутера пингуется 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 интерфейса:
Другие статьи по теме Mikrotik вы можете найти здесь!
В статье, на примере роутеров Mikrotik, разберём сетевой протокол VRRP предназначенный для резервирования роутеров