Найти в Дзене
knowledge base

Настройка GRE, IPSec и OSPF между UserGate и Mikrotik.

Недавно брал на тест оборудование UserGate. Хороший межсетевой экран, но меня больше интересовала сетевая часть, а именно: Забегая вперёд, скажу что все вышеперечисленные задачи по сетевой части были успешно отлажены и всё заработало как часы, но с некоторыми серьёзными оговорками, которыми поделюсь ниже. В этом материале затронем только настройку IPSec, GRE и OSPF, настройку vlan-ов и агрегации на mikrotik я объяснял в этой статье, а настройка vlan-ов и агрегации на UserGate мне показалась настолько примитивной, что решил на объяснения время не тратить, т.к. статья не об этом. У самих usergate нет материала по настройке взаимодействия между mikrotik и usergate по протоколам IPSec и GRE (в их базе знаний есть материал только по настройке взаимодействия через L2TP), есть только статья про настройку туннелей с cisco, но без некоторых важных нюансов, я её переработал для Mikrotik и дополнил разбором важных нюансов. Здесь не будет детального разбора, как работает тот или иной протокол, по
Оглавление

Недавно брал на тест оборудование UserGate. Хороший межсетевой экран, но меня больше интересовала сетевая часть, а именно:

  • работа интерфейсов в режиме агрегации;
  • работа с тегированными фреймами (vlan);
  • взаимодействие с роутерами mikrotik в построении туннелей GRE защищённых IPSec-ом в схеме с несколькими провайдерами с обоих сторон;
  • взаимодействие с роутерами mikrotik по протоколу OSPF.

Забегая вперёд, скажу что все вышеперечисленные задачи по сетевой части были успешно отлажены и всё заработало как часы, но с некоторыми серьёзными оговорками, которыми поделюсь ниже. В этом материале затронем только настройку IPSec, GRE и OSPF, настройку vlan-ов и агрегации на mikrotik я объяснял в этой статье, а настройка vlan-ов и агрегации на UserGate мне показалась настолько примитивной, что решил на объяснения время не тратить, т.к. статья не об этом.

У самих usergate нет материала по настройке взаимодействия между mikrotik и usergate по протоколам IPSec и GRE (в их базе знаний есть материал только по настройке взаимодействия через L2TP), есть только статья про настройку туннелей с cisco, но без некоторых важных нюансов, я её переработал для Mikrotik и дополнил разбором важных нюансов.

Здесь не будет детального разбора, как работает тот или иной протокол, покажу только как всё это настраивается.

Схема тестового стенда у нас такая:

Здесь эмулируется работа двух провайдеров, поэтому туннелей мы будем строить два, с учётом туннелей, схема будет выглядеть так:

-2

Туннели можно делать и "перекрёстно", т.е. между интерфейсом на провайдера 1 у шлюза UserGate и интерфейсом на провайдера 2 у шлюза Mikrotik, но полную связность сделать не получится (четыре туннеля), точнее работать все четыре туннеля будут, и даже на микроте в статусе IPSec подключений будет всё ок, а в логах будет настоящий ад (куча сообщений, что туннели не согласованы), на UserGate туннели будут показывать нерабочий статус, но при этом всё будет работать. Я в процессе настройки покажу, почему оборудование UserGate даёт такой эффект, при настройке полносвязных туннелей.

Как выяснилось, оборудование UserGate не умеет строить туннели IPsec в транспортном режиме, и для нас доступен только туннельный вариант работы IPSec, поэтому логика построения туннелей GRE защищённых через IPSec такая:

  • на Mikrotik и UserGate, для каждого туннеля IPSec создаём по loopback интерфейсу (у Mikrotik это bridge интерфейс, у UserGate это VPN интерфейс);
  • для созданных loopback интерфейсов выделяем IP подсети (для каждого интерфейса д.б. своя уникальная подсеть), и назначаем каждому loopback интерфейсу IP адрес в соответствии с выделенной IP подсетью для интерфейса;
  • настраиваем IPSec туннельном режиме для UserGate и Mikrotik между подсетями на loopback интерфейсах (в процессе настройки, на UserGate создадим дополнительно по VPN интерфейсу-пустышке, и назначим каждому IP адрес, без этого IPSec со стороны UserGate не соберётся);
  • между loopback интерфейсами, для которых настроен и работает IPSec строим туннели GRE;
  • назначаем IP адреса GRE интерфейсам (я хотел назначить по привычке адреса с маской /32, но не разобрался как их правильно указывать в UserGate, поэтому выбрал для GRE туннелей подсеть /30, и GRE интерфейсы в рамках одного туннеля будут находится в одном броадкаст домене, соответственно и тип подключения в настройках OSPF надо будет выбирать broadcast).
  • включаем и настраиваем OSPF на GRE интерфейсах и на требуемых локальных интерфейсах.

