Что такое IPsec VPN и зачем он нужен
IPsec (Internet Protocol Security) — это набор протоколов для защиты IP-трафика путём шифрования и аутентификации каждого пакета. В корпоративных сетях IPsec чаще всего используется для построения VPN-туннелей между офисами, позволяя безопасно передавать данные через публичный интернет. Такое соединение называется site-to-site VPN: два маршрутизатора на разных площадках создают зашифрованный туннель, через который проходят пакеты между локальными сетями.
Основные задачи IPsec — обеспечение конфиденциальности (шифрование), целостности (защита от изменения) и аутентификации (подтверждение, что данные отправлены именно тем узлом, который ожидается). Кроме того, IPsec поддерживает защиту от повторной передачи пакетов (anti-replay), что критично для сетей с высокими требованиями безопасности.
В контексте Cisco IPsec VPN обычно реализуется на базе IKE (Internet Key Exchange), который отвечает за согласование параметров и обмен ключами. IKE работает в двух фазах: первая фаза создаёт защищённый канал для управления, вторая — согласует параметры для шифрования пользовательских данных. Понимание этих фаз необходимо для корректной настройки.
Архитектура site-to-site IPsec VPN на Cisco
Типовая схема site-to-site IPsec VPN включает два маршрутизатора Cisco, каждый из которых подключён к интернету через внешний интерфейс и имеет локальную сеть за внутренним интерфейсом. Например, на одной стороне может быть сеть 10.10.10.0/24, на другой — 20.20.20.0/24. Маршрутизаторы обмениваются зашифрованным трафиком через публичные IP-адреса, которые должны быть статическими для простоты настройки.
Внутренние сети используют частные адреса (RFC 1918), которые не маршрутизируются в интернете, поэтому туннель инкапсулирует пакеты в IPsec-заголовки с публичными адресами маршрутизаторов. Это позволяет передавать данные между офисами без необходимости в выделенных каналах.
Важно понимать, что IPsec VPN на Cisco — это политический VPN (policy-based): решение о шифровании принимается на основе ACL (access control list), который определяет «интересный трафик» — то есть какие пакеты должны попадать в туннель. Трафик, не соответствующий ACL, передаётся обычным образом. Такой подход отличается от маршрутизируемых VPN (например, VTI), где туннель привязан к маршруту.
Фаза 1 IKE: настройка ISAKMP-политики
Первым шагом настройки IPsec VPN является конфигурация ISAKMP-политики (Internet Security Association and Key Management Protocol), которая определяет параметры для фазы 1 IKE. Эта фаза устанавливает защищённый канал для дальнейшего обмена ключами. Настройка выполняется в глобальной конфигурации маршрутизатора.
Команда crypto isakmp policy с номером приоритета создаёт политику. Чем меньше номер, тем выше приоритет. Внутри политики задаются:
- encryption — алгоритм шифрования (DES, 3DES, AES, aes-192, aes-256);
- hash — алгоритм хеширования (MD5, SHA, SHA256);
- authentication — метод аутентификации (pre-share, rsa-sig, crack);
- group — группа Диффи-Хеллмана (например, 2, 5, 14, 10);
- lifetime — время жизни ключа (по умолчанию 86400 секунд).
Пример настройки на маршрутизаторе R1:
R1(config)# crypto isakmp policy 10
R1(config-isakmp)# encryption aes
R1(config-isakmp)# hash sha256
R1(config-isakmp)# authentication pre-share
R1(config-isakmp)# group 14
R1(config-isakmp)# lifetime 86400После создания политики необходимо задать предварительный общий ключ (pre-shared key) для аутентификации с удалённым пиром. Ключ привязывается к IP-адресу удалённого маршрутизатора:
R1(config)# crypto isakmp key vpnuser address 10.0.0.2Аналогичная политика и ключ настраиваются на втором маршрутизаторе, при этом ключ должен совпадать, а адрес указывается на первый маршрутизатор. Важно, чтобы параметры политик на обоих концах были совместимы: при согласовании маршрутизаторы выбирают первую подходящую политику из списка.
Фаза 2 IPsec: transform-set и ACL
После настройки фазы 1 переходим к фазе 2, которая определяет, как будет защищаться пользовательский трафик. Ключевым элементом является transform-set — набор алгоритмов шифрования и хеширования для ESP (Encapsulating Security Payload). Создаётся командой crypto ipsec transform-set с именем и параметрами.
Пример:
R1(config)# crypto ipsec transform-set myset esp-aes esp-sha256-hmacЗдесь esp-aes задаёт шифрование AES, а esp-sha256-hmac — хеширование SHA-256. Возможны и другие комбинации, например esp-3des esp-md5-hmac. Transform-set должен быть одинаковым на обоих маршрутизаторах.
Далее создаётся расширенный ACL, который определяет «интересный трафик» — какие пакеты будут шифроваться. ACL задаёт локальную и удалённую сети. На R1 для сети 10.1.1.0/24 и удалённой 172.16.2.0/24:
R1(config)# ip access-list extended VPN-TRAFFIC
R1(config-ext-nacl)# permit ip 10.1.1.0 0.0.0.255 172.16.2.0 0.0.0.255На R2 ACL должен быть зеркальным: источник и назначение меняются местами. Это важно для корректной работы туннеля. Если ACL не совпадают, туннель может не установиться или трафик не будет шифроваться.
Crypto map: связывание всех компонентов
Crypto map — это конфигурация, которая объединяет ISAKMP-политику, transform-set и ACL, а также определяет удалённого пира. Создаётся командой crypto map с именем и номером последовательности. Внутри crypto map задаются:
set peer— IP-адрес удалённого маршрутизатора;set transform-set— имя transform-set;match address— имя ACL, определяющего интересный трафик.
Пример на R1:
R1(config)# crypto map mymap 10 ipsec-isakmp
R1(config-crypto-map)# set peer 10.0.0.2
R1(config-crypto-map)# set transform-set myset
R1(config-crypto-map)# match address VPN-TRAFFICЗатем crypto map применяется к внешнему интерфейсу, который смотрит в интернет:
R1(config)# interface GigabitEthernet0/0
R1(config-if)# crypto map mymapПосле применения на интерфейсе маршрутизатор выводит сообщение «ISAKMP is ON», подтверждая активацию. На втором маршрутизаторе выполняются аналогичные команды, но с указанием своего пира и зеркального ACL.
Важно: на один интерфейс можно назначить только одну crypto map. Если требуется несколько туннелей, используются разные номера последовательности в одной crypto map или отдельные crypto map на разных интерфейсах.
NAT и IPsec: как избежать конфликтов
При настройке site-to-site IPsec VPN часто возникает проблема с NAT (Network Address Translation). Если на маршрутизаторе настроен NAT для выхода в интернет, он может преобразовывать адреса пакетов, предназначенных для VPN-туннеля, что нарушает работу IPsec. Поэтому необходимо исключить VPN-трафик из NAT.
Для этого в ACL, используемом в NAT, добавляется deny-правило для трафика между локальной и удалённой VPN-сетями. Например, на R1:
R1(config)# ip nat inside source list 100 interface fastethernet0/1 overload
R1(config)# access-list 100 deny ip 10.10.10.0 0.0.0.255 20.20.20.0 0.0.0.255
R1(config)# access-list 100 permit ip 10.10.10.0 0.0.0.255 anyЗдесь ACL 100 сначала запрещает NAT для трафика к удалённой VPN-сети, а затем разрешает NAT для остального трафика. На втором маршрутизаторе правило зеркально: deny для 20.20.20.0/24 к 10.10.10.0/24.
Без этого правила пакеты, попадающие в туннель, будут иметь изменённые адреса, и IPsec-согласование может завершиться неудачей, так как адреса в ACL не совпадут с реальными адресами после NAT. Также стоит помнить, что NAT не должен применяться к IKE-трафику (UDP порт 500), хотя обычно это не требуется, если NAT настроен корректно.
Проверка работы туннеля: основные show-команды
После настройки необходимо убедиться, что туннель работает. Для этого используются несколько команд show, которые предоставляют детальную информацию о состоянии VPN.
show crypto ipsec sa — показывает текущие Security Associations (SA): параметры шифрования, количество зашифрованных и расшифрованных пакетов, SPI (Security Parameter Index), время жизни ключей. Пример вывода:
interface: GigabitEthernet0/0
Crypto map tag: mymap, local addr 172.16.1.1
local ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (172.16.2.0/255.255.255.0/0/0)
#pkts encaps: 21, #pkts encrypt: 21, #pkts digest: 21
#pkts decaps: 21, #pkts decrypt: 21, #pkts verify: 21
inbound esp sas:
spi: 0x6E210372(1847657330)
transform: esp-aes esp-sha256-hmac,
Status: ACTIVEshow crypto isakmp sa — показывает состояние IKE SA фазы 1. Статус QM_IDLE и ACTIVE указывают на успешное установление.
show crypto map — отображает структуру crypto map: имя, пир, ACL, transform-set, интерфейс.
show crypto session remote detail — сводная информация о сессии: время работы, статус, количество пакетов.
Эти команды помогают диагностировать проблемы: если счётчики пакетов не увеличиваются, значит трафик не попадает в туннель; если статус не ACTIVE — проблема в согласовании.
Устранение неполадок: debug-команды и типичные ошибки
Когда туннель не устанавливается, для диагностики используются debug-команды. Они выводят подробные сообщения о процессе согласования IKE и IPsec.
debug crypto isakmp— показывает обмен сообщениями фазы 1. Позволяет увидеть, какие политики предлагаются и принимаются, происходит ли аутентификация.debug crypto ipsec— отображает события фазы 2, включая создание SA и обработку ACL.
Пример вывода debug для успешного согласования:
ISAKMP: (0):beginning Main Mode exchange
ISAKMP: (0):sending packet to 10.0.0.2 my_port 500 peer_port 500 (I) MM_NO_STATE
ISAKMP: (0):received packet from 10.0.0.2 dport 500 sport 500 Global (I) MM_NO_STATEТипичные ошибки:
- Не совпадают параметры политик — например, разные алгоритмы шифрования или группы Диффи-Хеллмана. Решение: привести политики к единым значениям.
- Не совпадают предварительные ключи — ключ на одном конце не совпадает с ключом на другом. Проверьте команду
crypto isakmp key. - ACL не зеркальны — на одном маршрутизаторе источник и назначение перепутаны. Убедитесь, что ACL на R2 является обратным ACL на R1.
- NAT мешает трафику — пакеты изменяются до шифрования. Проверьте исключения NAT.
- Неправильный интерфейс — crypto map применена не к тому интерфейсу, который смотрит в интернет.
Debug-команды следует использовать осторожно, так как они могут создавать большую нагрузку на процессор. После диагностики их нужно отключать командой undebug all.
Современные альтернативы: GRE over IPsec и DMVPN
Классическая настройка IPsec VPN с crypto map и ACL — это проверенный временем метод, но он имеет ограничения. Например, политический VPN не поддерживает динамическую маршрутизацию внутри туннеля, а добавление новых сетей требует изменения ACL на обоих концах. Для более гибких решений Cisco предлагает альтернативы.
GRE over IPsec — туннель GRE инкапсулирует пакеты, а IPsec защищает их. GRE позволяет передавать multicast и динамическую маршрутизацию (OSPF, EIGRP), что упрощает управление. Настройка включает создание GRE-туннеля и применение IPsec к нему. Однако GRE добавляет накладные расходы и требует настройки на каждом маршрутизаторе.
DMVPN (Dynamic Multipoint VPN) — технология для построения VPN с центром и множеством удаленных узлов. DMVPN автоматически создает туннели между узлами без ручной настройки каждого пира. Это особенно полезно для больших сетей с десятками офисов. DMVPN использует mGRE (multipoint GRE) и NHRP (Next Hop Resolution Protocol) для динамического обнаружения пиров.
Выбор между классическим IPsec, GRE over IPsec и DMVPN зависит от требований: если нужно простое соединение двух офисов — достаточно IPsec; если нужна маршрутизация и масштабируемость — стоит рассмотреть GRE или DMVPN.
В любом случае понимание основ IPsec VPN на Cisco — это база, которая поможет освоить более сложные технологии.
Вопросы и ответы
Какие алгоритмы шифрования поддерживает IPsec на Cisco?
Cisco IOS поддерживает DES, 3DES, AES (128, 192, 256 бит) для шифрования. Для хеширования — MD5, SHA-1, SHA-256. Рекомендуется использовать AES и SHA-256, так как DES и MD5 считаются небезопасными. В transform-set можно комбинировать, например esp-aes esp-sha256-hmac.
Что такое transform-set и зачем он нужен?
Transform-set — это набор алгоритмов, которые определяют, как будет защищатся трафик во второй фазе IPsec. Он включает алгоритм шифрования (например, ESP-AES) и хеширования (ESP-SHA256-HMAC). Transform-set создается командой crypto ipsec transform-set и привязывается к crypto map. Оба конца туннеля должны использовать одинаовый transform-set.
Почему первый пинг через туннель может не проходить?
При первом пинге туннель еще не установлен, и маршрутизатору требуется время для согласования IKE (обычно 1-2 секунды). Поэтому первый ICMP-запрос теряется, а последующие проходят. Это нормальное поведение. Если все пинги теряются, проверте состояние туннеля командами show crypto ipsec sa и show crypto isakmp sa.
Как исключить VPN-трафик из NAT?
В ACL, используемом для NAT, добавте deny-правило для трафика между локальной и удаленной VPN-сетями. Например, на R1: access-list 100 deny ip 10.10.10.0 0.0.0.255 20.20.20.0 0.0.0.255, затем permit ip 10.10.10.0 0.0.0.255 any. На R2 правило зеркально. Это предотвращает изменение адресов пакетов, которые должны быть зашифрованы.
Можно ли настроить IPsec VPN с динамическим IP-адресом?
Да, но это сложнее. Вместо указания конкретного IP-адреса пира в set peer, можно использовать set peer hostname с DDNS-именем. Также можно настроить режим aggresive mode, который позволяет одному концу иметь динамический адрес. Однако для простоты рекомендуется статический IP на обоих маршрутизаторах.
Какие команды использовать для проверки туннеля?
Основные команды: show crypto ipsec sa — состояние SA и счетчики пакетов; show crypto isakmp sa — состояние IKE; show crypto map — структура crypto map; show crypto session remote detail — сводная информация о сессии. Если статус ACTIVE и счетчики растут, туннель работает.