Olvery

Документация к платформе «Olvery»

Инструменты пользователя

Инструменты сайта


runbooks:polytech-skud

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
runbooks:polytech-skud [2026/10/02 04:11] – 2u1L: правило владельца SSH и клиентский рецепт Boris Rudakovrunbooks:polytech-skud [2026/10/11 18:31] (текущий) – OLV-4958: restore local Go TLS compatibility; retain gw32-only real endpoint Boris Rudakov
Строка 14: Строка 14:
 Этот раздел меняет только документационный рецепт. Ключи, ''known_hosts'', SSH-настройки и серверы этим amendment не меняются; production writes по-прежнему требуют разрешения владельца. Этот раздел меняет только документационный рецепт. Ключи, ''known_hosts'', SSH-настройки и серверы этим amendment не меняются; production writes по-прежнему требуют разрешения владельца.
  
-===== Архитектура интеграции =====+===== Действующая схема (11.10.2026) =====
  
-<code> +**Все внешние соединения от имени Olvery — только через gw32 (89.20.105.168). Внешние прокси и другие выходы запрещены, включая аварии и диагностику. Локальный Go TLS-транспорт APACS сохраняется по уточнению Бориса: он обходит несовместимость IIS/OpenSSL и не является альтернативным выходом.**
-lk.olvery.ru  ──►  back-nfc (PassService) +
-              ──►  back-acs (ExternalPassController) +
-                 ──►  ApacsProxyDriver (PHP, retry +5) +
-                    ──►  apacs-proxy (Go, localhost:8099 в контейнере back-acs) +
-                       ──►  СКУД Политех (mTLS, 192.168.200.138:443) +
-                          └─ маршрут через IPSec srv-pstu-vpn.tmpm +
-</code>+
  
-===== Источники алертов =====+  ApacsDriver → localhost:8099 (Go TLS) → gw32 → VPN Политеха (ovpstu) → 10.47.30.20:7010
  
-^ Алерт                          ^ Слой              ^ Кто чинит         ^ +Провайдер34 (production локация36), драйвер ''apacs'', ''driverOptions.api_url=https://10.47.30.20:7010/''. PHP передаёт операции по локальному HTTP; Go выполняет HTTPS к настоящему APACS, ''APACS_UPSTREAM_URL=https://10.47.30.20:7010/''. Без подмены назначения. SNAT на выданный PPP-адрес выполняет штатный mpd. Mock-провайдеры используют свои endpoint и не направляются на Политех.
-| ''PolytechSKUDIntegrationDown''| end-to-end        | смотреть оба ниже | +
-| ''PolytechApacsProxyDown''     | наш Go-прокси     | мы                | +
-| ''PolytechSKUDHostUnreachable''| хост Политеха     | Политех + IPSec   | +
-| ''PolytechSKUDHighLatency''    | end-to-end >20с   | мы (диагностика)  |+
  
-===== Когда красное — как локализовать =====+Адрес PPP назначает сервер Политеха: в 21:30 11.10 получен ''10.100.68.2'', peer ''10.100.68.1''. Адрес не закрепляется вручную; перед передачей текущего источника читать ''ifconfig ovpstu''.
  
-==== 1. Если только PolytechSKUDHostUnreachable ====+===== Локализация =====
  
-Хост СКУД Политех (192.168.200.138:443) не отвечает на TCP-connect с +  ssh root@gw32 ifconfig ovpstu 
-gw1.olvr через IPSec.+  ssh root@gw32 /usr/local/sbin/swanctl --list-sas --ike olvr-pstu 
 +  ssh root@srv-prod2.olvr docker exec tpark-it.back-acs.latest supervisorctl status apacs-proxy
  
-  * Проверь алерт ''IpsecTunnelDown'' — если красный, разорван туннель +Health ''/api/acs/v1/health/apacs-skud'' проходит через тот же Go TLS к настоящему APACS. ''http://127.0.0.1:8099/health'' внутри контейнера проверяет только жизнь Go-процесса. Не подменять первое вторым. TCP/TLS timeout означает недоступность, но сам по себе не определяет виновную сторону. При отсутствии ответа нужны metadata SYN/SYN-ACK/RST на принимающем интерфейсе сервера, без payload.
-    через ''srv-pstu-vpn.tmpm''. +
-  * Если IPSec зелёный — хост лежит у них. Звонить Политеху, открыть +
-    им встречную задачу.+
  
-==== 2. Если только PolytechApacsProxyDown ====+Пользовательский результат — выпуск или удаление пропуска. Health и наличие VPN не подменяют его. Изменяющие пропуска операции и открытие двери не используются как обычная сетевая проба.
  
-(будет активен после раскатки OLV-3707 на прод)+===== Конфигурация =====
  
-Наш Go-прокси ''apacs-proxy'' внутри контейнера ''tpark-it.back-acs.latest'' +На gw32: strongSwan named ''olvr-pstu'' и mpd5 bundle ''OlvrPstu'', iface ''ovpstu''. Маршруты ''10.47.30.20/32'' и ''82.179.113.10/32'', MTU/MRU1370, штатные NAT/tcpmssfix. Файлы ''/usr/local/etc/swanctl/conf.d/olvr-pstu.conf'' и ''/usr/local/etc/mpd5/olvr-pstu.conf''. Пароли не менять.
-не отдаёт ''/health''.+
  