Соответственно логическая схема сети у нас будет такая:

-3

Серым выделены - внутренние и провайдерские сети;

Зелёным - логические подсети, формирующие 2 GRE туннеля с IPSec;

Оранжевым - две подсети пустышки, требующиеся для сборки IPSec на стороне UserGate.

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

IP план для такой сети будет выглядеть как то так:

-4

Настройка первого IPSec туннеля на стороне mikrotik.

Перед непосредственно настройкой IPSec, на маршрутизаторе mikrotik нужно сделать базовые настройки устройства и фильтра (в рамках лабораторного стенда я не стал отключать MNDP), задать на всех интерфейсах IP адреса, в рамках IP плана. В тестовой сети настроен DUALWAN, чтобы показать как работать с двумя туннелями и сделать отказоустойчивость, тема DUALWAN выходит за рамки данной статьи тут я просто выложу конфиг mikrotik с базовыми настройками и DUALWAN-ом (на стенде эмулируется ситуация, когда оба провайдера дают одинаковую скорость, и соотношение скорости каналов будет 50 на 50). Для отладки, я включил логирование для ipsec, gre и ospf, на интерфейсах внутренних сетей включен dhcp, для внутренних сетей настроен srcNAT через DUALWAN, фильтр в режиме нормально закрытого экрана (для своего удобства, я разрешил доступ себе из "провайдерских сетей" стенда).

Собственно сам конфиг:

/interface bridge

add frame-types=admit-only-vlan-tagged ingress-filtering=yes name=bridge1 vlan-filtering=yes

/interface vlan

add interface=bridge1 name=vlan400 vlan-id=400

add interface=bridge1 name=vlan410 vlan-id=410

add interface=bridge1 name=vlan420 vlan-id=420

/interface list

add name=LAN_NAT_Interfaces

add name=WAN

/ip pool

add name=dhcp_pool0 ranges=192.168.140.2-192.168.140.254

add name=dhcp_pool1 ranges=192.168.141.2-192.168.141.254

add name=dhcp_pool2 ranges=192.168.142.2-192.168.142.254

/ip dhcp-server

add address-pool=dhcp_pool0 disabled=no interface=vlan400 name=dhcp1

add address-pool=dhcp_pool1 disabled=no interface=vlan410 name=dhcp2

add address-pool=dhcp_pool2 disabled=no interface=vlan420 name=dhcp3

/interface bridge port

add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether2 pvid=400

add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether3 pvid=410

add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether4 pvid=420

/interface bridge vlan

add bridge=bridge1 tagged=bridge1 untagged=ether2 vlan-ids=400

add bridge=bridge1 tagged=bridge1 untagged=ether3 vlan-ids=410

add bridge=bridge1 tagged=bridge1 untagged=ether4 vlan-ids=420

/interface list member

add interface=vlan400 list=LAN_NAT_Interfaces

add interface=vlan410 list=LAN_NAT_Interfaces

add interface=vlan420 list=LAN_NAT_Interfaces

add interface=ether1 list=WAN

add interface=ether5 list=WAN

/ip address

add address=192.168.140.1/24 interface=vlan400 network=192.168.140.0

add address=192.168.141.1/24 interface=vlan410 network=192.168.141.0

add address=192.168.142.1/24 interface=vlan420 network=192.168.142.0

add address=192.168.81.152/24 interface=ether1 network=192.168.81.0

add address=192.168.88.152/24 interface=ether5 network=192.168.88.0

/ip dhcp-server network

add address=192.168.140.0/24 gateway=192.168.140.1

add address=192.168.141.0/24 gateway=192.168.141.1

add address=192.168.142.0/24 gateway=192.168.142.1

/ip dns

set allow-remote-requests=yes servers=77.88.8.8,8.8.8.8

/ip firewall address-list

add address=192.168.81.0/24 list=admin

