Настройка IPsec VPN на маршрутизаторах Cisco: пошаговое руководство

Подробное руководство по настройке IPsec VPN на маршрутизаторах Cisco. Рассматриваются фазы IKE, конфигурация ISAKMP и IPsec, создание crypto map, работа с динамическими IP-адресами и NAT. Включает практические примеры и команды проверки.

Введение в IPsec VPN на оборудовании Cisco

IPsec (Internet Protocol Security) — это набор протоколов для защиты передачи данных по IP-сетям. На маршрутизаторах Cisco IPsec VPN используется для создания защищённых туннелей между двумя точками (site-to-site) или для удалённого доступа. В отличие от простых GRE-туннелей, IPsec обеспечивает шифрование, аутентификацию и проверку целостности пакетов.

Cisco IOS поддерживает два основных протокола для установки ключей: IKEv1 (Internet Key Exchange version 1) и IKEv2. IKEv1 является более старым и широко распространённым, в то время как IKEv2 предлагает улучшенную производительность и безопасность. В данной статье мы сосредоточимся на IKEv1, так как он всё ещё используется в большинстве корпоративных сетей.

Процесс установки IPsec VPN делится на две фазы:

  • Фаза 1 (ISAKMP) — создание защищённого канала для обмена ключами.
  • Фаза 2 (IPsec) — создание туннеля для передачи пользовательских данных.

Понимание этих этапов критически важно для правильной настройки и диагностики VPN.

Предварительные требования и ограничения

Перед началом настройки необходимо убедиться, что выполнены следующие условия:

  • Маршрутизаторы Cisco с поддержкой IPsec и установленной лицензией на VPN (обычно входит в пакет Security).
  • Наличие статического или динамического публичного IP-адреса на каждом конце туннеля.
  • Возможность маршрутизации между локальными сетями через VPN (например, через статические маршруты или динамическую маршрутизацию).
  • Отсутствие блокировок портов UDP 500 (ISAKMP) и UDP 4500 (NAT-T) на межсетевых экранах.

Ограничения:

  • IKEv1 не поддерживает некоторые современные алгоритмы шифрования (например, AES-GCM) без дополнительных настроек.
  • При использовании динамических IP-адресов на удалённой стороне туннель может быть инициирован только с той стороны, которая знает IP-адрес другой стороны.
  • NAT может нарушить работу IPsec, если не настроить исключения для VPN-трафика.

Фаза 1: Настройка ISAKMP (IKE)

ISAKMP (Internet Security Association and Key Management Protocol) отвечает за установку защищённого канала между двумя устройствами. Настройка начинается с создания политики ISAKMP с помощью команды crypto isakmp policy.

Пример настройки на головном маршрутизаторе (R1):

crypto isakmp policy 1
 encryption aes
 hash md5
 authentication pre-share
 group 10
 lifetime 86400
  • encryption — алгоритм шифрования (DES, 3DES, AES).
  • hash — алгоритм хеширования (MD5, SHA).
  • authentication — метод аутентификации (pre-share, rsa-sig).
  • group — группа Диффи-Хеллмана (1, 2, 5, 14, 19, 20, 24).
  • lifetime — время жизни ключа в секундах (по умолчанию 86400).

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

crypto isakmp key OurKey address 20.20.20.20

Если удалённый пир имеет динамический IP, можно использовать маску 0.0.0.0 0.0.0.0, что позволит принимать соединения от любого адреса:

crypto isakmp key OurKey address 0.0.0.0 0.0.0.0

На удалённом маршрутизаторе (R2) настройка аналогична, но указывается IP-адрес головного маршрутизатора.

Фаза 2: Настройка IPsec (Transform Set и Crypto Map)

После установки ISAKMP-канала переходим к настройке IPsec. Сначала создаётся transform-set — набор протоколов для защиты данных:

crypto ipsec transform-set IPCiscoSet esp-aes esp-md5-hmac
  • esp-aes — шифрование ESP с AES.
  • esp-md5-hmac — аутентификация ESP с MD5.

Далее необходимо определить, какой трафик будет шифроваться. Для этого создаётся расширенный ACL (access-list), который разрешает трафик между локальной и удалённой сетями:

ip access-list extended IPCiscoVPN
 permit ip 192.168.1.0 0.0.0.255 172.16.0.0 0.0.0.255

Затем создаётся crypto map, который связывает transform-set, ACL и пира:

crypto map MyMap 10 ipsec-isakmp
 set peer 20.20.20.20
 set transform-set IPCiscoSet
 match address IPCiscoVPN

Crypto map применяется к внешнему интерфейсу маршрутизатора:

interface GigabitEthernet0/1
 crypto map MyMap

На удалённом маршрутизаторе настройка зеркальна, но ACL разрешает трафик в обратном направлении.

Работа с динамическими IP-адресами удалённых пиров

Если удалённый маршрутизатор получает IP-адрес динамически (например, от провайдера), стандартная настройка crypto map с фиксированным peer не подходит. В этом случае используются динамические crypto maps.

На головном маршрутизаторе создаётся динамическая crypto map, которая не требует указания IP-адреса пира:

crypto dynamic-map hq-vpn 10
 set transform-set TS
 match address VPN1-TRAFFIC

Затем эта динамическая карта включается в статическую crypto map:

crypto map VPN 1 ipsec-isakmp dynamic hq-vpn

На удалённом маршрутизаторе настройка остаётся обычной, с указанием статического IP-адреса головного маршрутизатора. Туннель инициируется только с удалённой стороны.

Важно: При использовании динамических crypto map необходимо убедиться, что ACL на головном маршрутизаторе разрешает трафик от всех возможных удалённых сетей.

Совместимость IPsec VPN и NAT

NAT (Network Address Translation) может нарушить работу IPsec, так как изменяет IP-адреса в заголовках пакетов, что приводит к сбою проверки целостности. Для решения этой проблемы необходимо:

  1. Настроить исключение NAT для VPN-трафика.
  2. Включить поддержку NAT-Traversal (NAT-T) на маршрутизаторах.

Настройка исключения NAT: Создаётся ACL, который запрещает NAT для пакетов, направляемых в удалённую VPN-сеть:

access-list 100 deny ip 10.10.10.0 0.0.0.255 20.20.20.0 0.0.0.255
access-list 100 permit ip 10.10.10.0 0.0.0.255 any

Затем этот ACL используется в команде ip nat inside source list 100 interface ... overload.

NAT-Traversal: Cisco IOS автоматически включает NAT-T, если обнаруживает NAT между пирами. Для принудительного включения можно использовать команду:

crypto ipsec nat-transparency udp-encapsulation

NAT-T инкапсулирует IPsec-пакеты в UDP (порт 4500), что позволяет им проходить через NAT-устройства.

Проверка и диагностика IPsec VPN

После настройки необходимо убедиться, что туннель работает корректно. Для этого используются следующие команды:

  • show crypto isakmp sa — показывает состояние ISAKMP (фаза 1). Статус QM_IDLE означает успешное завершение.
  • show crypto ipsec sa — отображает IPsec SA (фаза 2), количество зашифрованных/расшифрованных пакетов.
  • show crypto map — выводит конфигурацию crypto map.
  • show crypto session remote detail — детальная информация о сессии.

Пример вывода show crypto ipsec sa:

#pkts encaps: 21, #pkts encrypt: 21, #pkts digest: 21
#pkts decaps: 21, #pkts decrypt: 21, #pkts verify: 21

Если количество encaps и decaps растёт, туннель работает. Если нет — проверьте ACL, маршруты и наличие блокировок на файрволах.

Типичные проблемы:

  • Несовпадение параметров ISAKMP (алгоритмы, группы).
  • Неправильный ACL (трафик не попадает под интересный трафик).
  • NAT блокирует IPsec (проверьте исключения).
  • Истекло время жизни ключа (lifetime).

Пример полной конфигурации для site-to-site VPN

Ниже приведён пример настройки site-to-site IPsec VPN между двумя маршрутизаторами Cisco с использованием IKEv1.

Головной маршрутизатор (R1):

! Фаза 1
crypto isakmp policy 1
 encryption aes
 hash md5
 authentication pre-share
 group 10
 lifetime 86400
crypto isakmp key OurKey address 20.20.20.20

! Фаза 2
crypto ipsec transform-set TS esp-aes esp-md5-hmac

! ACL для интересного трафика
ip access-list extended VPN-TRAFFIC
 permit ip 192.168.1.0 0.0.0.255 172.16.0.0 0.0.0.255

! Crypto map
crypto map MyMap 10 ipsec-isakmp
 set peer 20.20.20.20
 set transform-set TS
 match address VPN-TRAFFIC

