У даній документації розглядається приклад робочої конфігурації з'єднання роутера CISCO з роутером Mikrotik через тунель GRE з IPSec шифруванням в транспортному режимі. У побудові IPsec буде використовуватися IKEv2 та аутентифікація за PSK. Усередині тунелю буде піднято протокол динамічної маршрутизації OSPF для обміну маршрутами про мережі, що знаходяться за peer-ами.
Обладнання та вихідні дані:
- Mikrotik hEX, RouterOS - 7.1beta5
- Cisco ISR 4331 – IOS 16.9.6
Припускаємо, що між маршрутизаторами вже є L3 зв'язаність.
Схема мережі
Конфігурація Mikrotik
Незважаючи на те, що mikrotik має свій власний CLI, ми будемо налаштовувати через GUI використовуючи “Winbox”. У додатку до документації буде додано CLI-конфіг mikrotik.
1. Створення GRE тунелю
Відкриваємо Winbox->interfaces -> GRE tunnel -> new
Обов'язково вказуємо ім'я та tunnel destination (Remote Address) GRE тунелю. Оскільки передбачається, що IP адреса на зовнішній інтерфейс Mikrotik буде виходити по DHCP, то в полі Local Address, ми або нічого не вказуємо або вводимо “0.0.0.0”
2. Призначення IP адреси на тунель GRE.
IP -> Address -> new
В даному меню вводимо IP адресу GRE тунелю обов'язково з маскою не нижче 31 (це потрібно для подальшої коректної роботи OSPF) і вибираємо GRE інтерфейс за ім'ям, якому хочемо призначити IP address (ім'я задається в пункті №1)
3. Переходимо безпосередньо до налаштування самого IPsec. Насамперед, потрібно створити IKEv2 профіль. Переходимо IP -> IPsec -> Profiles -> new. Тут вказуємо ім'я профілю, алгоритми хешування та шифрування, DH Group, Lifitime IKEv2 SA, параметри роботи DPD.
4. Створюємо новий IPsec Peer. Переходимо IP->IPsec->Peer->new. Даємо ім'я peer-у, вказуємо його IP address, у полі Local Address нічого не вказуємо або вказуємо «0.0.0.0», як налаштуваннях GRE інтерфейсу, оскільки IP адреса нашому Mikrotik видається по DHCP. Вибираємо профіль, створений у попередньому пункті та версію IKE.
5. Потрібно налаштувати аутентифікацію сертифікатів між peer-ами. Переходимо IP -> IPsec -> Identities -> new. Тут ми вибираємо peer, створений у попередньому пункті, вибираємо Auth. Method – pre-shared key та вводимо PSK у поле Secret. Всі інші налаштування можна переглянути на малюнку нижче.
6. Створюємо IPsec Proposal, даємо йому ім'я, вказуємо алгоритми шифрування та хешування, час життя IPsec SA. PFS Group у нашому випадку не використовується.
7. Тепер залишилося в налаштуваннях IPsec створити політику шифрування, в якій насамперед вказуємо який трафік шифрувати, у нашому випадку це GRE. Ідемо в IP -> IPsec -> Policies -> new -> General. Тут вибираємо знову Peer, створий в пункті №6, звертаємо увагу на те, щоб галочка поруч із Tunnel не стояла, тому що нам треба використовувати Transport mode. Якщо використовуються Transport mode, то Src і Dst Address не треба вказувати, вони підставляються автоматично при натисканні кнопки Apply. Якщо ми хочемо внести зміни в Src і Dst адреси, це треба робити в налаштуваннях Peer (пункт №6). Оскільки між peer-ами нам треба зашифрувати GRE трафік, то в полі “Protocol” вказуємо 47 – це номер протоколу GRE
Далі переходимо на вкладку Action. Тут перевіряємо, щоб у полі “Action” стояв “encrypt”, у “IPsec Protocols” вибираємо “esp” та поле “Proposal” вибираємо Proposal, створений у пункті №6.
Щоб переглянути статус тунелю на Mikrotik, потрібно перейти IP -> IPsec -> Active Peers. Якщо тунель успішно піднявся, State тунель повинен бути “Established” і лічильники Tx/Rx packets повинні зростати.
Але лічильники почнуть рости після того, як усередині тунелю піде трафік, а цього не буде, доки не будуть підняті з обох боків протоколи динамічної маршрутизації в нашому випадку OSPF. Налаштування OSPF розписані в наведених нижче пунктах.
8. Налаштування OSPF починається зі створення нового OSPF-Instance. Routing -> OSPF -> Instances -> new. Вводимо ім'я Instance, все інше вказуємо як на малюнку нижче.
9. Створюємо OSPF Area. Routing -> OSPF -> Areas -> new. Даємо їй ім'я, пов'язуємо її з нашим OSPF Instance, створеним у пункті №10, в нашому випадку ми використовуємо backbone area, тому Area ID у неї – 0.0.0.0.
10. Треба включити OSPF на інтерфейсах, насамперед на GRE. Routing -> OSPF -> Interface Templates -> new. Вибираємо інтерфейс, на якому включаємо OSPF, Area, створену в пункті № 9, вибираємо мережу, яка налаштована на інтерфейсі GRE. У пункті № 2 було описано, що мережа повинна бути обов'язково з маскою не нижче 31, якщо буде вказана маска 32, то OSPF сусідство з Cisco не підніметься. У "Network type" вибираємо "ptp unnumbered", оскільки на cisco тунель приземляється на virtual-template. Перевіряємо OSPF Hello Interval.
Якщо на протилежному боці все налаштовано, то має піднятися OSPF сусідство, і лічильники пакетів Tx/Rx повинні почати зростати (пункт №9). Перевірити ospf сусідство можна в Routing -> OSPF -> Neighbors, State має бути "Full".
Маршрути, що прийшли по OSPF, можна подивитися в IP-Routes. Маршрути, що прийшли OSPF, мають прапор Dao. У колонці Gateway вказаний інтерфейс, через який піде трафік у бік мережі.
На цьому конфігурація Mikrotik завершена, ще потрібно перевірити Firewall, щоб не був заблокований легітимний трафік.
У цьому прикладі, дозволено весь трафік. Налаштовується тут IP->Firewall->Filter rules.
І налаштований dynamic Pat. Налаштовується тут IP->Firewall->NAT.
Конфігурація CISCO
Маршрутизатор Cisco ISR 4331 ми будемо налаштовувати через CLI.
1. Нам треба переконатися, що у конфізі немає рядка crypto ikev2 fragmentation mtu <>
Якщо цей рядок присутній, його треба обов'язково прибрати. Cisco у 4 пакеті побудови IKEv2 посилає цей параметр як payload, але Mikrotik його не розуміє і не піднімає тунель.
2. Створюємо ikev2 proposal даємо йому ім'я PROP-1, вказуємо алгоритми шифрування та хешування, і diffie hellman group.
crypto ikev2 proposal PROP-1
encryption aes-cbc-256 // Алгоритм шифрування aes-cbc-256
integrity sha256 // Алгоритм хешування sha256
group 5 //diffie hellman group - 5
Зв'язуємо Ikev2 proposal з ikev2 policy.
crypto ikev2 policy IKEV2_POLICY
proposal PROP-1
3. Створюємо KEYRING, в якому прописуємо PSK, для віддалених peer-ів
crypto ikev2 keyring KEYRING
peer ALL
address 0.0.0.0 0.0.0.0 //цей Keyring підходить для всіх peer-ів
pre-shared-key local cisco123
pre-shared-key remote cisco123
4. Створюємо ikev2 profile.
crypto ikev2 profile VTI_PROFILE_MIKR
authentication remote pre-share // використовуємо аутентифікацію по PSK для віддаленого peer-у
authentication local pre-share // використовуємо аутентифікацію по PSK для локального peer-у
keyring local KEYRING// прив'язуємо KEYRING, де знаходиться PSK ключі.
dpd 10 3 periodic // налаштовуємо DPD
virtual-template 2 mode auto // Зв'язуємо profile з virtual-template
5. Створюємо IPSEC transform-set. Даємо йому ім'я (TSET), вказуємо алгоритми шифрування, хешування та задаємо транспортний режим.
crypto ipsec transform-set TSET esp-aes 256 esp-sha512-hmac
mode transport
6. Створюємо ipsec profile, даємо йому ім'я “IPSEC_PROFILE_MIKR” та зв'язуємо його з transform-set, створеного у пункті № 5, та з ikev2 profile, створеного у пункті № 4.
crypto ipsec profile IPSEC_PROFILE_MIKR
set transform-set TSET
set ikev2-profile VTI_PROFILE_MIKR
7. Створюємо loopback інтерфейс і даємо йому IP адресу, ця IP адреса призначається на інтерфейс virtual-template. IP адреса повинна бути обов'язково з 32 маскою - це потрібно для коректної роботи OSPF.
interface Loopback1
ip address 172.16.10.1 255.255.255.255
8. Створюємо virtual-template, даємо номер.
interface Virtual-Template2 type tunnel
ip unnumbered Loopback1 // IP адреса буде братися з loopback1 інтерфейсу
ip ospf dead-interval 40 // позначаємо ospf dead інтервал.
ip ospf mtu-ignore // ospf ігнорує значення mtu
tunnel source GigabitEthernet0/0 // вказуємо фізичний інтерфейс, з якого будуватиметься тунель.
tunnel protection ipsec profile IPSEC_PROFILE_MIKR // вказуємо ipsec profile
9. Піднімаємо ospf
router ospf 1
network 172.16.10.1 0.0.0.0 area 0 // включаємо ospf на інтерфейсі Virtual-Template2.
10. Перевірка
Щоб перевірити піднявся тунель чи ні, потрібно ввести команду:
show crypto ipsec sa peer <ip address remote peer>
interface: Virtual-Access1
Crypto map tag: Virtual-Access1-head-0, local addr 10.0.174.253
protected vrf: (none)
local ident (addr/mask/prot/port): (10.0.174.253/255.255.255.255/47/0)
remote ident (addr/mask/prot/port): (10.0.200.54/255.255.255.255/47/0)
current_peer 10.0.200.54 port 4500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 68, #pkts encrypt: 68, #pkts digest: 68 // ці лічильники повинні зростати
#pkts decaps: 66, #pkts decrypt: 66, #pkts verify: 66 // ці лічильники повинні зростати
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
local crypto endpt.: 10.0.174.253, remote crypto endpt.: 10.0.200.54
plaintext mtu 1442, path mtu 1500, ip mtu 1500, ip mtu idb GigabitEthernet0/0/0
current outbound spi: 0x3F86120(66609440)
PFS (Y/N): N, DH group: none
inbound esp sas:
spi: 0xBD3CDFCA(3174883274)
transform: esp-256-aes esp-sha512-hmac ,
in use settings ={Transport, }
conn id: 2499, flow_id: ESG:499, sibling_flags FFFFFFFF80000008, crypto map: Virtual-Access1-head-0
sa timing: remaining key lifetime (k/sec): (4607991/2947)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0x3F86120(66609440)
transform: esp-256-aes esp-sha512-hmac ,
in use settings ={Transport, }
conn id: 2500, flow_id: ESG:500, sibling_flags FFFFFFFF80000008, crypto map: Virtual-Access1-head-0
sa timing: remaining key lifetime (k/sec): (4607993/2947)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
outbound ah sas:
outbound pcp sas:
Перевірити ospf сусідство можна командою show ip ospf neighbor
Приклад
show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
172.16.10.4 0 FULL/ - 00:00:32 172.16.10.5 Virtual-Access1
State повинен бути в "FULL", і в полі "інтерфейс" ми маємо значення - "Virtual-Access1". Це означає, що сусідство встановлено через інтерфейс Virtual-Access1.
Цією командою дивимося маршрути, що прийшли OSPF.
show ip route ospf
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
Gateway of last resort is 10.0.131.1 to network 0.0.0.0
10.0.0.0/8 is variably subnetted, 10 subnets, 3 masks
O 10.0.145.0/24 [110/1001] via 172.16.10.5, 11:11:06, Virtual-Access1
У прикладі вище трафік до мережі призначення 10.0.145.0/24 піде через Virtual-Access1 інтерфейс.
Джерело: https://habr.com/ru/post/594957/
Про компанію Телесфера Інтеграція.
Телесфера Інтеграція заснована в 2012 році та являється інтегратором новітніх технологічних рішень для бізнесу. Ми розробляємо рішення, що роблять Ваш бізнес успішним.
Основні напрямки роботи компанії:
- Побудова локальних обчислювальних мереж;
- Налаштування мережевого обладнання передових виробників (Cisco Systems, Aruba Networks та інших);
- Продаж телекомунікаційного обладнання;
- Аудит локальних обчислювальних мереж;
e-mail: office@telesphera.net
Телефон: (093) 198-11-82
КОММЕНТАРІ ДО СТАТТІ