Перейти до змісту

Налаштування IPsec VPN між маршрутизаторами Cisco

Зміст


Принцип роботи

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:

IPv4 Crypto ISAKMP SA
dst             src             state          conn-id status
203.0.113.2     203.0.113.1     QM_IDLE           1001 ACTIVE

Статус 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