! Применение к интерфейсу
interface GigabitEthernet0/1
 crypto map MyMap

Удалённый маршрутизатор (R2):

! Фаза 1
crypto isakmp policy 1
 encryption aes
 hash md5
 authentication pre-share
 group 10
 lifetime 86400
crypto isakmp key OurKey address 10.10.10.10

! Фаза 2
crypto ipsec transform-set TS esp-aes esp-md5-hmac

! ACL для интересного трафика
ip access-list extended VPN-TRAFFIC
 permit ip 172.16.0.0 0.0.0.255 192.168.1.0 0.0.0.255

! Crypto map
crypto map MyMap 10 ipsec-isakmp
 set peer 10.10.10.10
 set transform-set TS
 match address VPN-TRAFFIC

! Применение к интерфейсу
interface GigabitEthernet0/1
 crypto map MyMap

После настройки проверьте туннель командами show crypto isakmp sa и show crypto ipsec sa.

Расширенные возможности: DMVPN и FlexVPN

Для крупных сетей с множеством удалённых офисов Cisco предлагает более гибкие решения: DMVPN (Dynamic Multipoint VPN) и FlexVPN.

DMVPN позволяет создавать динамические туннели между любыми узлами (hub-and-spoke или spoke-to-spoke) без необходимости настройки каждого пира вручную. Использует mGRE (multipoint GRE) и NHRP (Next Hop Resolution Protocol) для автоматического обнаружения пиров.

FlexVPN — это более современная реализация на базе IKEv2, которая поддерживает различные топологии (site-to-site, remote access, hub-and-spoke). FlexVPN упрощает конфигурацию за счёт использования шаблонов и профилей.

Оба решения интегрируются с IPsec и могут быть использованы для построения масштабируемых VPN-сетей. Однако их настройка требует более глубоких знаний и выходит за рамки данной статьи.

Вопросы и ответы

В чём разница между IKEv1 и IKEv2 в контексте Cisco VPN?

IKEv1 — более старый протокол, который использует две фазы для установки туннеля. IKEv2 — более современный, с улучшенной производительностью, поддержкой мобильности (MOBIKE) и меньшим количеством сообщений. Cisco IOS XE поддерживает оба протокола, но IKEv2 рекомендуется для новых развёртываний.

Как настроить IPsec VPN на Cisco, если удалённый пир имеет динамический IP?

Используйте динамические crypto maps на головном маршрутизаторе. Вместо указания фиксированного IP-адреса пира, создайте динамическую crypto map с помощью команды crypto dynamic-map. Затем включите её в статическую crypto map. Туннель будет инициироваться только с удалённой стороны.

Почему IPsec VPN не работает через NAT?

NAT изменяет IP-адреса в заголовках пакетов, что нарушает проверку целостности IPsec. Для решения используйте NAT-Traversal (NAT-T), который инкапсулирует IPsec-пакеты в UDP. Также необходимо настроить исключение NAT для VPN-трафика с помощью ACL.

Какие команды используются для проверки состояния IPsec VPN на Cisco?

Основные команды:

  • show crypto isakmp sa — статус фазы 1.
  • show crypto ipsec sa — статус фазы 2 и статистика пакетов.
  • show crypto map — конфигурация crypto map.
  • show crypto session remote detail — детальная информация о сессии.
Что такое transform-set в конфигурации IPsec Cisco?

Transform-set — это набор протоколов, определяющих, как будет защищаться трафик. Он включает алгоритм шифрования (например, esp-aes) и алгоритм аутентификации (например, esp-md5-hmac). Transform-set применяется в crypto map для фазы 2.

Как настроить исключение NAT для VPN-трафика на Cisco?

Создайте ACL, который запрещает NAT для пакетов, направляемых в удалённую VPN-сеть, и разрешает NAT для всего остального трафика. Затем используйте этот ACL в команде ip nat inside source list interface ... overload. Например:

access-list 100 deny ip 10.10.10.0 0.0.0.255 20.20.20.0 0.0.0.255
access-list 100 permit ip 10.10.10.0 0.0.0.255 any
В чём преимущество DMVPN перед обычным site-to-site IPsec VPN?

DMVPN позволяет автоматически устанавливать туннели между любыми узлами сети (spoke-to-spoke) без ручной настройки каждого пира. Это упрощает масштабирование и снижает административные затраты. DMVPN также поддерживает динамические IP-адреса и может использовать mGRE для мультиточковых соединений.