add address=192.168.88.0/24 list=admin

add address=192.168.82.0/24 list=admin

add address=192.168.140.0/24 list=srcNAT

add address=192.168.141.0/24 list=srcNAT

add address=192.168.142.0/24 list=srcNAT

/ip firewall filter

add action=accept chain=forward comment="Statefull firewall" connection-state=established,related

add action=accept chain=input connection-state=established,related

add action=drop chain=forward comment="Drop invalid" connection-state=invalid

add action=drop chain=input connection-state=invalid

add action=accept chain=input comment=Admins dst-port=22,8291 protocol=tcp src-address-list=admin

add action=accept chain=input protocol=icmp src-address-list=admin

add action=accept chain=forward comment=srcNAT out-interface-list=WAN src-address-list=srcNAT

add action=drop chain=forward comment="Drop all"

add action=drop chain=input

/ip firewall mangle

add action=accept chain=prerouting dst-address=192.168.81.0/24 in-interface-list=LAN_NAT_Interfaces

add action=accept chain=prerouting dst-address=192.168.88.0/24 in-interface-list=LAN_NAT_Interfaces

add action=accept chain=prerouting dst-address=192.168.0.0/16 in-interface-list=LAN_NAT_Interfaces

add action=accept chain=prerouting dst-address=172.16.0.0/12 in-interface-list=LAN_NAT_Interfaces

add action=accept chain=prerouting dst-address=10.0.0.0/8 in-interface-list=LAN_NAT_Interfaces

add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ether1 new-connection-mark=net81 passthrough=yes

add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ether5 new-connection-mark=net88 passthrough=yes

add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface-list=LAN_NAT_Interfaces new-connection-mark=net81 passthrough=yes per-connection-classifier=both-addresses:2/0

add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface-list=LAN_NAT_Interfaces new-connection-mark=net88 passthrough=yes per-connection-classifier=both-addresses:2/1

add action=mark-routing chain=prerouting connection-mark=net81 in-interface-list=LAN_NAT_Interfaces new-routing-mark=net81-def-route passthrough=yes

add action=mark-routing chain=prerouting connection-mark=net88 in-interface-list=LAN_NAT_Interfaces new-routing-mark=net88-def-route passthrough=yes

add action=mark-routing chain=output connection-mark=net81 new-routing-mark=net81-def-route passthrough=yes

add action=mark-routing chain=output connection-mark=net88 new-routing-mark=net88-def-route passthrough=yes

/ip firewall nat

add action=masquerade chain=srcnat out-interface-list=WAN src-address-list=srcNAT

/ip route

add distance=1 gateway=192.168.81.1 routing-mark=net81-def-route

add distance=1 gateway=192.168.88.1 routing-mark=net88-def-route

add distance=1 gateway=192.168.81.1

add distance=2 gateway=192.168.88.1

/ip route rule

add action=lookup-only-in-table dst-address=10.0.0.0/8 table=main

add action=lookup-only-in-table dst-address=172.16.0.0/12 table=main

add action=lookup-only-in-table dst-address=192.168.0.0/16 table=main

add action=lookup-only-in-table dst-address=192.168.81.1/32 table=net81-def-route

add action=lookup-only-in-table dst-address=192.168.88.1/32 table=net88-def-route

/system clock

set time-zone-name=Europe/Moscow

/system identity

set name=LABS-hAPac2-GW1

/system logging

add disabled=yes topics=interface

add disabled=yes topics=ospf

add disabled=yes topics=ipsec

Создадим в качестве loopback интерфейса бридж-интерфейс с названием "loopback1", в меню "Bridge" на вкладке "Bridge" нажимаем кнопку "+", в появившемся окне, на вкладке "General", в поле "Name" меняем дефолтное имя интерфейса на "loopback1", и нажимаем кнопку "OK".

-5

Зададим IP адрес на интерфейсе "loopback1", в соответствии с нашим IP планом (172.16.3.1/24), переходим в меню "IP=>Addresses" и в окне "Address List" нажимаем кнопку "+", затем в появившемся окне "New Address", в поле "Address" вписываем нужный IP адрес с маской в виде префикса (172.16.3.1/24), в поле "Interface" выберем созданный бридж-интерфейс "loopback1", и нажимаем "OK".

-6

Переходим в меню "IP=>IPSec"

-7

