IPsec Error TS_UNACCEPTABLE: несовпадение селекторов трафика подсетей
В процессе инициализации Фазы 2 (Child SA) туннель не поднимается со следующими ошибками:
- В логах демона IKEv2 (strongSwan, Cisco IOS, Palo Alto, Fortinet) регистрируется сообщение:
received TS_UNACCEPTABLE notify, no CHILD_SA built,failed to establish CHILD_SA, configuration mismatchилиTraffic Selector mismatch for subnets. - Фаза 1 (IKE SA) переходит в состояние
ESTABLISHED, но защищенные подсети не могут обмениваться пакетами. - Локальный шлюз отправляет предложение
TSi: 192.168.1.0/24, а удаленный шлюз настроен на0.0.0.0/0или другую маску подсети.
1. Назначение селекторов трафика (Traffic Selectors, RFC 7296)
В протоколе IKEv2 селекторы трафика (TSi — Traffic Selector Initiator, TSr — Traffic Selector Responder) определяют, какие именно диапазоны IP-адресов, протоколы и порты имеют право проходить через создаваемую ассоциацию безопасности (Child SA). Если диапазоны адресов, предложенные инициатором, не входят в подмножество правил, сконфигурированных на ответчике, ответчик обязан прервать создание SA с уведомлением TS_UNACCEPTABLE (Notify Message Type 38).
2. Анализ разногласий подсетей в логах strongSwan
# Просмотр детального лога IKEv2 сопоставления селекторов
journalctl -u strongswan -f | grep -iE 'traffic selector|TS_|received TS'
# Пример ошибки в логе:
# [IKE] received TS_UNACCEPTABLE notify, no CHILD_SA built
# [IKE] local TS: 10.10.1.0/24
# [IKE] remote TS: 172.16.0.0/16
# [IKE] peer proposed: 172.16.10.0/243. Симметричная настройка локальных и удаленных подсетей
Убедитесь, что параметры local_ts и remote_ts на одном конце туннеля зеркально соответствуют параметрам remote_ts и local_ts на противоположной стороне.
Конфигурация Шлюза А (swanctl.conf):
connections {
to-branch {
remote_addrs = 198.51.100.2
children {
lan {
local_ts = 10.10.0.0/16
remote_ts = 192.168.50.0/24
mode = tunnel
}
}
}
}Конфигурация Шлюза Б (swanctl.conf):
connections {
to-hq {
remote_addrs = 203.0.113.1
children {
lan {
local_ts = 192.168.50.0/24
remote_ts = 10.10.0.0/16
mode = tunnel
}
}
}
}4. Решение проблемы суперсетей (Supernetting / 0.0.0.0/0)
Если одна сторона настроена на маршрутизацию всего интернета через VPN (0.0.0.0/0), а вторая ожидает только локальную подсеть, возникнет ошибка. Разрешите сужение селекторов (Narrowing) на стороне инициатора:
# Включение сужения селекторов трафика в strongSwan
connections {
to-peer {
children {
net {
local_ts = 10.10.0.0/16
remote_ts = 0.0.0.0/0
# Разрешить шлюзу согласовать более узкую подсеть
narrowing = yes
}
}
}
}5. Перезапуск согласования Child SA
swanctl --terminate --child lan
swanctl --initiate --child lan Частые вопросы (FAQ)
Чем отличается поведение селекторов трафика в IKEv1 от IKEv2?
В IKEv1 (Quick Mode) каждый набор подсетей требовал строго отдельного туннеля Фазы 2 с точным совпадением масок (один в один). В IKEv2 один Child SA может содержать несколько несмежных диапазонов адресов и поддерживает автоматическое сужение (Narrowing) диапазонов.
Почему возникает TS_UNACCEPTABLE при использовании Route-Based VPN (VTI)?
Для Route-Based VPN (VTI/Tunnel interfaces) селекторы трафика на обоих маршрутизаторах должны быть жестко выставлены в '0.0.0.0/0' (any-to-any), а реальная фильтрация трафика делегируется таблице маршрутизации.
Можно ли передавать порты L4 в селекторах трафика?
Да, стандарт IKEv2 позволяет ограничить туннель не только подсетями, но и протоколами/портами, например '10.0.0.0/24[tcp/443]'. Если на ответчике не разрешен данный порт, возникнет TS_UNACCEPTABLE.
Что означает опция narrowing = yes в strongSwan?
Опция narrowing разрешает инициатору согласиться на более узкий диапазон IP-адресов, предложенный ответчиком, предотвращая разрыв согласования по ошибке TS_UNACCEPTABLE.