Ошибки фазы 2 IPsec: несоответствие Proxy IDs / Traffic Selectors
- IKE Phase 1 успешно завершается (
IKE_SA ESTABLISHED), но Phase 2 переходит в статусDOWNилиQM_IDLE. - В логах strongSwan ошибка:
received TS_UNACCEPTABLE notify, no matching Traffic Selector found. - В логах Cisco ошибка:
IPsec SA negotiation failed: Proxy ID mismatch (local: 10.10.0.0/24, remote: 10.20.0.0/16). - Оборудование разных вендоров (FortiGate vs MikroTik vs Cisco) не может поднять туннель из-за различий в агрегации политик.
1. Архитектура Traffic Selectors и Proxy ID
Во время согласования IKE Phase 2 (Quick Mode / CREATE_CHILD_SA) обе стороны обмениваются структурами Proxy ID (Traffic Selectors) — точными диапазонами локальных и удаленных IP-подсетей, которые разрешено передавать через данный SA. Если хотя бы на один бит отличается маска подсети (например, /24 против /23) или протокол, согласование мгновенно отклоняется.
2. Диагностика ошибок через журналы
# Диагностика в strongSwan
swanctl --log | grep -Ei "TS_UNACCEPTABLE|no matching CHILD_SA"
# Диагностика в Cisco IOS
Router# show crypto ipsec sa
Router# debug crypto ipsec 1273. Сценарий 1: Исправление Policy-Based туннеля (Cisco vs strongSwan)
Убедитесь, что Access-List на Cisco зеркально совпадает с local_ts / remote_ts на strongSwan.
Конфигурация Cisco ASA:
access-list VPN_ACL extended permit ip 10.10.10.0 255.255.255.0 192.168.50.0 255.255.255.0Конфигурация strongSwan (swanctl.conf):
connections {
cisco-peer {
children {
net-hq {
# Подсети должны быть строго зеркальны Cisco ACL
local_ts = 192.168.50.0/24
remote_ts = 10.10.10.0/24
esp = aes256-sha256-modp2048!
}
}
}
}4. Сценарий 2: Множественные подсети и различие в реализации Policy
Некоторые маршрутизаторы (MikroTik / FortiGate) создают отдельный SA на каждую пару подсетей, а другие (Route-Based шлюзы / Linux) требуют единого обобщенного селектора 0.0.0.0/0.
Решение на MikroTik RouterOS v7:
# Если удаленная сторона требует строгой разбивки политик:
/ip ipsec policy
add peer=Peer1 src-address=192.168.1.0/24 dst-address=10.0.1.0/24 tunnel=yes
add peer=Peer1 src-address=192.168.1.0/24 dst-address=10.0.2.0/24 tunnel=yes5. Проверка соответствия Perfect Forward Secrecy (PFS)
Несовпадение Diffie-Hellman группы в Phase 2 вызывает тихий сброс соединения:
# Обе стороны должны использовать одинаковую группу (например, modp2048 / DH14)
# В swanctl.conf:
esp = aes256gcm128-modp2048! Частые вопросы (FAQ)
Почему Phase 1 работает, а Phase 2 падает при смене маски подсети?
Фаза 1 отвечает только за аутентификацию самих шлюзов (внешние IP и ключи). Фаза 2 согласует права на передачу внутренних подсетей. При малейшем несовпадении диапазонов Proxy ID фаза 2 отвергается.
Что такое Route-Based VPN (VTI) и как он решает проблемы с Proxy ID?
В Route-Based VPN (Virtual Tunnel Interface) Traffic Selectors всегда фиксируются как 0.0.0.0/0 === 0.0.0.0/0, а весь выбор трафика перекладывается на стандартную таблицу маршрутизации ОС, что исключает ошибки Proxy ID.
Что означает ошибка TS_UNACCEPTABLE в strongSwan?
Это означает, что удаленный шлюз прислал набор подсетей (Traffic Selector), который не входит в разрешенный диапазон local_ts/remote_ts, сконфигурированный на вашем сервере.
Влияет ли параметр Lifetime в Phase 2 на обрыв туннеля?
Да, если время жизни SA (Lifetime) сильно различается на сторонах, при попытке Rekeying туннель может кратковременно падать из-за несинхронного удаления старых криптографических ключей.