В меню IPSec создадим профиль, в котором перечислим алгоритмы шифрования и хэширования для первой фазы (на обоих устройствах выбранные алгоритмы должны совпадать), на вкладке "Profiles" нажимаем "+":

  • в поле "Name" укажем имя профиля;
  • в поле "Hash Algorithms", выберем алгоритм хеширования (sha256);
  • в секции "Encryption Algorithms", выберем алгоритмы шифрования, можно выбрать несколько (мой выбор aes-256);
  • в секции "DH Group", выберем группу Диффи-Хелмана, можно выбрать несколько (мой выбор modp2048);
  • удаляем галку в чек-боксе "NAT Traversal";
  • все остальные параметры оставляем оставляем в значениях по умолчанию.
-8

Зададим настройки для первой фазы IPSec для первого туннеля, переходим на вкладку "Peers" и нажимаем "+":

  • в поле "Name" указываем имя пира;
  • в поле "Address" укажем адрес удалённого межсетевого экрана (UserGate), в нашем случае это 192.168.81.253;
  • в поле "Local Address" укажем локальный адрес нашего mikrotik, через который будет вестись взаимодействие с удалённым роутером в рамках этого туннеля (соответственно 192.168.81.152);
  • в поле "Profile" выбираем ранее созданный профиль с перечнем алгоритмов шифрования для первой фазы;
  • "Exchange mode" оставляем "main" - это указывает на то, что будет использоваться IKEv1 в main режиме;
  • в чек-боксе "Sent INITIAL_CONTACT" галку оставляем.
-9

Настроим метод аутентификации для первой фазы (будем использовать самую простую аутентификацию по pre-shared-key), в меню "IPSec" переходим на вкладку "Identities", и нажимаем "+":

  • в поле "Peer" выберем созданный ранее пир для первого туннеля;
  • в поле "Auth. Metod" выбетем тип метода аутентификации "pre shared key", причём при выборе этого метода, система выдаст крашным шрифтом сообщение, что данный метод не является безопасным, т.к. во первых ключ м.б. простым, а во вторых существует проблема передачи ключа на второй маршрутизатор;
  • в поле "Secret" указываем наш ключ (в тестовой среде, для первого туннеля я ставлю ключ "123456").
-10

Создадим профиль с алгоритмами шифрования для второй фазы IPSec, в меню "IPSec" перейдём на вкладку "Proposals", и нажмём "+":

  • в поле "Name" прописываем имя профиля;
  • в секции "Auth. Algorithms" выбираем алгоритм хэширования (мой выбор sha256);
  • в секции "Encr. Algorithms" выберем алгоритм шифрования (я выбираю "aes-256 cbc")
  • значение в поле "Lifetime" оставляем по умолчанию;
  • в поле "PFS Group" ставим значение "none" (я не использую Диффи-Хелмана на второй фазе).
-11

Создадим политику для второй фазы IPSec, в меню "IPSec" переходим на вкладку "Policies" и нажимаем "+":

В появившемся меню, на вкладке "General" заполним следующие поля:

  • "Peer" тут нужно выбрать созданный ранее peer для первой фазы;
  • в чек-боксе "Tunnel" ставим галку, т.к. настраиваем тунельный режим;
  • "Src Address" - тут указываем нашу внутреннюю подсеть на лупбэк интерфейсе loopback1 (172.16.3.0/24);
  • "Dst Address" - тут укажем внутреннюю подсеть на лупбэк интерфейсе UserGate (tunnel1, 172.16.1.0/24);
-12

На вкладке "Action", оставляем всё по умолчанию, кроме поля "Proposal", тут мы выбираем созданный ранее профиль шифрования для второй фазы, и нажимаем "OK".

-13

Кратко, про туннельный режим IPSec - когда у нас трафик из локальной подсети на роутере Mikrotik (172.16.3.0/24) должен пойти в сеть UserGate (172.16.1.0/24), то микрот определит, что данный трафик должен быть зашифрован и передан в туннеле IPSec на UserGate, соответственно пакеты вместе с заголовками, содержащими внутренние адреса, составляющие этот трафик, инкапсулируются в пакеты IPSec, где в заголовке будут уже внешние адреса роутеров, а придя на UserGate, эти пакеты декапсулируются, расшифровываются и отправляются по адресу назначения в локальной сети UserGate.

-14

После того, как политика создана, можно посмотреть её статус на той же вкладке "Policies"

