Недавно брал на тест оборудование UserGate. Хороший межсетевой экран, но меня больше интересовала сетевая часть, а именно:
- работа интерфейсов в режиме агрегации;
- работа с тегированными фреймами (vlan);
- взаимодействие с роутерами mikrotik в построении туннелей GRE защищённых IPSec-ом в схеме с несколькими провайдерами с обоих сторон;
- взаимодействие с роутерами mikrotik по протоколу OSPF.
Забегая вперёд, скажу что все вышеперечисленные задачи по сетевой части были успешно отлажены и всё заработало как часы, но с некоторыми серьёзными оговорками, которыми поделюсь ниже. В этом материале затронем только настройку IPSec, GRE и OSPF, настройку vlan-ов и агрегации на mikrotik я объяснял в этой статье, а настройка vlan-ов и агрегации на UserGate мне показалась настолько примитивной, что решил на объяснения время не тратить, т.к. статья не об этом.
У самих usergate нет материала по настройке взаимодействия между mikrotik и usergate по протоколам IPSec и GRE (в их базе знаний есть материал только по настройке взаимодействия через L2TP), есть только статья про настройку туннелей с cisco, но без некоторых важных нюансов, я её переработал для Mikrotik и дополнил разбором важных нюансов.
Здесь не будет детального разбора, как работает тот или иной протокол, покажу только как всё это настраивается.
Схема тестового стенда у нас такая:
Здесь эмулируется работа двух провайдеров, поэтому туннелей мы будем строить два, с учётом туннелей, схема будет выглядеть так:
Туннели можно делать и "перекрёстно", т.е. между интерфейсом на провайдера 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 интерфейсах и на требуемых локальных интерфейсах.
Соответственно логическая схема сети у нас будет такая:
Серым выделены - внутренние и провайдерские сети;
Зелёным - логические подсети, формирующие 2 GRE туннеля с IPSec;
Оранжевым - две подсети пустышки, требующиеся для сборки IPSec на стороне UserGate.
Таким образом, чтобы создать два GRE туннеля, нам придётся создать дополнительно восемь подсетей на наших устройствах.
IP план для такой сети будет выглядеть как то так:
Настройка первого 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".
Зададим IP адрес на интерфейсе "loopback1", в соответствии с нашим IP планом (172.16.3.1/24), переходим в меню "IP=>Addresses" и в окне "Address List" нажимаем кнопку "+", затем в появившемся окне "New Address", в поле "Address" вписываем нужный IP адрес с маской в виде префикса (172.16.3.1/24), в поле "Interface" выберем созданный бридж-интерфейс "loopback1", и нажимаем "OK".
Переходим в меню "IP=>IPSec"
В меню IPSec создадим профиль, в котором перечислим алгоритмы шифрования и хэширования для первой фазы (на обоих устройствах выбранные алгоритмы должны совпадать), на вкладке "Profiles" нажимаем "+":
- в поле "Name" укажем имя профиля;
- в поле "Hash Algorithms", выберем алгоритм хеширования (sha256);
- в секции "Encryption Algorithms", выберем алгоритмы шифрования, можно выбрать несколько (мой выбор aes-256);
- в секции "DH Group", выберем группу Диффи-Хелмана, можно выбрать несколько (мой выбор modp2048);
- удаляем галку в чек-боксе "NAT Traversal";
- все остальные параметры оставляем оставляем в значениях по умолчанию.
Зададим настройки для первой фазы 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" галку оставляем.
Настроим метод аутентификации для первой фазы (будем использовать самую простую аутентификацию по pre-shared-key), в меню "IPSec" переходим на вкладку "Identities", и нажимаем "+":
- в поле "Peer" выберем созданный ранее пир для первого туннеля;
- в поле "Auth. Metod" выбетем тип метода аутентификации "pre shared key", причём при выборе этого метода, система выдаст крашным шрифтом сообщение, что данный метод не является безопасным, т.к. во первых ключ м.б. простым, а во вторых существует проблема передачи ключа на второй маршрутизатор;
- в поле "Secret" указываем наш ключ (в тестовой среде, для первого туннеля я ставлю ключ "123456").
Создадим профиль с алгоритмами шифрования для второй фазы IPSec, в меню "IPSec" перейдём на вкладку "Proposals", и нажмём "+":
- в поле "Name" прописываем имя профиля;
- в секции "Auth. Algorithms" выбираем алгоритм хэширования (мой выбор sha256);
- в секции "Encr. Algorithms" выберем алгоритм шифрования (я выбираю "aes-256 cbc")
- значение в поле "Lifetime" оставляем по умолчанию;
- в поле "PFS Group" ставим значение "none" (я не использую Диффи-Хелмана на второй фазе).
Создадим политику для второй фазы IPSec, в меню "IPSec" переходим на вкладку "Policies" и нажимаем "+":
В появившемся меню, на вкладке "General" заполним следующие поля:
- "Peer" тут нужно выбрать созданный ранее peer для первой фазы;
- в чек-боксе "Tunnel" ставим галку, т.к. настраиваем тунельный режим;
- "Src Address" - тут указываем нашу внутреннюю подсеть на лупбэк интерфейсе loopback1 (172.16.3.0/24);
- "Dst Address" - тут укажем внутреннюю подсеть на лупбэк интерфейсе UserGate (tunnel1, 172.16.1.0/24);
На вкладке "Action", оставляем всё по умолчанию, кроме поля "Proposal", тут мы выбираем созданный ранее профиль шифрования для второй фазы, и нажимаем "OK".
Кратко, про туннельный режим IPSec - когда у нас трафик из локальной подсети на роутере Mikrotik (172.16.3.0/24) должен пойти в сеть UserGate (172.16.1.0/24), то микрот определит, что данный трафик должен быть зашифрован и передан в туннеле IPSec на UserGate, соответственно пакеты вместе с заголовками, содержащими внутренние адреса, составляющие этот трафик, инкапсулируются в пакеты IPSec, где в заголовке будут уже внешние адреса роутеров, а придя на UserGate, эти пакеты декапсулируются, расшифровываются и отправляются по адресу назначения в локальной сети UserGate.
После того, как политика создана, можно посмотреть её статус на той же вкладке "Policies"
у нас на стороне 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.
Но нужно это правило поставить перед правилами srcNAT
На этом настройка IPSec туннеля на mikrotik закончена, но в нашей топологии микрот выступает как сервер, который ожидает подключения к нему клиента usergate, и если на микроте у нас нормально закрытый брандмауер, то нужно открыть порты UDP 500 и 4500 для IKEv1 и разрешить протокол esp (IPSec) в цепочке input. Для этого, переходим в меню "IP=>Firewall" и создаём 2 правила:
Эти правила следует переместить выше правил drop all.
Настройка первого IPSec туннеля на стороне usergate (актуально для версии 7.1).
Для начала сделаем базовые настройки устройства, я их покажу в виде скриншотов
Настройка сетевых адаптеров (настраиваются они в меню "Настройки=>Сеть=>Интерфейсы").
Тут всё согласно схеме, отличия только в интерфейсах port0 и VLAN bond1.210, которые я использую для управления. Интерфейсы для внутренних подсетей принадлежат зоне "Trusted", интерфейсы смотрящие в провайдерские сети, принадлежат зоне "Untrusted".
Настройка шлюзов. Делается в той же секции, в меню "Шлюзы"
Для зон "Trusted" и "VPN for Site-to-Site", д.б. разрешён ICMP и служебный трафик OSPF. Настроить это можно в меню "Настройки=>Сеть=>Зоны" и в свойствах нужной зоны, на вкладке "Контроль доступа", нужно поставить галки в чек-боксах "ping"и "OSPF".
В межсетевом экране всего три правила, два разрешают из зоны "Trusted" все подключения в зоны "Untrusted" и "VPN for Site-to-Site", и нижнее правило, это стандартный Drop All.
Создадим в качестве loopback интерфейса VPN-интерфейс с названием "tunnel1", перейдем в меню "Настройки=>Сеть=>Интерфейсы", нажмём кнопку "Добавить", и выберем пункт "Добавить VPN"
В появившемся меню, на вкладке "Общие":
- ставим чек-бокс "включено";
- в поле название ставим "1" (имя интерфейса задать нельза, можно выбрать только номер);
- в поле "Зона" выбираем "VPN for Site-to-Site".
На вкладке "Сеть", выбираем режим "Статический", после чего станет активно подменю "IP Интерфейса"
В подменю "IP Интерфейса", нажимаем кнопку "Добавить", и попадаем в меню задания IP адреса на интерфейсе (зададим адрес в соответствии с IP планом - 172.16.1.253)
Аналогично создадим loopback адрес, который будет использоваться для формирования туннеля IPSec (интерфейс - tunnel3, адрес - 10.10.10.253).
Настроим профили для IPSec (для обоих фаз профиль будет один), переходим в меню "Настройки=>VPN=>Клиентские профили безопасности VPN", и нажимаем кнопку "Добавить".
В меню настройки профиля IPSec, на вкладке "Общие", задаём следующие параметры:
- Название профиля;
- протокол (IPSec - это с использованием IKEv1);
- Общий ключ (должен совпадать с pre-shared ключом, который мы задавали на микроте);
- Подсети для VPN (тут указываем подсети, которые мы задавали на loopback интерфейсах, в качестве локально подсети, указываем подсеть 172.16.1.0/24 - это подсеть на интерфейсе tunnel1 на usergate, в качестве удалённой подсети укажем 172.16.3.0/24 - это подсеть на интерфейсе loopback1 на mikrotik).
На вкладке "Фаза1", указываем какие использовать алгоритмы шифрования на первой фазе IPSec, ставим такие же алгоритмы, какие мы указывали для mikrotik
На вкладке "Фаза2", указываем какие использовать алгоритмы шифрования на второй фазе IPSec, ставим такие же алгоритмы, какие мы указывали для mikrotik
Включаем IPSec на UserGate, переходим в меню "Настройки=>VPN=>Клиентские правила", и нажимаем кнопку "Добавить"
В открывшемся меню указываем следующее:
- ставим галку в чек-боксе "Включено";
- задаём название подключению;
- выбираем наш созданный ранее профиль безопасности VPN;
- в поле "Интерфейс" надо указать рандомный туннельный интерфейс, мы ранее для этой цели создали интерфейс tunnel3 (нафиг он нужен непонятно, но без него не заведётся);
- в поле "Адрес сервера" укажем адрес mikrotik (тут указывается только удалённый адрес, локального здесь нет, и это нам подкинет проблем, если у нас множество провайдеров, и мы хотим сделать полную связность между роутерами).
Если всё сделано правильно, то туннель соберётся.
На стороне mikrotik проверить это можно в меню "IP=>IPSec", на вкладке "Policies" в столбце "PH2 State" будет "established".
На стороне UserGate в меню "Настройки=>VPN=>Клиентские правила", мы увидим созданное правило, у которого будет состояние отмемчено зелёным кружком.
Для собранного IPSec туннеля, с обеих сторон создадим GRE туннели и назначим IP адреса на gre интерфейсы.
На mikrotik заходим в меню "Interfaces", переходим на вкладку "GRE Tunnel" и нажимаем "+"
В меню создания интерфейса
- задаём имя интерфейса;
- выставляем 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;
Зададим IP адрес на интерфейсе gre-tunnel1 в mikrotik, в соответствии с IP планом
На usergate, в меню "Настройки=>Сеть=>Интерфейсы" нажимаем "Добавить", и выбираем пункт "Добавить туннель"
В появившемся меню, на вкладке "Общие":
- ставим чек-бокс "включено";
- в поле название ставим "1" (имя интерфейса задать нельзя, можно выбрать только номер);
- в поле "Зона" выбираем "VPN for Site-to-Site".
На вкладке "Сеть"
- выставляем MTU;
- указываем локальный адрес usergate, с которого будет строится туннель, тут мы ставим адрес нашего loopback интерфейса tunnel1 - 172.16.1.253;
- указываем адрес удалённого устройства mikrotik, с которым будет строится туннель, тут мы ставим адрес loopback интерфейса loopback1 на usergate - 172.16.3.1;
- в поле "Режим" оставляем "GRE" (можно ещё собрать IPIP туннель);
- добавляем IP адрес интерфейсу, в соответствии с IP планом (кнопка "Добавить").
Т.к. на usergate интерфейс GRE находится в зоне "VPN for Site-to-Site", для которой разрешены пинги, то с микрота пингануть usergate по внутреннему адресу GRE мы сможем без доп настроек
Для проверки связности со стороны usergate, мы должны разрешить протокол icmp в цепочке input приходящий с usergate
Надо поставить это правило перед правилом Drop All.
Тогда с usergate м.б. пингануть mikrotik
Заходим в меню "Диагностика и мониторинг=>Сеть=>Ping"
- в поле "Ping host" укажем адрес gre интерфеса mikrotik;
- в поле "Интерфейс" выберем gre интерфейс usergate.
После нажатия кнопки "Старт", пойдут пинги
Настроим OSPF на mikrotik.
Переходим в меню "Routing=>OSPF"
На микроте будем использовать дефолтные instance и area0.
Зададим routerID, переходим на вкладку "Instances" и открываем инстанс с названием "default". В поле "Router ID" задаём нужное значение, это д.б. 32-х битное число, формат записи которого аналогичен IP адресу, у нашего микрота routerID будет 0.0.0.1. Все остальные значения оставляем без изменений.
Задаём подсети, в которых будет работать OSPF, переходим на вкладку "Networks", нажимаем "+" и задаём значение сети, в поле "Area" оставляем значение "backbone", это по сути area0 c дефолтными настройками.
Нам нужно задать три локальные подсети и подсеть gre, финальный результат будет таким
После того, как подсети заданы, на вкладке "Interfaces" появятся интерфейсы, на которых включится OSPF (они появятся динамически). Нужно настроить эти интерфейсы, делается это следующим образом:
- мы заходим в нужный интерфейс;
- нажимаем кнопку "Copy";
- открывается новое меню, связанное с этим же интерфейсом, но где мы можем изменять настройки;
- после смены настроек в новом меню, нажимаем кнопку "ОК";
- динамический интерфейс пропадает, на его месте появляется статический интерфейс с нашими настройками.
Настроим таким образом наши интерфейсы, те, которые смотрят в локальные сети, должны работать в пассивном режиме, т.е. не рассылать hello пакеты, но информация об этих сетях должна передаваться через OSPF, для этого достаточно всего лишь включить чек-бокс "Passive".
После настройки всех локальных интерфейсов в качестве пассивных, у них сменится статус на "P"
Через интерфейс gre наш роутер будет общаться с соседом, передавать информацию о маршрутах и получать её, я обычно такие интерфейсы настраиваю так:
- в поле "Cost" устанавливаем стоимость интерфейса (через это формируетм оптимальный нам маршрут);
- в поле "Authentication" можно включить аутентификацию (выберем MD5);
- в поле "Authentication Key" указывается ключ аутентификации (в для этого интерфейса это будет qwerty1);
- в поле "Network Type" надо выбрать тип сети, в нашем случае это brоadcast;
- в нижней секции можно настроить всякие интервалы, и поиграться с временем сходимости сети, на скриншоте укажу, какие обычно выставляю я.
Все эти параметры, должны быть одинаковыми на соседних интерфейсах, иначе OSPF не согласуется.
На микроте OSPF настроен, но если у нас нормально закрытый фильтр, то нам потребуется открыть доступ OSPF трафику с usergate
Делаем такое правило в фильтре
И ставим его перед правилом Drop All
Настроим OSPF на usergate
Перейдём в меню "Настройки=>Сеть=>Виртуальные маршрутизаторы" и заходим в "Виртуальный маршрутизатор по умолчанию"
В появившемся меню, нажимаем на пункт "Настройки" и в выпадающем меню выбираем "OSPF"
На вкладке "OSPF-маршрутизатор" активируем OSPF поставив галку в чек-боксе "Включено" и зададим routerID в поле "Идентификатор маршрутизатора" (поставим 0.0.0.2)
На вкладке "Интерфейсы", добавим интерфейсы, на которых должен работать OSPF, меню там практически аналогично микротиковскому.
Пассивные интерфейсы добавляются так:
На вкладке "Общие"
- ставим галку в чек-боксе "Включено";
- в поле "Интерфейс" выбираем интерфейс локальной сети;
- ставим галку в чек-боксе "Пассивный режим".
Для gre интерфейса, настройки делаем аналогичные как и на mikrotik
Все интервалы, стоимость и тип сети должны совпадать
Не забываем включить аутентификацию и задать ключ, делается это на вкладке "Аутентификация"
- ставим галку в чек-боксе "Включено";
- тип выбираем "Digest" (это как раз MD5);
- задаём такой же ключ, как у соседа.
На вкладке "Области" создадим область area0, нажав кнопку "Добавить".
На вкладке "Общие"
- поставим галку в чек-боксе "Включено";
- зададим имя области;
- поставим идентификатор области.
На вкладке "Интерфейсы", установим галки в чек-боксах интерфесов, на которых должен работать OSPF.
Если всё настроено правильно, то usergate и mikrotik увидят друг друга как соседи по OSPF через gre туннель, и построят маршруты
В mikrotik можно увидеть соседей в меню OSPF на вкладке "Neighbors"
Сами маршруты можно увидеть в таблице маршрутизации ("IP=>Routes")
В UserGate эту же информацию можно увидеть в меню "Диагностика и мониторинг=>Мониторинг=>OSPF"
В поле "конфигурация" можно выбрать пункт "neighbor" и увидеть соседей
А если выбрать пункт "route", увидим маршруты, пришедшие через OSPF
Аналогично настроим второй туннель c OSPF, между mikrotik и usergate.
Данный туннель будет использоваться в качестве резервного, если в случае аварии у первого провайдера, и падения первого туннеля, все маршруты переключились бы на второй туннель (OSPF переключает практически мгновенно).
Настройка на mikrotik
создаём второй loopback интерфейс (loopback2) и назначаем на нём адрес
Настроим IPSec Peer для второй фазы (профиль шифрования будем использовать ранее созданный)
Зададим в Identities pre-ssared-key для второго туннеля IPSec (я поставлю 654321)
Создадим политику IPSec для второго туннеля, в качестве локальных и удалённых подсетей, трафик между которыми будет шифроваться, поставим подсети на loobback интерфейсах, через которые будем настраивать второй туннель
профиль шифрования используем ранее созданный.
Создадим GRE интерфейс для второго туннеля на mikrotik, используя адреса loopback для второго туннеля.
Назначим адрес второму туннельному интерфейсу, в соответствии с нашим IP планом.
Разрешим входящий ICMP и OSPF трафик на втором туннельном интерфейсе
Не забываем поднять эти правила выше Drop All
Добавим подсеть второго туннеля в OSPF
Настроим интерфейс второго туннеля в OSPF:
- стоимость ставим 25, т.к. это резервный туннель;
- задаём ещё один ключ аутентификации MD5 (вообще для каждого соединения OSPF нужно прописывать отдельный ключ);
- тип сети ставим broadcast
Настройка на UserGate
Создадим loopback VPN-интерфейс "tunnel2" и зададим ему адрес
Создадим loopback адрес, который будет использоваться для формирования туннеля IPSec (интерфейс - tunnel4, адрес - 10.10.11.253).
Настроим профиль IPSec для второго туннеля (переходим в меню "Настройки=>VPN=>Клиентские профили безопасности VPN", и нажимаем кнопку "Добавить").
В секции " Подсети для VPN" ставим сети на loopback интерфейсах, дял второго туннеля.
Настройки профилей шифрования для фазы 1 и фазы 2 аналогичны настройкам первого профиля
Включаем IPSec на UserGate для второго туннеля:
- прописываем адрес второго провайдера;
- выбираем профиль для второго туннеля;
- выбираем интерфейс tunnel4.
Видим, что туннель поднялся
Создадим интерфейс GRE второго туннеля, и назначим ему адрес
добавим интерфейс gre2 в OSPF
Заходим в свойства области, и добавляем интерфейс в неё
После настройки OSPF на втором туннеле, роутеры будут видеть соседа через оба gre интерфейса
На микроте это можно увидеть в меню настройки OSPF на вкладке neighbors
На usergate, в меню "Диагностика и мониторинг=>Мониторинг=>OSPF", конфигурация = neighbor
Собственно теперь можно отключить интерфейсы на смотрящие на первого провайдера и сеть пересоберётся через второй туннель.
Отключим на микроте интерфейс gre-tunnel1, маршруты сразу переключатся на второй туннель
Я хотел в финале показать, что для межсетевого взаимодействия, нужно на обоих маршрутизаторах создать соответствующие правила, но упёрся в ограничение дзена в 100 загружаемых картинок на статью. Ниже скрин с микрота, аналогичные правила надо сделать и на usergate.