Пользователь
0,0
рейтинг
6 января 2013 в 16:05

Администрирование → Создание отказоустойчивого шлюза на основе Mikrotik RouterOS из песочницы tutorial

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

Под отказоустойчивостью подразумевалась мгновенная замена оборудования в случае выхода из строя. Я остановил выбор на Mikrotik RouterOS, так как имел положительный опыт эксплуатации данной ОС. Так же на выбор повлияло удобство настройки и администрирования благодаря утилите Winbox.

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

В качестве железа было решено использовать обычные PC с процессорами Core 2 Duo, 1 Гб памяти и HDD Flash от Трансенд в качестве накопителя. Оба маршрутизатора разместились в симпатичных MiniTower корусах на полке в серверном шкафу. Версия Mikrotik на тот момент устанавливалась 4.16, но сейчас работает на 5.22

Не буду описывать настройку всего маршрутизатора, а остановлюсь только на отказоустойчивости. Для лучшего восприятия информации ограничимся одним провайдером и 3-мя внутренними локальными сетями.

Протоколом для обеспечения отказоустойчивости был выбран VRRP. Принцип его в том, что маршрутизаторы имеют приоритет: Master и Slave и через некоторый интервал времени проверяют доступность друг друга. Если Master выйдет из строя — Slave его заменит.

Так как сетевых интерфейсов на маршрутизаторе по числу PCI всего 3 (1 интегрированный не использовали), а подсетей много — использовался также VLAN. При чем на физический интерфейс вешался VRRP, а уже на него VLAN-ы. Все настройки проводились на одном маршрутизаторе. Второй настраивается автоматически.

Настройка интерфейсов


Физичиские ethernet интерфейсы
/interface ethernet
set 0 arp=enabled auto-negotiation=yes cable-settings=default \
disable-running-check=yes disabled=no full-duplex=yes l2mtu=1600 \
mtu=1500 name=lan speed=1Gbps

set 1 arp=enabled auto-negotiation=yes cable-settings=default \
disable-running-check=yes disabled=no full-duplex=yes l2mtu=1600 \
mtu=1500 name=wan speed=1Gbps

Виртуальный VRRP-интерфейс
/interface vrrp
add arp=enabled authentication=none disabled=no interface=lan \
interval=2s mtu=1500 name=vrrp-lan \
preemption-mode=yes priority=101 v3-protocol=ipv4 version=3 vrid=2

Из настроек VRRP интересны 3 параметра
1) interface=lan интерфейс, на который вешается VRRP
2) priority=101 приориет роутера. Мастер или Слейв. Главный тот — у кого больше.
3) preemption-mode=yes если этот режим выключен: после того, как слейв станет мастером, он им и останется, даже когда мастер вернется в строй.

VLAN локальной сети
/interface vlan
add arp=enabled disabled=no interface=vrrp-lan mtu=1500 name=vlan101 \
use-service-tag=no vlan-id=101
add arp=enabled disabled=no interface=vrrp-lan mtu=1500 name=vlan102 \
use-service-tag=no vlan-id=102
add arp=enabled disabled=no interface=vrrp-lan mtu=1500 name=vlan103 \
use-service-tag=no vlan-id=103

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

Настраиваем адресацию
/ip address
add address=192.168.101.1/24 disabled=no interface=vlan101 network=192.168.101.0
add address=192.168.102.1/24 disabled=no interface=vlan102 network=192.168.102.0
add address=192.168.103.1/24 disabled=no interface=vlan103 network=192.168.103.0

add address=10.1.1.2/29 disabled=no interface=lan network=10.1.1.0
add address=10.1.1.1/32 disabled=no interface=vrrp-lan network=10.1.1.1

add address=77.77.77.70/30 disabled=no interface=wan network=77.77.77.68

Виртуальные интерфейсы vrrp-lan на обеих маршрутизаторах будут иметь одинаковый адрес 10.1.1.1/32
А вот физические lan инетрфейсы будут иметь разные адреса (10.1.1.2 и 10.1.1.3) и также будут находится в одной подсети между собой и vrrp-интерфейсом.

Теперь достаточно добавить шлюз по умолчанию в таблицу маршрутизации и первичную настройку можно считать законченной.
/ip route
add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=77.77.77.69 scope=30 target-scope=10

Далее нужно настроить скрипты резервного копирования, проверки статуса Master/Slave и переноса конфигурации.

Проверка статуса роутера
:if ([/interface get vrrp running]=false) do={
:if ([/interface get wan disabled]=false) do={
/interface disable wan
}
}
:if ([/interface get vrrp running]=true) do={
:if ([/interface get wan disabled]=true) do={
/interface enable wan
}
}

Если vrrp running=false, тоесть роутер в режиме Slave — отключаем WAN. Если Master — то включаем. Также проверяем текущий статус интефейса WAN — включен он или выключен, чтобы лишний раз его не тревожить. Этот скрипт ставим выполняться в планировщик каждые 3-10 секунд.

Резервное копирование
:local mserver
:local mkomu
:local msubject
:local bjmeno
:set mkomu «root@server.ru»
:set msubject («Backup ». [/system identity get name])
:set bjmeno ([/system identity get name]. "-". [:pick [/system clock get date] 7 11]. [:pick [/system clock get date] 0 3]. [:pick [/system clock get date] 4 6]. ".backup" )
/system backup save name=$bjmeno
/system backup save name=lastconfig
:delay 5
:put ($mserver."\n")
/tool e-mail send subject=$msubject file=$bjmeno to=$mkomu body=(«Backup from ». [/system clock get date]. " mikrotik ". [/system identity get name]. ".")
:put («Backup ». $bjmeno. "\n")

Кроме отправки на почту (предварительно параметры отправки нужно настроить), скрипт будет создавать локальный файл с именем lastconfig.backup, который нам пригодится.

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

Далее идут 2 скрипта: перенос настроек и применение настроек на резервном сервере. Так как они должны выполняться только на резервном сервере, то роутеры нужно как-то различать. Я различаю по МАС-адресах интегрированных сетевых интерфейсов. Резервный имеет адрес FF:FF:40:40:40:41

Копирование и применение последней актуальной понфигурации
:local interA [/interface ethernet find mac-address=«FF:FF:40:40:40:41»]
:if ($interA != "") do={
/tool fetch address=10.1.1.2 src-path=lastconfig.backup mode=ftp user=ftp password=VeryHightPassword!!!11
:delay 10
system backup load name=lastconfig.backup
}

То есть забираем по FTP lastconfig.backup и восстанавливаемся с него. FTP пользователь должен быть настроен, желательно с ограничением доступа по IP. Обратите внимание, что к FTP подключаемся по IP-адресу локального физического интерфейса, который доступен только между роутерами.

Этот скрипт ставим в планировщик на несколько минут позже выполнения скрипта резервного копирования.

И последний скрипт — применение настроек на резервном сервере. В нем также используется МАС для идентификации роутера.

:local intA [/interface ethernet find mac-address=«FF:FF:40:40:40:41»]
:if ($intA != "") do={
/system identity set name=router-slave
/ip address remove [/ip address find address=«10.1.1.2/29»]
/ip address add address=10.1.1.3/29 interface=lan
/interface vrrp set priority=100 preemption-mode=yes numbers=vrrp-lan
}

Здесь меняем имя роутера, ip-адрес LAN-интерфейса и приоритет VRRP на меньший, чтобы роутер сделать слейвом. Запуск этого скрипта нужно поставить в автозагрузку. Изменения будут происходить на резервном сервере после копирования и применения последней актуальной конфигурации.

Собственно, на этом все. Напомню, мы все манипуляции делали на роутере, который у нас будет мастером. Теперь сохраняем конфигурацию, переносим ее на слейв и применяем на нем. Это можно сделать любым способом, описанным здесь http://wiki.mikrotik.com/wiki/Manual:Configuration_Management#System_Backup

После применения конфигурации и перезагрузки, резервный маршрутизатор войдет в строй с нужными нам настройками.

Писалось по памяти, но в процессе настройки использовались разные источники. В основном wiki.mikrotik.com/wiki/Main_Page
@vavenko
карма
7,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Администрирование

Комментарии (7)

  • 0
    Прошу прощения, вопрос не по теме, а как вы реализовывали фейловер на микротиках, не зря же вы подводили несколько провайдеров.
    • 0
      Если вы имеете ввиду отказоустойчивость интернета, то там тоже все скриптами.
      Изначально 1 канал основной — для ВПН и прямых соединений, второй для прокси. Если ложится второй — прокси переключается на первый. Если лежит первый — все ходят через второй. Третий канал на подхвате, его слабо используем, так как это медленный ADSL
    • +1
      Использую вот этот вариант файловера.
      Работает замечательно.
  • 0
    Хмм.
    Правильно ли я понял, что «отказоустойчивость» внешнего интерфейса определяется тем, что он активен только у мастера, и в случае выхода мастера из строя поднимается на слейве (который перехватывает управление)?

    Интересно, как реализована балансировка на VRRP. Я всегда думал, что из трёх основных протоколов доступности первого хопа (HSRP, VRRP, GLBP) балансировку поддерживает только последний.

    Принцип его в том, что маршрутизаторы имеют приоритет: Master и Slave и через некоторый интервал времени проверяют доступность друг друга.

    Если мне не изменяет память, не совсем так. Мастер шпарит своими Hello-пакетами, а слейв пассивен. Мастер о нём ничего не знает и знать не хочет. Слейв становится активен только если мастер перестаёт слать свои пакеты.

    Offtop: не рассматривали операционку Vyatta для решения этой задачи?
    • 0
      «как реализована балансировка на VRRP»
      Обычно разными приоритетами для разных VLANов, либо несколькими VIP для одного VLANа (и у части клиентов указывается другой первый хоп).

      «HSRP, VRRP, GLBP»
      Первый и третий проприетарны, есть только на цисках.
  • –1
    Живу сейчас в отеле в котором стоит эта кака. Из того что доставляет:
    1) торренты зарезаны насмерть, ни байта не проходит, в первый раз вижу такое, но есть хак — если начать качать торрент через тедеринг на мобиле и потом переконнектится на вифи отеля — примерно половина сидов продолжат работать. Такое впечатление что он их фаирволит прямо по ответу от трекера.
    2) VPN работает 5 минут, после чего айпи сервера банится на сутки. О_о
    3) регулярно пропадает DNS, интернет есть, пинги есть, скайп есть. Да еще есть http по ip адресам. Но ни один dns пакет не пролетает.

    все это серьезно задолбало. :)
    • 0
      Не понятно к чему Вы, видимо праздники «доставляют». ))

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.