-15

у нас на стороне UserGate настроек ещё нет, поэтому политика выдаёт статус, что не может согласовать вторую фазу, там и первая конечно не согласована.

После настроек политик IPSec, нам нужно исключить попадание трафика, который выходит из подсети 172.16.3.0/24 и должен пойти в подсеть 172.16.1.0/24, в srcNAT, сделать соответствующее правило можно в меню "IP=>Firewall" на вкладке "NAT". Чтобы создать правило нажимаем "+":

На вкладке "General":

  • выбираем цепочку "srcnat";
  • в поле "Src Address" укажем адрес локальной сети 172.16.3.0/24;
  • в поле "Dst Address" укажем адрес удалённой сети 172.16.1.0/24.

На вкладке "Action", в поле "Action" выберем пункт "accept" - это действие, как ни странно оно звучит, не будет пускать трафик в srcNAT.

-16

Но нужно это правило поставить перед правилами srcNAT

Обычным drag&Drop
Обычным drag&Drop

На этом настройка IPSec туннеля на mikrotik закончена, но в нашей топологии микрот выступает как сервер, который ожидает подключения к нему клиента usergate, и если на микроте у нас нормально закрытый брандмауер, то нужно открыть порты UDP 500 и 4500 для IKEv1 и разрешить протокол esp (IPSec) в цепочке input. Для этого, переходим в меню "IP=>Firewall" и создаём 2 правила:

открываем UDP порты
открываем UDP порты
разрешаем протокол esp
разрешаем протокол esp

Эти правила следует переместить выше правил drop all.

-20

Настройка первого IPSec туннеля на стороне usergate (актуально для версии 7.1).

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

Настройка сетевых адаптеров (настраиваются они в меню "Настройки=>Сеть=>Интерфейсы").

Тут всё согласно схеме, отличия только в интерфейсах port0 и VLAN bond1.210, которые я использую для управления. Интерфейсы для внутренних подсетей принадлежат зоне "Trusted", интерфейсы смотрящие в провайдерские сети, принадлежат зоне "Untrusted".

-21

Настройка шлюзов. Делается в той же секции, в меню "Шлюзы"

-22

Для зон "Trusted" и "VPN for Site-to-Site", д.б. разрешён ICMP и служебный трафик OSPF. Настроить это можно в меню "Настройки=>Сеть=>Зоны" и в свойствах нужной зоны, на вкладке "Контроль доступа", нужно поставить галки в чек-боксах "ping"и "OSPF".

-23

В межсетевом экране всего три правила, два разрешают из зоны "Trusted" все подключения в зоны "Untrusted" и "VPN for Site-to-Site", и нижнее правило, это стандартный Drop All.

-24

Создадим в качестве loopback интерфейса VPN-интерфейс с названием "tunnel1", перейдем в меню "Настройки=>Сеть=>Интерфейсы", нажмём кнопку "Добавить", и выберем пункт "Добавить VPN"

-25

В появившемся меню, на вкладке "Общие":

  • ставим чек-бокс "включено";
  • в поле название ставим "1" (имя интерфейса задать нельза, можно выбрать только номер);
  • в поле "Зона" выбираем "VPN for Site-to-Site".
-26

На вкладке "Сеть", выбираем режим "Статический", после чего станет активно подменю "IP Интерфейса"

-27

В подменю "IP Интерфейса", нажимаем кнопку "Добавить", и попадаем в меню задания IP адреса на интерфейсе (зададим адрес в соответствии с IP планом - 172.16.1.253)

-28

Аналогично создадим loopback адрес, который будет использоваться для формирования туннеля IPSec (интерфейс - tunnel3, адрес - 10.10.10.253).

-29
-30

Настроим профили для IPSec (для обоих фаз профиль будет один), переходим в меню "Настройки=>VPN=>Клиентские профили безопасности VPN", и нажимаем кнопку "Добавить".

-31

В меню настройки профиля IPSec, на вкладке "Общие", задаём следующие параметры:

  • Название профиля;
  • протокол (IPSec - это с использованием IKEv1);
  • Общий ключ (должен совпадать с pre-shared ключом, который мы задавали на микроте);
  • Подсети для VPN (тут указываем подсети, которые мы задавали на loopback интерфейсах, в качестве локально подсети, указываем подсеть 172.16.1.0/24 - это подсеть на интерфейсе tunnel1 на usergate, в качестве удалённой подсети укажем 172.16.3.0/24 - это подсеть на интерфейсе loopback1 на mikrotik).
