Compare commits
2 commits
main
...
codex/ru-f
| Author | SHA1 | Date | |
|---|---|---|---|
| 3c32e12d7c | |||
| 93990b12b5 |
1 changed files with 56 additions and 0 deletions
56
agents/codex/done/2026-10-23-ru-family-subscriptions.md
Normal file
56
agents/codex/done/2026-10-23-ru-family-subscriptions.md
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
# RU family subscriptions — операционная приёмка 23.10.2026
|
||||||
|
|
||||||
|
Задание CODEX-ru-family-subscriptions.md выполнено на RU. DE проверен только на чтение; FI/DK и системный proxy домашней машины не менялись. Операционная приёмка PASS; этот PR содержит только отчёт и не заменяет независимое ревью.
|
||||||
|
|
||||||
|
## Одна запись на человека
|
||||||
|
|
||||||
|
Владелец уточнил, что дубли пользователей с разными настройками не нужны, и самостоятельно переименовал/прикрепил клиентов. Финальный результат сохраняет эти изменения: Виктор, Яна, Ярик, Саша, Сервера — ровно пять глобальных Clients. У каждого один UUID, один subId, одинаковые неограниченные настройки без срока, привязка ко всем трём inbound. Идентичность сверена с новым checkpoint после правок владельца. Устаревший откат остановлен, чтобы не затереть его изменения.
|
||||||
|
|
||||||
|
Каждая стабильная подписка содержит в порядке: «⚡ Авто», «🇩🇪 Германия», «🇷🇺 Россия». Авто и Германия отправляют RU-направления напрямую, прочие — через DE; Россия отправляет всё напрямую. Авто использует leastLoad по vpn-, fallback blocked. Прежние outbounds сохранены, прежние routing rules сохранены в прежнем порядке.
|
||||||
|
|
||||||
|
## TLS и доступ
|
||||||
|
|
||||||
|
Публичная подписка — HTTPS sub.ochenstarik.ru на TCP2096; порт обязателен, поскольку TCP443 занят Reality. Случайный путь не менее 32 символов, обновление раз в 12 часов. Старый стандартный путь возвращает404. Панель2053 слушает только loopback, UFW не открывает её наружу. VPN443/24443/24444 и TLS2096 доступны согласно назначению; HTTP80 после challenge закрыт.
|
||||||
|
|
||||||
|
После обновления DNS все пять ссылок проверены обычным curl из текущей сети: HTTP200, нормальная проверка TLS, без подмены DNS и SSH data tunnel. Сертификат Let's Encrypt установлен; certbot.timer включён. Реальный renewal dry-run с --no-random-sleep-on-renew завершился успешно. Pre/post hooks временно открывают/закрывают80, deploy hook перезапускает x-ui. Первая попытка ожидала случайную задержку certbot и была прервана по таймауту; проверки сертификата не отключались.
|
||||||
|
|
||||||
|
Секретные URL сохранены только в операторском family_subscriptions.txt (0600) в согласованном защищённом каталоге. UUID, subId, Reality private keys, реальные адреса серверов и случайные пути в этот отчёт не включены. Импорт в Happ на телефонах выполняет владелец.
|
||||||
|
|
||||||
|
## Причина нестабильности и реальные проверки
|
||||||
|
|
||||||
|
У исходного inbound camouflage target и набор разрешённых SNI не совпадали: подписка выбирала случайное постороннее имя. На всех трёх inbound установлен согласованный проверенный TLS1.3 target/SNI www.microsoft.com; ключи самостоятельны, старый ключ Германии сохранён. После исправления все 15 профилей (5 × 3) прошли проверку зарубежного и российского направления. Временные клиенты не изменяли системный proxy и были остановлены.
|
||||||
|
|
||||||
|
Для российского IP использована страница Интернетометра Яндекса с проверкой отображаемого IPv4. Его /api/v0/ip возвращал loopback даже напрямую с RU и не использован как доказательство маршрута. Контроль страницы с RU и текущего DE давал разные ожидаемые роли; в семейных профилях российская страница показывала RU. Зарубежный IP соответствовал DE для Авто/Германии и RU для России. Тела ответов с адресами не публикуются.
|
||||||
|
|
||||||
|
## Отказ и восстановление
|
||||||
|
|
||||||
|
Отдельная nft-таблица на RU блокировала только RU→DE TCP24443. Независимое автоматическое удаление через60с включено до правила. Пять проб на0.0/4.9/9.8/14.7/17.6с подтвердили отказ зарубежного Авто без тихого выхода через RU; российские назначения Авто и строка Россия продолжали работать. Это пять проб, а не непрерывная запись всего окна отказа.
|
||||||
|
|
||||||
|
Правило удалилось автоматически, Авто восстановился через DE; общая длительность проверки139.5с. leastLoad учитывает историю burst-измерений, поэтому возврат не мгновенный. Сейчас зарубежный выход один; сравнительная скорость и переключение между несколькими выходами не заявлены проверенными. После добавления FI/DK требуется отдельная многосерверная приёмка.
|
||||||
|
|
||||||
|
## Аудит и восстановление
|
||||||
|
|
||||||
|
x-ui active, certbot.timer enabled; временная fault-таблица отсутствует, собственные fault/rollback timers остановлены. Согласованные root-only snapshots: исходный /root/codex-family-before-20261023 и сохраняющий правки владельца /root/codex-family-before-final-20261023; каталоги0700, БД0600. Финальный accepted marker защищает от позднего устаревшего отката. В просмотренном журнале x-ui за последние2ч текущие семейные секреты не обнаружены.
|
||||||
|
|
||||||
|
DE сверён с runbook без изменений: exit24443 включён, firewall только от RU, домашний443 сохранён. Отдельный runbook: [PR24](https://git.ochenstarik.ru/ochenstarik/lightweight-server/pulls/24), docs/runbooks/ru-hub-add-exit.md. Скрипт установки не добавлен: текущий API различает глобальные Clients, DTO и формы; для пяти записей выбран проверяемый операторский runbook.
|
||||||
|
|
||||||
|
Санитизированные доказательства сохранены локально в reports/ru-family-20261023 и постоянном artifact bundle. Основные SHA256:
|
||||||
|
|
||||||
|
- acceptance-proof.json: c9835ca9bfab097882904505b96e7599bc6ebe04869474ab4fd139cfc4622ccf
|
||||||
|
- family-proof.json: 33522f9f0eb7826c60a9c8cac8afa22a9f2db0b0ab14accdd7a105de8fca9f8e
|
||||||
|
- fault-proof.json: 51a5d25e53e3cca4f7b4440fcffaf5c44a7909c57a251003cdb8d802c65241e7
|
||||||
|
- renewal-proof.json: 51b59def3d7cb5a9fc1ac1df2c01487e7cc6400345f8d8e22fa499261c656aa7
|
||||||
|
|
||||||
|
CI и разрешённое независимое ревью проверяются отдельно на точном SHA PR. Самостоятельного слияния отчёта без review gate нет; automation30 не возобновлялась, новые KAgent/Telegram прогоны не запускались.
|
||||||
|
|
||||||
|
## Исправление после пользовательского сбоя: транспорт RU→DE
|
||||||
|
|
||||||
|
Позднее владелец сообщил, что Германия не работает; на скриншоте Happ Авто также давал таймауты. Сбой воспроизведён: все три зарубежные контрольные точки через Германию/Авто не проходили, Россия и RU-исключения работали. x-ui обоих серверов active, TCP RU→DE24443 доступен, target/SNI согласованы, прямой интернет DE исправен, временной fault-таблицы нет.
|
||||||
|
|
||||||
|
На RU отдельным временным клиентом выполнен чередующийся A/B chrome/firefox/chrome/firefox с неизменными реквизитами vpn-de. В обеих chrome-пробах ipify/gstatic дали таймауты; в обеих firefox-пробах HTTP200/204. Подтверждена зависимость работоспособности от TLS fingerprint; конкретный механизм сетевой фильтрации не установлен.
|
||||||
|
|
||||||
|
Перед изменением сохранён согласованный SQLite snapshot /root/codex-de-fingerprint-20261023 (0700/0600) и шаблон. Кандидат проверен native Xray run -test; штатным API изменён только vpn-de.streamSettings.realitySettings.fingerprint chrome→firefox. Автоматический ограниченный rollback подготовлен до применения, затем отменён после проверок. Правила, ключи, клиенты, UUID/subId, подписки, firewall и DE не менялись. Панель остаётся через SSH-туннель по прямому ответу владельца; публичный web-доступ не открывался.
|
||||||
|
|
||||||
|
После исправления матрица всех15профилей дала14 PASS и одну неуспешную параллельную пробу Авто/Яна (оба запроса). Отдельная повторная проверка этой строки, Германии/Виктор и Авто/Виктор дала3 PASS с правильными DE/RU ролями; первоначальный неуспех сохранён в доказательствах, не замаскирован. Итоговый аудит подтвердил единственный ожидаемый diff шаблона, x-ui active, rollback отменён. Это исправление текущего транспорта, а не повторный outage-тест или изменение FI/DK.
|
||||||
|
|
||||||
|
Дополнительно подготовлены локальные личные QR подписок (0600), независимое декодирование zbar5/5 и свежая загрузка HTTPS5/5. Публичный subURI RU уже был правильным; происхождение показанного владельцем QR с127… не воспроизведено, поэтому не объявляется доказанной причиной серверного сбоя.
|
||||||
Loading…
Reference in a new issue