Короткий ответ

IPsec поднимается слоями: сначала IKE (Phase1 / IKEv2 SA) в /ip ipsec active-peers, затем IPsec SA в /ip ipsec installed-sa, затем трафик по /ip ipsec policy. Нет peer — несовпали профили, PSK, ID, или UDP 500/4500 не доходит. Peer есть, SA нет — proposal Phase2, PFS, трафикселекторы. SA есть, пинга нет — policy/NAT/FastTrack, не «ещё раз PSK».

Не перебирайте шифры списком из форума. Сверьте один профиль и один proposal с другой стороной (Cisco/Forti/второй ROS). NAT-T обязателен, если кто-то за NAT: UDP 4500, не только ESP 50.

Симптомы и как отличить

Лог ipsec пишет NO-PROPOSAL-CHOSEN, AUTHENTICATION_FAILED, invalid cookie. WinBox IPsec → Active Peers пуст.

Слой живСлой мёртвСмысл
нет UDP 500 на input statsвсёfirewall/WAN
active-peers нетPhase1профиль, PSK, ident
peers естьнет installed-saPhase2/policy
SA естьнет ping LANмаршруты/policy, FastTrack

Возможные причины

  1. Разная версия IKE (IKEv1 vs IKEv2), hash/enc/DH group.
  2. PSK и id (FQDN vs auto vs IP 203.0.113.10).
  3. За NAT нет nat-traversal=yes, нет UDP 4500.
  4. Policy src-address=192.168.88.0/24 dst-address=192.168.10.0/24 не зеркальна.
  5. masquerade хватает IKE раньше policy (нужен exclude или ipsec-policy=out,none аккуратно).
  6. Часы: IKE чувствителен к большому drift — NTP.
  7. generate-policy vs статическая policy — два режима, не оба сразу без понимания.

Диагностика

/ip ipsec profile print
/ip ipsec peer print
/ip ipsec identity print
/ip ipsec proposal print
/ip ipsec policy print
/ip ipsec active-peers print
/ip ipsec installed-sa print

Фильтр:

/ip firewall filter print stats where chain=input

Нужны accept UDP 500, UDP 4500, и часто protocol=ipsec-esp с WAN, если NAT-T не инкапсулирует (за NAT достаточно 4500).

Лог:

/system logging add topics=ipsec,!packet action=memory
/log print where topics~"ipsec"

!packet чтобы не утонуть. После разбора — удалите подробный logging.

Время:

/system ntp client print
/system clock print

Решение

Сценарий A. Согласовать Phase1 (пример IKEv2)

Стороны должны совпасть. Пример согласованный, не «единственно верный»:

/ip ipsec profile
add name=ike2 hash-algorithm=sha256 enc-algorithm=aes-256 dh-group=modp2048 nat-traversal=yes
/ip ipsec peer
add address=198.51.100.20/32 exchange-mode=ike2 name=peer-b profile=ike2

PSK:

/ip ipsec identity
add peer=peer-b secret="замените-на-свой-секрет"

Секрет в export — только show-sensitive на защищённый носитель.

Сценарий B. Phase2 proposal и policy

/ip ipsec proposal
add name=ph2 auth-algorithms=sha256 enc-algorithms=aes-256-cbc pfs-group=modp2048
/ip ipsec policy
add src-address=192.168.88.0/24 dst-address=192.168.10.0/24 tunnel=yes action=encrypt proposal=ph2 peer=peer-b

Зеркало на B: src/dst наоборот. pfs-group=none только если так на другой стороне — не «для простоты» против политики ИБ.

Сценарий C. NAT-T

За NAT: nat-traversal=yes в profile. Проброс UDP 500 и 4500 на 203.0.113.10, если впереди ещё CPE. masquerade не должен ломать IKE: часто делают srcnat exclude для трафика на peer IP.

Сценарий D. FastTrack

SA есть, payload нет — правила accept ipsec-policy=in,ipsec / out,ipsec выше FastTrack. См. FastTrack ломает VPN.

Как проверить, что проблема устранена

/ip ipsec active-peers print
/ip ipsec installed-sa print
/ping 192.168.10.1 src-address=192.168.88.1 count=5

Peers established, SA с ненулевыми state=established, ping с src-address LAN, не только с WAN IP. Трафик в /ip ipsec installed-sa counters растёт.

Если не помогло

  • Другая сторона Forti/ASA: часто IKEv2 + специфический ID и DPD. Сверяйте их лог, не только ROS.
  • Пересекающиеся LAN 192.168.88.0/24 с обеих сторон — NAT внутри туннеля или перенумерация, иначе policy неоднозначна.
  • GRE/IPsec vs policy tunnel — разные дизайны; не копируйте оба.

Для простого site-to-site без требований «только IPsec» рассмотрите WireGuard — меньше Phase1/2.

Профилактика

  • Карточка туннеля: IKE, DH, proposal, ID, селекторы, NAT-T.
  • NTP.
  • Мониторинг active-peers.
  • Backup до правки IPsec.
  • Не держать ipsec packet log на проде.

Как читать лог IKE, не меняя proposal каждые пять минут

Одна строка NO-PROPOSAL-CHOSEN значит: до PSK вы даже не дошли, несовпали enc/hash/DH или IKEv1 vs IKEv2. Меняйте один параметр за шаг и пишите карточку туннеля. AUTHENTICATION_FAILED — PSK или ID (IP 203.0.113.10 vs FQDN). Не путайте identity policy с peer address.

За NAT смотрите, идёт ли обмен на UDP 4500 после 500. Если 4500 drop на input, Phase1 может «почти» установиться и развалиться. ESP protocol 50 нужен, когда нет NAT-T; за NAT часто достаточно 4500.

Часы: IKE с большим drift даёт странные expire. /system ntp client на обеих сторонах. После появления active-peers не считайте задачу закрытой: без installed-sa полезной нагрузки нет — это Phase2/policy. Если SA есть, а ping нет — маршруты и NAT и FastTrack, не новый DH group.

Не копируйте «универсальный proposal» со всеми шифрами подряд: на части пиров это ломает выбор, на других раздувает CPU handshake.

FAQ

IKEv1 ещё нужен?

Только если пир древний. Для двух ROS 7 берите IKEv2.

mode-config / responder для телефона?

Это road warrior, не site-to-site policy. Не смешивайте generate-policy=port-strict с ручными LAN-LAN без схемы.

Нужен ли protocol 50 при NAT-T?

Часто весь IPsec в UDP 4500. Если обе стороны с белыми IP без NAT — ESP 50 может идти напрямую; тогда filter должен его пускать.

XAuth vs certificate?

PSK проще и слабее операционно (утечки). Сертификаты — /certificate. Не выдумывайте CA, используйте нормальный выпуск.

Почему после смены WAN IP туннель мёртв?

Peer address= статический. Обновите IP или DNS в peer, если используете FQDN (в ROS peer чаще IP). DynDNS — отдельная обвязка.

Чем policy tunnel отличается от IPsec поверх GRE/VTI?

Policy tunnel шифрует по селекторам src/dst без отдельного интерфейса: маршруты в main могут остаться default в WAN, а policy перехватывает совпавший префикс. GRE/VTI даёт интерфейс, на который вы рисуете /ip route как на wg0. Не включайте оба на одни и те же 192.168.88.0/24192.168.10.0/24 без схемы: получите двойной encapsulation или непредсказуемый selector. Для двух ROS 7 чаще достаточно policy или перехода на WireGuard. Карточка туннеля должна явно назвать дизайн.