-32

На вкладке "Фаза1", указываем какие использовать алгоритмы шифрования на первой фазе IPSec, ставим такие же алгоритмы, какие мы указывали для mikrotik

-33

На вкладке "Фаза2", указываем какие использовать алгоритмы шифрования на второй фазе IPSec, ставим такие же алгоритмы, какие мы указывали для mikrotik

-34

Включаем IPSec на UserGate, переходим в меню "Настройки=>VPN=>Клиентские правила", и нажимаем кнопку "Добавить"

-35

В открывшемся меню указываем следующее:

  • ставим галку в чек-боксе "Включено";
  • задаём название подключению;
  • выбираем наш созданный ранее профиль безопасности VPN;
  • в поле "Интерфейс" надо указать рандомный туннельный интерфейс, мы ранее для этой цели создали интерфейс tunnel3 (нафиг он нужен непонятно, но без него не заведётся);
  • в поле "Адрес сервера" укажем адрес mikrotik (тут указывается только удалённый адрес, локального здесь нет, и это нам подкинет проблем, если у нас множество провайдеров, и мы хотим сделать полную связность между роутерами).
-36

Если всё сделано правильно, то туннель соберётся.

На стороне mikrotik проверить это можно в меню "IP=>IPSec", на вкладке "Policies" в столбце "PH2 State" будет "established".

-37

На стороне UserGate в меню "Настройки=>VPN=>Клиентские правила", мы увидим созданное правило, у которого будет состояние отмемчено зелёным кружком.

-38

Для собранного IPSec туннеля, с обеих сторон создадим GRE туннели и назначим IP адреса на gre интерфейсы.

На mikrotik заходим в меню "Interfaces", переходим на вкладку "GRE Tunnel" и нажимаем "+"

-39

В меню создания интерфейса

  • задаём имя интерфейса;
  • выставляем MTU 1400, в поле "MTU" (микрот умеет динамически подстраивать MTU, а т.к. у нас по мимо GRE существует ещё туннель IPSec, то актуальный MTU будет примерно 1414, но я немного занижаю значение, так вот у usergate значение MTU всегда фиксированное, и по дефолту равно 1500, поэтому лучше заранее определить удобную для себя величину, и руками задать на интерфейсах с обоих сторон);
  • указываем локальный адрес mikrotik, с которого будет строится туннель, тут мы ставим адрес нашего loopback интерфейса loopback1 - 172.16.3.1;
  • указываем адрес удалённого устройства usergate, с которым будет строится туннель, тут мы ставим адрес loopback интерфейса tunnel1 на usergate - 172.16.1.253;
  • поле "Keepalive" отключаем, нажав стрелку вверх;
  • убираем галку в чек-боксе "Allow Fast Path;
-40

Зададим IP адрес на интерфейсе gre-tunnel1 в mikrotik, в соответствии с IP планом

-41

На usergate, в меню "Настройки=>Сеть=>Интерфейсы" нажимаем "Добавить", и выбираем пункт "Добавить туннель"

-42

В появившемся меню, на вкладке "Общие":

  • ставим чек-бокс "включено";
  • в поле название ставим "1" (имя интерфейса задать нельзя, можно выбрать только номер);
  • в поле "Зона" выбираем "VPN for Site-to-Site".
-43

На вкладке "Сеть"

  • выставляем MTU;
  • указываем локальный адрес usergate, с которого будет строится туннель, тут мы ставим адрес нашего loopback интерфейса tunnel1 - 172.16.1.253;
  • указываем адрес удалённого устройства mikrotik, с которым будет строится туннель, тут мы ставим адрес loopback интерфейса loopback1 на usergate - 172.16.3.1;
  • в поле "Режим" оставляем "GRE" (можно ещё собрать IPIP туннель);
  • добавляем IP адрес интерфейсу, в соответствии с IP планом (кнопка "Добавить").
-44

Т.к. на usergate интерфейс GRE находится в зоне "VPN for Site-to-Site", для которой разрешены пинги, то с микрота пингануть usergate по внутреннему адресу GRE мы сможем без доп настроек

-45

Для проверки связности со стороны usergate, мы должны разрешить протокол icmp в цепочке input приходящий с usergate

-46

Надо поставить это правило перед правилом Drop All.

Тогда с usergate м.б. пингануть mikrotik

Заходим в меню "Диагностика и мониторинг=>Сеть=>Ping"

  • в поле "Ping host" укажем адрес gre интерфеса mikrotik;
  • в поле "Интерфейс" выберем gre интерфейс usergate.

После нажатия кнопки "Старт", пойдут пинги

-47

Настроим OSPF на mikrotik.

Переходим в меню "Routing=>OSPF"

-48

На микроте будем использовать дефолтные instance и area0.

Зададим routerID, переходим на вкладку "Instances" и открываем инстанс с названием "default". В поле "Router ID" задаём нужное значение, это д.б. 32-х битное число, формат записи которого аналогичен IP адресу, у нашего микрота routerID будет 0.0.0.1. Все остальные значения оставляем без изменений.

-49

Задаём подсети, в которых будет работать OSPF, переходим на вкладку "Networks", нажимаем "+" и задаём значение сети, в поле "Area" оставляем значение "backbone", это по сути area0 c дефолтными настройками.

-50

Нам нужно задать три локальные подсети и подсеть gre, финальный результат будет таким

-51

После того, как подсети заданы, на вкладке "Interfaces" появятся интерфейсы, на которых включится OSPF (они появятся динамически). Нужно настроить эти интерфейсы, делается это следующим образом:

  • мы заходим в нужный интерфейс;
  • нажимаем кнопку "Copy";
  • открывается новое меню, связанное с этим же интерфейсом, но где мы можем изменять настройки;
  • после смены настроек в новом меню, нажимаем кнопку "ОК";
  • динамический интерфейс пропадает, на его месте появляется статический интерфейс с нашими настройками.

Настроим таким образом наши интерфейсы, те, которые смотрят в локальные сети, должны работать в пассивном режиме, т.е. не рассылать hello пакеты, но информация об этих сетях должна передаваться через OSPF, для этого достаточно всего лишь включить чек-бокс "Passive".

-52

После настройки всех локальных интерфейсов в качестве пассивных, у них сменится статус на "P"

-53

Через интерфейс gre наш роутер будет общаться с соседом, передавать информацию о маршрутах и получать её, я обычно такие интерфейсы настраиваю так:

  • в поле "Cost" устанавливаем стоимость интерфейса (через это формируетм оптимальный нам маршрут);
  • в поле "Authentication" можно включить аутентификацию (выберем MD5);
  • в поле "Authentication Key" указывается ключ аутентификации (в для этого интерфейса это будет qwerty1);
  • в поле "Network Type" надо выбрать тип сети, в нашем случае это brоadcast;
  • в нижней секции можно настроить всякие интервалы, и поиграться с временем сходимости сети, на скриншоте укажу, какие обычно выставляю я.

Все эти параметры, должны быть одинаковыми на соседних интерфейсах, иначе OSPF не согласуется.

-54

На микроте OSPF настроен, но если у нас нормально закрытый фильтр, то нам потребуется открыть доступ OSPF трафику с usergate

Делаем такое правило в фильтре

-55

И ставим его перед правилом Drop All

Настроим OSPF на usergate

Перейдём в меню "Настройки=>Сеть=>Виртуальные маршрутизаторы" и заходим в "Виртуальный маршрутизатор по умолчанию"

-56

В появившемся меню, нажимаем на пункт "Настройки" и в выпадающем меню выбираем "OSPF"

-57

На вкладке "OSPF-маршрутизатор" активируем OSPF поставив галку в чек-боксе "Включено" и зададим routerID в поле "Идентификатор маршрутизатора" (поставим 0.0.0.2)

-58

На вкладке "Интерфейсы", добавим интерфейсы, на которых должен работать OSPF, меню там практически аналогично микротиковскому.

Пассивные интерфейсы добавляются так:

На вкладке "Общие"

  • ставим галку в чек-боксе "Включено";
  • в поле "Интерфейс" выбираем интерфейс локальной сети;
  • ставим галку в чек-боксе "Пассивный режим".
-59

Для gre интерфейса, настройки делаем аналогичные как и на mikrotik

-60

Все интервалы, стоимость и тип сети должны совпадать

