Короткий ответ
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-sa | Phase2/policy |
| SA есть | нет ping LAN | маршруты/policy, FastTrack |
Возможные причины
- Разная версия IKE (IKEv1 vs IKEv2), hash/enc/DH group.
- PSK и
id(FQDN vs auto vs IP203.0.113.10). - За NAT нет
nat-traversal=yes, нет UDP 4500. - Policy
src-address=192.168.88.0/24 dst-address=192.168.10.0/24не зеркальна. - masquerade хватает IKE раньше policy (нужен exclude или
ipsec-policy=out,noneаккуратно). - Часы: IKE чувствителен к большому drift — NTP.
generate-policyvs статическая 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=ike2PSK:
/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=5Peers 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/24↔192.168.10.0/24 без схемы: получите двойной encapsulation или непредсказуемый selector. Для двух ROS 7 чаще достаточно policy или перехода на WireGuard. Карточка туннеля должна явно назвать дизайн.