Короткий ответ
Phase 1 (IKE SA) — это согласование криптонабора, идентичности и ключа (PSK или сертификат) по UDP 500 и, за NAT, UDP 4500 (NAT-T). Пока IKE SA нет, Phase 2 и LAN 10.0.10.0/24 не появятся. Сверьте version (IKEv1 vs IKEv2), DH/PRF/enc/integrity, remote ID и секрет. Не перебирайте алгоритмы «все сразу» на проде и не выключайте firewall на WAN.
Лог strongSwan (charon) и Windows RAS важнее зелёной галки «IPsec включён». Тишина на tcpdump udp port 500 or 4500 — сеть, не PSK.
Симптомы и как отличить
- Клиент Windows: ошибка 809 (удалённая сторона не отвечает) или 789 (для L2TP/IPsec).
swanctl --list-sas/ipsec statusallпусто по IKE.- В логе
NO_PROPOSAL_CHOSENилиAUTHENTICATION_FAILED.
Это не Phase 1, если:
- IKE SA есть, Child SA нет — Phase 2;
- это L2TP поверх IPsec — сначала IKE, затем PPP, L2TP;
- нужен более простой NAT-обход — сравните с WireGuard.
Возможные причины
- Нет UDP
500/4500доvpn.example.com(ACL, DNAT только 500 без 4500 за NAT). - Разные IKE: клиент IKEv2, сервер только v1 (или наоборот).
- Несовместимый proposal: AES-GCM vs AES-CBC+SHA, DH19 vs modp1024, PRF.
- PSK не совпал (пробел, кодировка, другой секрет на втором устройстве).
- ID:
IDrFQDN vs IP,leftid/rightidне те. - Сертификат: просрочен, не тот EKUs, клиент не доверяет CA, имя не совпадает с ID.
- NAT-T выключен, клиент за NAT — IKE проходит странно, ESP без UDP encapsulation умирает (иногда выглядит как «P1 моргает»).
- Часы: сертификатная аутентификация чувствительна к времени.
Диагностика
1. Доходит ли IKE
На сервере:
tcpdump -n -i eth0 udp port 500 or udp port 4500
swanctl --list-conns
swanctl --list-sas
journalctl -u strongswan -u strongswan-swanctl --since '10 min ago'Инициация с Windows:
Get-VpnConnection | Format-List Name, TunnelType, ServerAddress, ConnectionStatus, AuthenticationMethod
rasdial
Test-NetConnection vpn.example.com -Port 500UDP-тест PowerShell ненадёжен. Ориентир — tcpdump в момент Connect.
2. Proposal
В логе ищите предложенные и принятые трансформы. strongSwan часто пишет, какой набор отвергнут. Сверьте с swanctl.conf proposals = и с политикой Windows (PowerShell Get-VpnConnection не всегда показывает DH; смотрите RRAS/GPO или Get-NetIPsecMainModeSA после частичного успеха).
Типичный рабочий IKEv2 набор (пример, не единственный): AES-GCM и DH group 19/20. Слабый modp1024 на одной стороне и запрет его на другой — NO_PROPOSAL_CHOSEN.
3. Аутентификация
AUTHENTICATION_FAILED — PSK/сертификат/ID, не firewall. Проверьте, что секрет не закоммичен с \r. Для сертификатов:
swanctl --list-certs
openssl x509 -in /etc/swanctl/x509/vpn.example.com.crt -noout -dates -ext subjectAltNameWindows: хранилище Computer, не User, для машинного туннеля.
4. NAT-T
Клиент за NAT обязан перейти на UDP 4500. Если tcpdump показывает только 500 и обрыв — фильтр 4500 или forceencaps не согласован. Windows за NAT для L2TP требует отдельного реестра (статья L2TP); для чистого IKEv2 обычно хватает UDP 4500.
Решение
Сценарий A. Тишина на 500/4500
Откройте на WAN оба порта UDP до хоста strongSwan. DNAT: и 500, и 4500. Не подменяйте IKE TCP-прокси. Проверьте, что vpn.example.com резолвится в этот WAN IP.
Сценарий B. NO_PROPOSAL_CHOSEN
Выпишите proposal сервера и клиента в заявку. Приведите к одному списку. Пример фрагмента swanctl (адаптируйте под вашу политику, не копируйте слабые наборы):
version = 2
proposals = aes256gcm16-prfsha256-ecp256На Windows 11 IKEv2 задайте совместимый набор политикой, не «AES-256 + SHA1 + DH2» против GCM-only сервера.
Сценарий C. PSK
Смените секрет на обеих сторонах в одно окно. В swanctl — secrets { eap-... / ike-... }. Пробелы и кавычки в RouterOS/Windows — частая причина. После смены — новый Connect, старые SA сбросьте:
swanctl --terminate --ike <name>Сценарий D. Сертификат
Проверьте цепочку, CRL/OCSP при требовании сервера, SAN = vpn.example.com для серверного ID. Клиентский сертификат — отдельный шаблон, не «любой клиентский SSL». Часы NTP.
Сценарий E. ID mismatch
local.auth.id / remote.auth.id должны совпасть с тем, что шлёт пир (FQDN, Distinguished Name, IP). Лог no matching peer config — это ID, не ключ.
Как проверить, что проблема устранена
swanctl --list-sasДолжна быть IKE SA ESTABLISHED. Windows: Get-VpnConnection → Connected, Get-NetIPsecMainModeSA. tcpdump показывает обмен и переход на 4500 при NAT. Дальше проверяйте Child SA и ping 10.0.10.10 — это уже Phase 2/маршруты.
Get-VpnConnection -Name 'Office'
Get-NetIPsecMainModeSAЕсли не помогло
- IKE есть, трафика нет — Phase 2 и LAN.
- Только с одного оператора — UDP 4500 режет CGNAT, пробуйте
forceencaps=yesна обеих сторонах (документированная опция strongSwan). - Обрывы через минуту — DPD/NAT, разрывы.
- Смешали L2TP и «чистый» IKEv2 в одном профиле Windows — разведите профили.
Профилактика
- Одна матрица proposals в документации, не «как получилось на стенде».
- Мониторинг UDP 500/4500 и числа ESTABLISHED IKE.
- Сертификаты с алертами по дате, не PSK в wiki.
- NTP на шлюзе.
- Запрет IKEv1 в новых внедрениях, если нет legacy-оборудования.
FAQ
Phase 1 и Main Mode — это одно?
Для IKEv1 Main/Aggressive — режимы Phase 1. В IKEv2 термины IKE_SA_INIT / IKE_AUTH. В заявке пишите «IKE SA», чтобы не путать с Child SA.
Почему 809 на Windows?
Часто нет ответа IKE (фильтр, NAT-T, неверный IP). Это не «неправильный пароль» — пароль чаще даёт другую ошибку после ответа сервера.
Можно ли открыть ESP (протокол 50) вместо 4500?
За NAT ESP без UDP encapsulation обычно мёртв. NAT-T как раз для этого. На чистых белых IP без NAT ESP может идти, IKE всё равно нужен.
PSK совпал, всё равно AUTHENTICATION_FAILED
Смотрите ID и EAP vs PSK vs сертификат. Смешение auth = psk с клиентом, который шлёт EAP, даст тот же симптом.
Нужно ли отключать Windows Firewall для теста?
Нет. Создайте разрешающее правило на UDP 500/4500 исходящие, если его нет. Профиль Public на домашнем Wi-Fi часто режет входящее, исходящий IKE обычно проходит.