-  * <code>ssh -o StrictHostKeyChecking=accept-new srv-prod-app docker exec tpark-it.back-acs.latest curl -sS localhost:8099/health</code> +На srv-prod2 и test srv-app: один PHP-драйвер с локальным Go TLS. Бинарник собирается Docker из ''apacs-proxy/''; supervisor запускает его, слушает только localhost:8099. Реальный upstream задан выше, прежний контракт self-signed сертификата сохранён. Production image ''olvery/back-acs:owox-go-20261011'', test ''olvery/back-acs:owox-go-test-20261011''. Production starter ''/srv/restore/runtime/start-production-php.sh'' выбирает Go-image; test create config ''/root/OwOX-apacs-go/state-final/create.json'' сохраняет его после пересоздания.
-  * Если ответ не ''200 {"status":"ok"}'' — рестарт контейнера: +
-    <code>ssh -o StrictHostKeyChecking=accept-new srv-prod-app docker restart tpark-it.back-acs.latest</code> +
-  * Если рестарт не помог — смотреть логи Go-прокси: +
-    <code>docker logs tpark-it.back-acs.latest 2>&1 | grep -i apacs-proxy</code> +
-  * Частые причины: проблемы с mTLS-сертификатами Политеха, истёкший +
-    клиентский cert, конфиг ''APACS_PROXY_URL'' / провайдера в БД.+
  
-==== 3. Если PolytechSKUDIntegrationDown красный, а оба нижних зелёные ====+Общий выход через DHCP gateway на gw32. На Linux VPN не включать: наблюдался kernel fault L2TP/XFRM. Общий mpd на gw32 не перезапускать — он держит WAN PPPoE.
  
-End-to-end проба ''POST /api/nfc/v1/pass'' отдаёт не-2xx-и-не-400, а +SSO (''82.179.112.230:443'') — отдельное прямое соединение через WAN gw32. Рецептов альтернативного выхода нет. Точный текущий остаток — OLV-4958.
-наш Go-прокси и их хост по отдельности живы — значит проблема +
-**между** back-nfc и back-acs. +
- +
-  * Проверь логи back-nfc (PassService, AcsApiService.post). +
-  * Проверь логи back-acs (ExternalPassService.create) — есть ли вообще +
-    запрос, или back-nfc не дошёл до него? +
-  * Если запрос дошёл и сразу 5xx — лезть в ExternalPassController. +
- +
-==== 4. Если PolytechSKUDHighLatency, но Down-алертов нет ==== +
- +
-Интеграция работает, но >20с на пробу (baseline 12с, max за 24h +
-бывает 29с). Это сигнал-разогрев — если регулярно, СКУД у них +
-тормозит. Длительная высокая latency может стать 504 (apacs-proxy +
-имеет таймаут на upstream). +
- +
-  * Открыть письмо/чат Политеху — «у нас фиксируется устойчивая +
-    высокая задержка на проверке пропусков, проверьте свою сторону». +
-  * На нашей стороне костыли не нужны — пользователь видит длинную +
-    проверку пропуска, но успех штатный. +
- +
-===== Полезные команды ===== +
- +
-==== Прямые пробы ==== +
- +
-<code bash> +
-# Наш apacs-proxy (после раскатки OLV-3707): +
-curl -sS https://lk.olvery.ru/api/acs/v1/health/apacs-proxy +
- +
-# TCP до Политеха через IPSec (с gw1.olvr): +
-ssh -o StrictHostKeyChecking=accept-new root@gw1.olvr curl -sS -m 5 -k -o /dev/null -w "%{http_code} t=%{time_total}s\n" https://192.168.200.138/ +
- +
-# End-to-end (как мониторинг): +
-curl -sS -X POST -H "Content-Type: application/json" \ +
-  -H "Authorization: Bearer <см. blackbox_exporter.yml http_post_polytech_skud>" \ +
-  -d '{"deviceId":"bebd6444-70e0-4763-9f51-9626e2420e19","locationId":36,"userId":10760,"deviceDescription":"manual"}' \ +
-  https://lk.olvery.ru/api/nfc/v1/pass +
-</code> +
- +
-==== Что куда ==== +
- +
-  * **back-acs logs**: ''ssh -o StrictHostKeyChecking=accept-new srv-prod-app docker logs tpark-it.back-acs.latest --tail 200'' +
-  * **back-nfc logs**: ''ssh -o StrictHostKeyChecking=accept-new srv-prod-app docker logs tpark-it.back-nfc.latest --tail 200'' +
-  * **apacs-proxy внутри контейнера**: ''docker exec tpark-it.back-acs.latest ps aux | grep apacs'' +
-  * **Prometheus targets**: https://prom1.olvr или ''ssh -o StrictHostKeyChecking=accept-new gw1.olvr curl localhost:9090/api/v1/targets?state=active'' +
- +
-===== История ===== +
- +
-  * **2026-04-21** OLV-3527 — добавлен ''blackbox_polytech_skud'' (1 проба end-to-end), алерты ''PolytechSKUDIntegrationDown'' / ''PolytechSKUDHighLatency''. +
-  * **2026-05-17** Полноценный инцидент 504 на ''POST /pass'' — алерт сработал штатно, но было невозможно различить «наш слой или их хост». Михаил Андреев попросил разделить. +
-  * **2026-05-26** OLV-3707 — добавлены ''blackbox_polytech_host'' (TCP до их хоста) и health-эндпоинт ''/api/acs/v1/health/apacs-proxy'' (после раскатки back-acs включается ''blackbox_apacs_proxy_health''). Алерты ''PolytechSKUDHostUnreachable'' / ''PolytechApacsProxyDown'' (последний пока закомментирован, ждёт раскатки).+
  
runbooks/polytech-skud.1790914293.txt.gz · Последнее изменение: — Boris Rudakov

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: GNU Free Documentation License 1.3
GNU Free Documentation License 1.3 Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki