From 09c860463ac5fa3c941180f0818fabd0efa6f6b7 Mon Sep 17 00:00:00 2001 From: ochenstarik-ui <267932263+ochenstarik-ui@users.noreply.github.com> Date: Fri, 23 Oct 2026 16:33:00 +0700 Subject: [PATCH] docs: resolve direct VPN hold with verified local proxy exception --- .../codex/done/2026-10-23-vps-ru-de-setup.md | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/agents/codex/done/2026-10-23-vps-ru-de-setup.md b/agents/codex/done/2026-10-23-vps-ru-de-setup.md index 653a4bd..edb4b38 100644 --- a/agents/codex/done/2026-10-23-vps-ru-de-setup.md +++ b/agents/codex/done/2026-10-23-vps-ru-de-setup.md @@ -1,6 +1,6 @@ # RU/DE VPS — настройка 23.10.2026 -**База: PASS. Серверная связка: PASS внешним контролем DE и локальным клиентом через SSH. Прямой клиент из текущей сети этой машины: HOLD.** Полную приёмку этого конкретного публичного пути не объявляю. Перед переносом семьи нужен контроль с её фактической сети. Финляндия и Дания не затронуты. +**База и прямой VPN-вход из текущей сети: PASS.** Первоначальный HOLD устранён точечным исключением RU-IP из локального прозрачного прокси. Обычный REALITY-клиент без SSH выходит в зарубежный Интернет через DE, к российскому сервису через RU. Другая сеть и устройство семьи проверяются при переносе. Финляндия и Дания не затронуты. ## Основание и исходники @@ -54,15 +54,25 @@ Host keys (Ed25519), зафиксированы при первом контак | Путь клиента | Зарубежный запрос api.ipify.org | Российский запрос к сервису Яндекса | Статус | | --- | --- | --- | --- | -| Эта машина → публичный RU443, обычный REALITY | TLS error35 | TLS error35 | HOLD | +| Эта машина → публичный RU443, до исправления | TLS error35 | TLS error35 | исторический HOLD, устранён | +| Эта машина → публичный RU443, после исправления | фактический IP=DE_IP | фактический IP=RU_IP | PASS, без SSH | | Эта машина → SSH-L к тому же RU443 → REALITY | фактический IP=DE_IP | фактический IP=RU_IP | PASS, это SSH-путь | | Временный клиент на DE → публичный RU443 → DE | фактический IP=DE_IP | фактический IP=RU_IP | PASS, внешний контроль публичного входа | Российская проверка: `https://ipv4-internet.yandex.net/api/v0/ip`; ответ сопоставлен с RU_IP в памяти, сам IP не журналировался. 2ip.ru вернул HTTP-ошибку и не использовался как положительное доказательство. -В прямом локальном пути REALITY получил настоящий маскирующий сертификат вместо принятой REALITY-аутентификации. UUID, SNI, short ID, private/public pair и реально загруженные настройки совпадают. Microsoft и Cloudflare на обоих VPS доступны с TLS1.3 и валидной цепочкой. Альтернативные SNI/fingerprint и очистка proxy env только у дочернего клиента не устранили наблюдение. Через SSH к тому же слушателю и с внешнего DE оно не воспроизводится. **Причина конкретного публичного пути локализована, но не установлена полностью**; утверждать доказанный MITM/DPI или полную готовность семейного входа из текущей сети нельзя. По разрешённому fallback оставлены рабочая база, панели и проверенная серверная связка; без дальнейших изменений глобальной сети хоста. +Первоначально REALITY получал маскирующий сертификат, хотя UUID, SNI, short ID, private/public pair и загруженные настройки совпадали. Через SSH и с DE ошибки не было. Перебор fingerprint/SNI/версии не устранил исходный отказ; это историческое наблюдение. + +### Прямой HOLD устранён — дополнительное поручение владельца + +На этой машине активен `xray-transparent.service`: `/usr/local/sbin/xray-transparent-up` перенаправляет TCP вне `bypass4` на локальный Xray12345. RU-IP отсутствовал в исключениях. `ip route get` показывал физический интерфейс, но не последующий NAT redirect. До исправления пять отправленных ClientHello не дали ни одного пакета в ограниченном по времени захвате входящего RU443; публичный RU-IP действительно назначен интерфейсу. Часы совпадают, min/maxClientVer/maxTimeDiff не заданы. Причина HOLD — локальный прозрачный перехват; внешний DPI/MITM не заявляется. + +После аутентификации владельца штатным `pkexec` добавлен **только RU-IP** в действующий nft set `inet xray_transparent bypass4` и тот же список startup script. Перед изменением исходный root-owned script и JSON активного set сохранены в локальном `/root/codex-ru-direct-before-*` (0700). Проверены IPv4, права, сохранение прежних CIDR/redirect, идемпотентность формирования патча; `bash -n` и `nft -c` PASS. Запись атомарная, при её неудаче предусмотрен rollback добавленного элемента. Общий прокси не останавливался и не перезапускался; RU/DE конфигурации, ключи и тестовый клиент не менялись. FI/DK не затронуты. + +Временный клиент Xray26.10.10 подключался к публичному RU443 обычным VLESS+Reality. Proxy env удалены у клиента и curl; SSH/dialerProxy в клиентском data path отсутствуют. SSH использован только для административного захвата на RU, без forwarding443. Оба запроса сначала PASS, затем отдельный свежий клиент повторил оба PASS: `api.ipify.org` видит DE_IP, API Яндекса RU_IP, curl exit0. На RU совпали **2 из2 префиксов ClientHello** — SHA-256 первых76байт отправленного/принятого handshake; fallback «received real certificate» отсутствует. Прямой вход из текущей сети принят. Персистентный script после записи прошёл `bash -n`; перезагрузка этой машины/перезапуск общего прокси ради проверки не выполнялись. + +Тестовая ссылка только `/home/ochenstarik/srgfd/vpn_test_link.txt` (0600), не ротировалась. При переносе проверить фактическое устройство/сеть семьи; до переноса FI не переустанавливать. -Тестовая ссылка: только `/home/ochenstarik/srgfd/vpn_test_link.txt` (0600). Не передавать семье как полностью принятую до проверки её фактической сети. Не переустанавливать/переносить FI до переезда семьи. ## Доступ к панелям @@ -256,7 +266,7 @@ Panel DB (без path/credentials): ## Границы результата и следующая приёмка -- Внешний публичный контроль DE и оба egress-направления PASS; прямой клиент с текущей сети этой машины HOLD. Следующее необходимое действие — проверить owner-test из фактической сети семьи/другой клиентской сети и при необходимости разбирать именно этот публичный первый hop. Связку/ключи вслепую не ротировать. +- Прямой публичный вход из текущей сети и оба egress-направления PASS после локального исключения RU-IP. Проверка другой сети/устройства семьи и полный вход владельца своим приватным PuTTY-ключом остаются отдельными действиями. - Публичная панель, публичные подписки, Telegram-ноды, AI-агенты и WARP не включались. Новых дополнительных мониторов/автоматизаций нет; прежний тик30 не возобновлялся. - Для послеустановочного восстановления оставлены согласованные SQLite checkpoints и локальные initial/daily snapshots с проверенными checksum. Локальная копия не заменяет отдельное внешнее хранилище; offsite не включался. - Этот PR содержит только данный обезличенный отчёт. Code PR20 отдельный, автор не вливает. Прежний release gate для новых PR/документов без CI не обходится.