Не забываем включить аутентификацию и задать ключ, делается это на вкладке "Аутентификация"

  • ставим галку в чек-боксе "Включено";
  • тип выбираем "Digest" (это как раз MD5);
  • задаём такой же ключ, как у соседа.
-61

На вкладке "Области" создадим область area0, нажав кнопку "Добавить".

На вкладке "Общие"

  • поставим галку в чек-боксе "Включено";
  • зададим имя области;
  • поставим идентификатор области.
-62

На вкладке "Интерфейсы", установим галки в чек-боксах интерфесов, на которых должен работать OSPF.

-63

Если всё настроено правильно, то usergate и mikrotik увидят друг друга как соседи по OSPF через gre туннель, и построят маршруты

В mikrotik можно увидеть соседей в меню OSPF на вкладке "Neighbors"

-64

Сами маршруты можно увидеть в таблице маршрутизации ("IP=>Routes")

-65

В UserGate эту же информацию можно увидеть в меню "Диагностика и мониторинг=>Мониторинг=>OSPF"

В поле "конфигурация" можно выбрать пункт "neighbor" и увидеть соседей

-66

А если выбрать пункт "route", увидим маршруты, пришедшие через OSPF

-67

Аналогично настроим второй туннель c OSPF, между mikrotik и usergate.

Данный туннель будет использоваться в качестве резервного, если в случае аварии у первого провайдера, и падения первого туннеля, все маршруты переключились бы на второй туннель (OSPF переключает практически мгновенно).

Настройка на mikrotik

создаём второй loopback интерфейс (loopback2) и назначаем на нём адрес

-68
-69

Настроим IPSec Peer для второй фазы (профиль шифрования будем использовать ранее созданный)

адреса ставим от второго провайдера.
адреса ставим от второго провайдера.

Зададим в Identities pre-ssared-key для второго туннеля IPSec (я поставлю 654321)

-71

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

-72
-73

профиль шифрования используем ранее созданный.

Создадим GRE интерфейс для второго туннеля на mikrotik, используя адреса loopback для второго туннеля.

не забываем руками указать MTU
не забываем руками указать MTU

Назначим адрес второму туннельному интерфейсу, в соответствии с нашим IP планом.

-75

Разрешим входящий ICMP и OSPF трафик на втором туннельном интерфейсе

-76
-77

Не забываем поднять эти правила выше Drop All

Добавим подсеть второго туннеля в OSPF

-78

Настроим интерфейс второго туннеля в OSPF:

  • стоимость ставим 25, т.к. это резервный туннель;
  • задаём ещё один ключ аутентификации MD5 (вообще для каждого соединения OSPF нужно прописывать отдельный ключ);
  • тип сети ставим broadcast
-79

Настройка на UserGate

Создадим loopback VPN-интерфейс "tunnel2" и зададим ему адрес

-80
-81

Создадим loopback адрес, который будет использоваться для формирования туннеля IPSec (интерфейс - tunnel4, адрес - 10.10.11.253).

-82
-83

Настроим профиль IPSec для второго туннеля (переходим в меню "Настройки=>VPN=>Клиентские профили безопасности VPN", и нажимаем кнопку "Добавить").

В секции " Подсети для VPN" ставим сети на loopback интерфейсах, дял второго туннеля.

-84

Настройки профилей шифрования для фазы 1 и фазы 2 аналогичны настройкам первого профиля

-85
-86

Включаем IPSec на UserGate для второго туннеля:

  • прописываем адрес второго провайдера;
  • выбираем профиль для второго туннеля;
  • выбираем интерфейс tunnel4.
-87

Видим, что туннель поднялся

на usergate
на usergate
на mikrotik
на mikrotik

Создадим интерфейс GRE второго туннеля, и назначим ему адрес

-90
-91

добавим интерфейс gre2 в OSPF

-92
-93

Заходим в свойства области, и добавляем интерфейс в неё

-94

После настройки OSPF на втором туннеле, роутеры будут видеть соседа через оба gre интерфейса

На микроте это можно увидеть в меню настройки OSPF на вкладке neighbors

-95

На usergate, в меню "Диагностика и мониторинг=>Мониторинг=>OSPF", конфигурация = neighbor

-96

Собственно теперь можно отключить интерфейсы на смотрящие на первого провайдера и сеть пересоберётся через второй туннель.

Отключим на микроте интерфейс gre-tunnel1, маршруты сразу переключатся на второй туннель

на микроте
на микроте

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

-98