fix(ipsec): обеспечить NAT и изоляцию политик для передачи данных
This commit is contained in:
1 parent
43b00e0740
commit
89de7e134b
17 files changed
+571
-25
No files matched your search
+28
-2
@@ -1,6 +1,6 @@
|
||||
# UX/UI: журнал реализации
|
||||
|
||||
Актуальное продолжение 2026-10-09: 12.5.81 внедрил исходы partial/unknown/applied, preflight конфликтов и очистку старого mode-config; native/API fault injection и isolated JWT/RBAC приняты. Backend ux-ipsec81 healthy, frontend ux-ipsec77; 7 профильных E2E прошли. Следующий12.5.82 — NAT/связность сертификатного клиента; остальные границы IPsec перечислены ниже. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-09: 12.5.82 исправил NAT без обязательного WAN, изолировал IPsec policy group и сохранил ограничения NAT/группы в истории. Production API init/client/restore/delete, сертификатный data plane, NAT Ping3/3 и capped bandwidth3s приняты; baseline восстановлен после ожидания динамических маршрутов. Backend ux-ipsec82c healthy, frontend ux-ipsec77. Следующий12.5.83 — BGP/OSPF selected/diagnostic paths: запрет опроса выключенных устройств и достоверность ошибок; затем реальные профильные сценарии маршрутизации. Этап12.5 открыт.
|
||||
|
||||
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
|
||||
|
||||
@@ -36,7 +36,33 @@
|
||||
| 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 |
|
||||
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 |
|
||||
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–81 и ограничения ниже. Runtime backend ux-ipsec81/frontend ux-ipsec77. |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–82 и ограничения ниже. Runtime backend ux-ipsec82c/frontend ux-ipsec77. |
|
||||
|
||||
## 12.5.82 — IPsec: NAT, policy group, реальная передача и полный цикл (2026-10-09)
|
||||
|
||||
**Исправления по native доказательствам.** Master NAT ссылался на несуществующий WAN list чистого CHR и получал400 после остальных записей. Теперь до изменений читаются маршруты/interfaces, выбирается единственный egress активных IPv4 defaults main; PPP/direct interface и дубликаты одного egress поддержаны, отсутствие/неоднозначность даёт409 без CA/других записей. Srcnat ограничен VPN-подсетью, конкретным out-interface и ipsec-policy=out,none. Повторный init обновляет одно owned правило; прежнее дополнительное interface-list ограничение не очищается вслепую.
|
||||
|
||||
Группа default выбирала несовместимый proposal: phase1 established/lease/online были успешны, data plane Ping0/3 и native log no proposal chosen. Изолированная группа в fixture доказала причину. Master теперь создаёт mmapp-ipsec-vpn, привязывает owned template/listener и новые персональные identities; legacy default/пустая группа owned identities на app peer мигрирует, чужие объекты/default policy сохраняются. Reuse reserved group требует managed template, foreign consumers блокируются до изменений. Delete server удаляет только reserved group со ссылкой managed template и без foreign refs.
|
||||
|
||||
**История.** Capture/canonical/body сохраняют policy-template-group и NAT out-interface/out-interface-list/ipsec-policy. Restore проверяет наличие группы и не теряет egress. Старый masquerade snapshot без egress отклоняется409. RouterOS также отклонил пустую out-interface-list как ambiguous: body больше не отправляет пустые ограничения, несовместимое снятие существующего дополнительного фильтра блокируется до записи с инструкцией ручной проверки. PKI/profile/proposal/policy definitions по-прежнему не пересоздаются историей.
|
||||
|
||||
| Контроль | Исходная проблема | Подтверждённый результат |
|
||||
| --- | --- | --- |
|
||||
| NAT master | WAN отсутствует,400 после partial init | ether1/out,none; repeat init одно правило |
|
||||
| Data plane | default proposal, Ping0/3 | owned policy group; Ping3/3 в обе стороны |
|
||||
| Интернет | До группы не проверен | CHR2 assigned198.18.82.250→8.8.8.8 Ping3/3, srcnat=true/seen-reply=true |
|
||||
| Restore/delete | Пустое interface-list400 | группа/egress/disabled восстановлены; group удалена API, default policy сохранена |
|
||||
| Cleanup | Преждевременная проверка route IDs | контроль после удаления обоих peer и короткого bounded ожидания: все14 коллекций ×2 совпали |
|
||||
|
||||
**Приёмка.** Собственный сертификатный клиент API, PKCS12 import наCHR2; dynamic assigned address применяется RouterOS, отдельный дублирующий IP наCHR2 больше не добавляется. НаCHR1 собственный bridge198.18.82.1/32; отдельные маршруты только между своими IP с pref-src через неизменённые public gateways. Production init/client/GET/restore/DELETE server прошли без ручной модификации группы в финальном сценарии. Capped UDP bandwidth3s,1,000,000bps в каждую сторону: tx-total-average955040/rx970080bps, lost-packets0; encrypted SA byte delta816906. Это smoke передачи, не максимальная пропускная способность/SLA. NAT reply destination194.226.121.150 подтвердил masquerade. [Очищенный отчёт с baseline/recheck](ux-ui/acceptance/ipsec-network-2026-10-09.json).
|
||||
|
||||
**Проверки.** test:ipsec: config/80 state checks/history/restore/progress/mutation/NAT/group, entity-snapshots tests, backend TypeScript/ESLint/diff check. Новые HTTP/unit проверки: no-write missing/ambiguous/VRF NAT, shared group inheritance, foreign refs/namespace guard, default group retained, scoped/legacy NAT restore. Исходный unused bool warning сохраняется. Frontend не изменён;7 E2E81 остаются актуальным profile evidence, полная регрессия не повторялась.
|
||||
|
||||
**Ошибки тестовой оснастки и очистка.** После ручного proof динамическая policy была ошибочно принята за новый чужой объект; cleanup остановился. Read-only ownership audit подтвердил точные29 собственных ID/атрибутов на двух CHR; они удалены после полного preflight, dynamic policy/assignedIP исчезли с peer, приватные файлы удалены. Receipt теперь пропускает auto policy/address, а статические конфигурации удаляет по точным проверенным ID. Один финальный run имел только transient route mismatch; независимый post-control подтвердил исходные4/5 маршрутов, повторный окончательный run сохранил baseline и recheck: CHR1 initialMatch=false/finalMatch=true, CHR2true/true. Не подменять этот переход утверждением о постоянном изменении ID. Flash/system files,195.195.195.195/32, default routes сохранены; пароли прежние.
|
||||
|
||||
**Runtime/происхождение.** Backend mmapp-test/backend:ux-ipsec82c/version1.0.0-test.ipsec82c, image sha256:57fdd7dbbf66091fd0710154ed7c47f284047505977e7b06d0b15bfbfd5fa57d3, healthy; frontend ux-ipsec77. Три builds82/82b/82c по новым подтверждённым отказам: NAT/WAN, proposal group, empty list restore. Финальный context82b +11 backend файлов рабочего состояния, archive d7b0ad10c248ca6c1525266d67b4953f2752f5d046d46b63262e3dc93421e280, label ipsec82c не итоговый Git SHA. Entry/node --check/pg_restore18.6 и compose --wait passed; apt cached. Приватные .env backups, миграций нет. Один локальный коммит без push.
|
||||
|
||||
Основной реальный цикл IPsec принят в перечисленных границах. Открыты сложные/экранированные DN, реальные клиентские ОС/IPv6, Portal SSO/browser auth, физические disconnect/durable retry/multi-instance, maximum throughput и полный PKI/policy/profile/proposal restore. Следующий83 — маршрутизация. Референсы интерфейса сохраняются: List9/Sheet8 из общего плана; настройки полей подтверждены [RouterOS IPsec](https://help.mikrotik.com/docs/spaces/ROS/pages/11993097/IPsec) и [Bandwidth Test](https://help.mikrotik.com/docs/spaces/ROS/pages/7962644/Bandwidth%2BTest).
|
||||
|
||||
## 12.5.81 — IPsec: частичные операции, потерянное подтверждение и права (2026-10-09)
|
||||
|
||||
|
||||
Reference in new issue
Block a user