Короткий ответ
Phase 2 (Child SA / Quick Mode) шифрует конкретные префиксы. IKE SA может быть зелёной, а пинг в 10.0.10.0/24 — чёрным, если трафик-селекторы (TS) не пересекаются или P2 proposal/PFS не совпали. Сверьте local_ts/remote_ts (или Mirror/Proxy ID) с реальными подсетями: туннель 10.8.0.0/24 и LAN 10.0.10.0/24 — это разные интересы. Не пересоздавайте сертификаты Phase 1, пока лог пишет TS_UNACCEPTABLE.
Снимите swanctl --list-sas и фактический ip route клиента. Часто Child SA есть только на 10.8.0.0/24, а LAN в политике нет.
Симптомы и как отличить
- Phase 1 ESTABLISHED, Child SA 0 или SA только для узкого /32.
- Лог:
TS_UNACCEPTABLE,no matching CHILD_SA config,INVALID_ID_INFORMATION. tcpdumpна WAN видит ESP или UDP 4500, на LAN тишина — уже forwarding; если ESP нет при ping — нет Child на этот интерес.
Не путать:
- Нет даже IKE — Phase 1.
- Child есть, ping нет — LAN/forwarding.
- Одинаковые LAN с двух сторон — overlapping.
- L2TP: после IPsec должен подняться PPP, не «просто TS» — L2TP.
Возможные причины
- TS сервера
10.0.10.0/24vs клиент просит0.0.0.0/0(или наоборот) без политики, которая это разрешает. - Proxy ID в site-to-site:
10.0.10.0/24↔10.0.20.0/24перепутаны местами. - P2 encryption/integrity/PFS (PFS group) не пересекаются —
NO_PROPOSAL_CHOSENуже на Child. - Протокол/порт в TS (например только TCP 3389) при проверке ICMP.
- Lifetime: одна сторона 3600s, другая жёстко не соглашается (реже на IKEv2).
- Политика «tunnel vs transport»: Windows L2TP ждёт transport, site-to-site — tunnel.
- overlapping селекторы двух CHILD_SA, strongSwan выбирает не ту.
Диагностика
1. Есть ли Child
swanctl --list-sas
ip xfrm state
ip xfrm policyWindows 11:
Get-NetIPsecMainModeSA
Get-NetIPsecQuickModeSA
Get-VpnConnection | Format-List Name, ConnectionStatus, TunnelType
Get-NetRoute -AddressFamily IPv4 | Where-Object DestinationPrefix -like '10.*'Пустой Quick Mode при живом Main Mode — вы здесь.
2. Что запросили в TS
В логе charon ищите remote TS / local TS. Сверьте с конфигом:
local_ts = 10.0.10.0/24
remote_ts = 10.8.0.0/24для site-to-site. Для roadwarrior часто remote_ts = 10.8.0.10/32 и local_ts = 10.0.10.0/24. Если клиент шлёт 0.0.0.0/0, сервер должен иметь local_ts = 0.0.0.0/0 только если вы сознательно делаете full tunnel с NAT.
3. Трафик, который должен создать SA
Некоторые реализации поднимают Child по трафику (traffic-driven). Ping на адрес вне TS никогда не создаст SA.
ping -c 2 10.0.10.10
tcpdump -n -i eth0 udp port 4500 or proto 504. Overlap
Если домашний NIC тоже 10.0.10.0/24, клиент не отправит пакет в IPsec. Это не TS сервера. Статья overlapping.
Решение
Сценарий A. TS не пересекаются
Приведите зеркало: что для левой стороны local, для правой remote. Для доступа клиента из 10.8.0.0/24 в LAN:
- шлюз:
local_ts=10.0.10.0/24,remote_ts=10.8.0.0/24; - клиент: наоборот.
Перезагрузите CHILD, не обязательно весь IKE:
swanctl --terminate --child lan-access
swanctl --initiate --child lan-accessСценарий B. Нужен full tunnel
Клиент TS 0.0.0.0/0, на сервере разрешите это и настройте NAT в WAN плюс split DNS по политике. Иначе Child встанет, интернет станет чёрной дырой. См. интернет пропадает.
Сценарий C. NO_PROPOSAL_CHOSEN на P2
Сверьте esp_proposals / AES-GCM vs AES-CBC+SHA, PFS. Отключение PFS только если старое железо не умеет — это осознанное ослабление, зафиксируйте в заявке. Не «ESP=any».
Сценарий D. ICMP не в TS
Если политика только tcp/3389, ping будет мёртв при живом RDP. Либо расширьте TS до IP (протоколы any), либо тестируйте Test-NetConnection -Port 3389.
Сценарий E. Маршруты не ставятся после Child
Windows/strongSwan могут поднять SA, но не добавить 10.0.10.0/24 в таблицу. Добавьте маршрут явно, см. маршруты.
Стенд: Child SA есть, но не на тот префикс
Частый ложный «Phase 2 не устанавливается»: swanctl --list-sas показывает CHILD с TS 10.8.0.10/32 === 10.8.0.1/32, а вы пингуете 10.0.10.10. IKE и Child есть, просто интерес LAN не запрошен. Инициируйте ping именно в LAN или swanctl --initiate --child lan-access.
swanctl --list-sas --ike office
ip xfrm policy | grep -A2 '10.0.10'
ping -c 1 -I 10.8.0.10 10.0.10.10На Windows после IKEv2 смотрите Quick Mode Remote Address. Если там только туннельный /32 — RAS не построил QM на 10.0.10.0/24. Добавьте маршрут (Add-VpnConnectionRoute) и политику TS на сервере: маршрут без SA даст исходящие plaintext в никуда или в LAN дома.
Не расширяйте lifetime Phase 1, чтобы «подтолкнуть P2». Lifetime IKE не создаёт TS. Не копируйте esp_proposals = aes128-sha1-modp1024 с древнего Cisco без записи в журнале изменений: современные strongSwan дефолты это отвергнут, и вы получите тот же NO_PROPOSAL_CHOSEN, уже на Child.
Как проверить, что проблема устранена
swanctl --list-sas
ip xfrm policy | sed -n '1,80p'
ping -c 3 10.0.10.10Должны быть Child SA с TS, покрывающими ping. Windows: Get-NetIPsecQuickModeSA непустой, Find-NetRoute -RemoteIPAddress 10.0.10.10 указывает на VPN-адаптер.
Функционально: RDP/SMB к хосту LAN, не только IKE.
Если не помогло
- Child циклически пересоздаётся — lifetime/DPD, разрывы.
- Два филиала с одинаковым
10.0.10.0/24— NAT-overlay или перенумерация. - ESP есть, payload не расшифровывается — рассинхрон ключей после NAT-перебивки, переинициируйте Child.
- Политики xfrm дублируются от старых conn —
ip xfrm policy flushтолько в простой стендовой коробке, на проде удаляйте именованный conn.
Профилактика
- Матрица TS в документации рядом с адресным планом
10.8.0.0/24/10.0.10.0/24. - Не использовать
0.0.0.0/0в site-to-site без запроса. - Мониторинг числа Child SA и ошибки
TS_UNACCEPTABLEв логе. - Имена conn = назначение (
lan-10-0-10-0), неconn1.
FAQ
Можно ли оставить TS 0.0.0.0/0 на обеих сторонах site-to-site?
Технически да, это full-mesh overlay. Практически вы туннелируете всё, включая интернет филиала. Обычно вредно.
Почему ping не поднимает SA?
Адрес назначения не входит в TS или интерес «только исходящий с уникального /32». Инициируйте с нужной стороны или swanctl --initiate.
PFS обязателен?
Современные политики часто требуют. Если одна сторона pfs=no, другая dh19 — Child не встанет. Сверьте, не отключайте «навсегда» без причины.
Windows Connected, Quick Mode пустой
Иногда RAS показывает Connected по IKE, а QM не построился. Смотрите Event Viewer RasClient и Get-NetIPsecQuickModeSA, не иконку.
Нужно ли менять Phase 1 proposals?
Только если лог P2 явно ссылается на IKE. TS_UNACCEPTABLE ключами IKE не лечится.