Налаштування IPsec VPN між маршрутизаторами Cisco
Зміст
- Принцип роботи
- Сценарій 1 - Обидва маршрутизатори з публічними адресами
- Сценарій 2 - Один маршрутизатор за NAT
- Перевірка та діагностика
Принцип роботи
IPsec (Internet Protocol Security) - набір протоколів для захищеної передачі даних через незахищені мережі. Забезпечує конфіденційність, цілісність та автентифікацію трафіку
Тунель IPsec встановлюється у два етапи:
┌─────────────────────────────────────────────────────────────────────┐
│ IKE Phase 1 (ISAKMP) │
│ │
│ Мета: встановити безпечний керуючий канал між пірами │
│ │
│ • Узгоджується алгоритм шифрування (AES-256) │
│ • Узгоджується алгоритм хешування (SHA-256) │
│ • Узгоджується метод автентифікації (pre-shared key) │
│ • Узгоджується група Діффі-Хеллмана (group 14) │
│ • Перевіряється pre-shared key │
│ • Результат: ISAKMP SA (Security Association) │
└─────────────────────────────────────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────┐
│ IKE Phase 2 (IPsec) │
│ │
│ Мета: встановити тунель для передачі даних │
│ │
│ • Узгоджується transform-set (ESP + AES-256 + SHA-256) │
│ • Визначається трафік, що підлягає захисту (crypto ACL) │
│ • За потреби узгоджується PFS (group 14) │
│ • Результат: IPsec SA (пара однонаправлених тунелів) │
└─────────────────────────────────────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────┐
│ Передача даних │
│ │
│ Трафік, що відповідає crypto ACL → шифрується → передається │
│ Інший трафік → маршрутизується звичайним чином │
└─────────────────────────────────────────────────────────────────────┘
Компоненти конфігурації:
| Компонент | Призначення |
|---|---|
crypto isakmp policy |
Параметри IKE Phase 1 |
crypto isakmp key |
Pre-shared key та адреса піра |
crypto ipsec transform-set |
Алгоритми захисту даних (Phase 2) |
crypto map |
Об'єднує ACL, піра та transform-set |
match address |
ACL, що визначає захищений трафік |
Сценарій 1 — Обидва маршрутизатори з публічними адресами
Топологія
Офіс А Офіс Б
────── ──────
┌──────────┐ 192.168.40.0/22 ┌───────────┐ ┌───────────┐ 192.168.200.0/24 ┌──────────┐
│ LAN A ├────────────────────►─┤ R1 (HQ) ├─ Internet ──┤ R2 (BR) ├───────────────────────┤ LAN B │
│ │ │ │ │ │ │ │
└──────────┘ └───────────┘ └───────────┘ └──────────┘
192.168.40.0/22 Gi3: (LAN) Gi3: (LAN) 192.168.200.0/24
192.168.43.0/24 ◄── захищена Gi4: 203.0.113.1 (WAN) Gi4: 203.0.113.2 (WAN) 192.168.15.0/24
│ │
└──────── IPsec ──────────┘
VPN-тунель
Адресація: - R1 WAN:
203.0.113.1(публічна, статична) - R2 WAN:203.0.113.2(публічна, статична) - LAN A:192.168.43.0/24- LAN B:192.168.200.0/24,192.168.15.0/24
Конфігурація R1 (HQ)
! ============================================================
! IKE Phase 1 - параметри узгодження керуючого каналу
! ============================================================
crypto isakmp policy 10
encr aes 256
hash sha256
authentication pre-share
group 14
! Pre-shared key та адреса піра (R2)
crypto isakmp key 037VyA49fw34jcl11Mc8mNZi address 203.0.113.2
! Keepalive - виявлення обриву тунелю
crypto isakmp keepalive 30 periodic
! ============================================================
! IKE Phase 2 - параметри захисту даних
! ============================================================
crypto ipsec transform-set TS esp-aes 256 esp-sha256-hmac
mode tunnel
! ============================================================
! Crypto Map - зв'язує піра, ACL та transform-set
! ============================================================
crypto map VPN 10 ipsec-isakmp
set peer 203.0.113.2
set security-association lifetime seconds 86400
set transform-set TS
set pfs group14
match address VPN-TRAFFIC
! ============================================================
! Інтерфейс WAN - застосування crypto map
! ============================================================
interface GigabitEthernet4
description -=WAN=-
ip address 203.0.113.1 255.255.255.0
crypto map VPN
! ============================================================
! ACL — визначає трафік для шифрування
! Правило: дзеркальне відображення VPN-TRAFFIC на R2
! ============================================================
ip access-list extended VPN-TRAFFIC
permit ip 192.168.43.0 0.0.0.255 192.168.200.0 0.0.0.255
permit ip 192.168.43.0 0.0.0.255 192.168.15.0 0.0.0.255
Конфігурація R2 (BR)
! ============================================================
! IKE Phase 1 — параметри повинні збігатися з R1
! ============================================================
crypto isakmp policy 10
encr aes 256
hash sha256
authentication pre-share
group 14
! Pre-shared key та адреса піра (R1)
crypto isakmp key 037VyA49fw34jcl11Mc8mNZi address 203.0.113.1
crypto isakmp keepalive 30 periodic
! ============================================================
! IKE Phase 2
! ============================================================
crypto ipsec transform-set TS esp-aes 256 esp-sha256-hmac
mode tunnel
! ============================================================
! Crypto Map
! ============================================================
crypto map VPN 10 ipsec-isakmp
set peer 203.0.113.1
set security-association lifetime seconds 86400
set transform-set TS
set pfs group14
match address VPN-TRAFFIC
! ============================================================
! Інтерфейс WAN
! ============================================================
interface GigabitEthernet4
description -=WAN=-
ip address 203.0.113.2 255.255.255.0
crypto map VPN
! ============================================================
! ACL — дзеркальне відображення VPN-TRAFFIC на R1
! ============================================================
ip access-list extended VPN-TRAFFIC
permit ip 192.168.200.0 0.0.0.255 192.168.43.0 0.0.0.255
permit ip 192.168.15.0 0.0.0.255 192.168.43.0 0.0.0.255
Важливо: ACL
VPN-TRAFFICзавжди є дзеркальним відображенням: source та destination міняються місцями на кожному маршрутизаторі
Сценарій 2 - Один маршрутизатор за NAT
У цьому сценарії R1 знаходиться за NAT-пристроєм провайдера - тобто його зовнішній інтерфейс отримує приватну або динамічну адресу, а в інтернет він виходить через NAT. R2 має білу (публічну) статичну адресу і виступає ініціатором або відповідачем на вхідні підключення
Проблема NAT traversal: протокол IKE використовує UDP/500, а ESP не має портів - NAT-пристрій не може відстежувати ESP-пакети. Рішення - NAT-T (NAT Traversal): ESP інкапсулюється у UDP/4500, що дозволяє пакетам проходити через NAT
Топологія
Офіс А (за NAT) Офіс Б (публічна адреса)
────────────── ────────────────────────
┌──────────┐ 192.168.40.0/22 ┌───────────┐ NAT ┌──────────────┐ ┌───────────┐ 192.168.200.0/24
│ LAN A ├────────────────────►─┤ R1 (HQ) ├───────────┤ NAT-пристрій ├─ Internet ──┤ R2 (BR) ├───────────────────
│ │ │ │ │ провайдера │ │ │ 192.168.15.0/24
└──────────┘ └───────────┘ └──────────────┘ └───────────┘
192.168.40.0/22 Gi3: (LAN) x.x.x.x (NAT) Gi4: 203.0.113.2 (WAN)
192.168.43.0/24 ◄── захищена Gi4: DHCP (WAN) │ │
│ └────────── IPsec ─────────┘
│ NAT-T (UDP/4500)
└── за NAT, ініціює тунель
Адресація: - R1 WAN: динамічна (DHCP), за NAT - R2 WAN:
203.0.113.2(публічна, статична) - LAN A (захищена підмережа):192.168.43.0/24- LAN B:192.168.200.0/24,192.168.15.0/24Обмеження: тунель завжди ініціює R1 (той, що за NAT). R2 не може самостійно встановити з'єднання до R1, бо не знає його реальної публічної адреси.
Конфігурація R1 (HQ, за NAT)
! ============================================================
! IKE Phase 1
! ============================================================
crypto isakmp policy 10
encr aes 256
hash sha256
authentication pre-share
group 14
! Адреса піра - публічна адреса R2
crypto isakmp key 007VyA48fw34jcl30Mc5mNZi address 203.0.113.2
! Keepalive - підтримка тунелю та виявлення обриву
crypto isakmp keepalive 30 periodic
! NAT keepalive - підтримка UDP/4500 відображення на NAT-пристрої
! Значення менше ніж isakmp keepalive
crypto isakmp nat keepalive 20
! ============================================================
! IKE Phase 2
! ============================================================
crypto ipsec transform-set TS esp-aes 256 esp-sha256-hmac
mode tunnel
! ============================================================
! Crypto Map
! ============================================================
crypto map VPN 10 ipsec-isakmp
set peer 203.0.113.2
! set nat demux - дозволяє демультиплексування при NAT-T,
! необхідно коли за одним NAT знаходиться кілька VPN-пірів
set nat demux
set security-association lifetime seconds 86400
set transform-set TS
set pfs group14
match address VPN-TRAFFIC
! ============================================================
! Інтерфейс WAN - адреса отримується по DHCP
! ============================================================
interface GigabitEthernet4
description -=WAN=-
ip address dhcp
ip nat outside
ip virtual-reassembly in
duplex auto
speed auto
crypto map VPN
! ============================================================
! NAT - виключення VPN-трафіку з NAT-трансляції
! КРИТИЧНО: трафік до захищених мереж НЕ повинен транслюватися
! ============================================================
ip nat inside source list NAT-TRAFFIC interface GigabitEthernet4 overload
! Спочатку deny для VPN-трафіку, потім permit для решти
ip access-list extended NAT-TRAFFIC
deny ip 192.168.43.0 0.0.0.255 192.168.0.0 0.0.255.255
permit ip 192.168.40.0 0.0.3.255 any
! ============================================================
! ACL для шифрування
! ============================================================
ip access-list extended VPN-TRAFFIC
permit ip 192.168.43.0 0.0.0.255 192.168.200.0 0.0.0.255
permit ip 192.168.43.0 0.0.0.255 192.168.15.0 0.0.0.255
Конфігурація R2 (BR, публічна адреса)
! ============================================================
! IKE Phase 1
! ============================================================
crypto isakmp policy 10
encr aes 256
hash sha256
authentication pre-share
group 14
! R1 знаходиться за NAT - використовуємо 0.0.0.0 замість
! конкретної адреси, бо реальна адреса R1 невідома
crypto isakmp key 007VyA48fw34jcl30Mc5mNZi address 0.0.0.0 0.0.0.0
crypto isakmp keepalive 30 periodic
! ============================================================
! IKE Phase 2
! ============================================================
crypto ipsec transform-set TS esp-aes 256 esp-sha256-hmac
mode tunnel
! ============================================================
! Crypto Map - динамічна, бо адреса R1 невідома
! ============================================================
! Динамічний шаблон для пірів з невідомою адресою
crypto dynamic-map DMAP 10
set transform-set TS
set pfs group14
set security-association lifetime seconds 86400
match address VPN-TRAFFIC
! Статична crypto map посилається на динамічний шаблон
crypto map VPN 10 ipsec-isakmp dynamic DMAP
! ============================================================
! Інтерфейс WAN
! ============================================================
interface GigabitEthernet4
description -=WAN=-
ip address 203.0.113.2 255.255.255.0
duplex auto
speed auto
crypto map VPN
! ============================================================
! ACL - дзеркальне відображення VPN-TRAFFIC на R1
! ============================================================
ip access-list extended VPN-TRAFFIC
permit ip 192.168.200.0 0.0.0.255 192.168.43.0 0.0.0.255
permit ip 192.168.15.0 0.0.0.255 192.168.43.0 0.0.0.255
Примітка
address 0.0.0.0 0.0.0.0: дозволяє прийняти підключення від будь-якого піра з даним ключем. Для підвищення безпеки в продакшн-середовищі рекомендується використовувати автентифікацію за сертифікатами (PKI)
Порівняння сценаріїв
| Параметр | Сценарій 1 (обидва білі) | Сценарій 2 (один за NAT) |
|---|---|---|
| Ініціатор тунелю | Будь-який | Тільки R1 (за NAT) |
crypto isakmp nat keepalive |
Не потрібен | R1: nat keepalive 20 |
set nat demux |
Не потрібен | R1: обов'язково |
| Адреса піра на R2 | Конкретна IP | 0.0.0.0 0.0.0.0 |
| Crypto map на R2 | Статична | Динамічна (dynamic-map) |
| NAT exemption | Не потрібна | R1: обов'язково в NAT-TRAFFIC |
| NAT-T (UDP/4500) | Не використовується | Автоматично |
Перевірка та діагностика
Перевірка стану IKE та IPsec
! Переглянути активні IKE SA (Phase 1)
show crypto isakmp sa
! Переглянути активні IPsec SA (Phase 2) зі статистикою
show crypto ipsec sa
! Детальна інформація про crypto map
show crypto map
Очікуваний результат show crypto isakmp sa:
Статус
QM_IDLEозначає, що Phase 1 активна і готова до передачі трафіку.
Очікуваний результат show crypto ipsec sa:
interface: GigabitEthernet4
Crypto map tag: VPN, local addr 203.0.113.1
protected vrf: (none)
local ident (addr/mask/prot/port): (192.168.43.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (192.168.200.0/255.255.255.0/0/0)
current_peer 203.0.113.2 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 1523, #pkts encrypt: 1523, #pkts digest: 1523
#pkts decaps: 1489, #pkts decrypt: 1489, #pkts verify: 1489
Лічильники
pkts encapsтаpkts decapsповинні зростати при передачі трафіку.
Діагностика
! Відстежити процес встановлення тунелю в реальному часі
debug crypto isakmp
debug crypto ipsec
! Вимкнути debug після завершення діагностики
no debug all
Типові проблеми:
| Симптом | Причина | Рішення |
|---|---|---|
MM_NO_STATE в isakmp sa |
Немає відповіді від піра | Перевірити маршрутизацію, firewall (UDP/500, UDP/4500, ESP) |
pkts encaps зростає, pkts decaps = 0 |
ACL не дзеркальні | Перевірити VPN-TRAFFIC ACL на обох маршрутизаторах |
| Тунель встановлюється, але трафік через NAT | Не виключено VPN-трафік з NAT | Перевірити NAT-TRAFFIC ACL: deny перед permit |
| Тунель падає через ~30 сек | Відсутній keepalive | Додати crypto isakmp keepalive 30 periodic |
| NAT-T не працює | Немає nat keepalive |
Додати crypto isakmp nat keepalive 20 на R1 |