11 KiB
Домашняя машина → DE:443: проверка и переключение
Дата: 23.10.2026, Asia/Novosibirsk. Задание: актуальная редакция
CODEX-home-xray-via-ru.md, основной выход напрямую DE, семья через RU отдельно.
Операционная приёмка: PASS. Рабочий xray-vpn использует de-direct, существующий
выход сохранён резервом. Переключение на резерв и возврат на DE проверены настоящей
60-секундной блокировкой транспорта DE. Этот PR содержит только отчёт; его CI и
разрешённое независимое ревью нужны отдельно и не заменяются операционной проверкой.
Сохранённая конфигурация
- Все три исходных inbound сохранены побайтно эквивалентными JSON-значениями: локальные SOCKS 10818, HTTP 10819 и transparent 12345. Исходный DNS не изменён; отдельных правил маршрутизации до работы не было.
- Добавлены
de-directи балансировщикhome-de-primary:leastPingвыбирает наблюдаемый DE,fallbackTagуказывает наhome-reserve-current. Это исходный единственный VLESS outbound с прежними настройками и socket mark 255. Другие несуществующие в исходном конфиге DK/FI профили не создавались. - Первый loopback outbound возвращает запрос в routing под отдельным inbound tag; только этот tag направлен в балансировщик. Observatory проверяет DE и резерв через HTTPS generate_204, интервал 5 секунд. Конфиг проверен установленным Xray 26.3.27; бинарник не обновлялся.
- В активный
bypass4добавлен DE, тот же элемент записан в startup script. Финальная проверка подтвердила, что единственная разница startup script — это добавление DE. Прежние элементы, включая RU, сохранены. Адрес существующего резервного outbound в bypass не входил; его прежний socket mark 255 сохранён, обход перехвата и работоспособность подтверждены испытанием резерва. Других изменений общего firewall или маршрутов не делалось. - Приватные адреса, UUID, Reality keys и URI в отчёт не включены. Серверы FI/DK не посещались и не менялись; на DE выполнена только проверка состояния клиента и отсутствия лимитов. Серверная конфигурация этой задачей не изменена.
Устранение нестабильности перед переключением
Прямые TCP-соединения к DE:443 проходили 8/8 через физический интерфейс. При этом временный VLESS-клиент с Chrome fingerprint давал таймауты, особенно при семи одновременных HTTPS-запросах; балансировщик мог уходить на резерв. В сравнительном тесте Firefox fingerprint выполнил те же запросы без таймаутов. Firefox оставлен только в новом локальном outbound. Настройки серверного клиента и исходный файл с URI не переписывались.
Это подтверждённое различие поведения TLS-профилей в текущей сети; конкретное сетевое устройство или механизм, вызвавший таймаут Chrome, не локализован. С Firefox до переключения прошли три полных цикла через временный балансировщик, каждый с внешним выходом DE. Старый системный Xray при этих тестах продолжал работать.
Проверки доступности
Все строки ниже: curl exit 0, обычная проверка TLS включена. Системные проверки выполнялись без переменных proxy и без SSH-туннеля.
| Сервис | Старый системный путь | Временный DE, 3 цикла | Новый системный DE | Резерв при блокировке | После возврата DE |
|---|---|---|---|---|---|
| api.anthropic.com/v1/models | 401 | 401 | 401 | 401 | 401 |
| api.openai.com/v1/models | 401 | 401 | 401 | 401 | 401 |
| chatgpt.com | 403 | 403 | 403 | 403 | 403 |
| github.com | 200 | 200 | 200 | 200 | 200 |
| git.ochenstarik.ru | 200 | 200 | 200 | 200 | 200 |
| api.telegram.org | 302 | 302 | 302 | 302 | 302 |
| Yandex Internet IP API | 200 | 200 | 200 | 200 | 200 |
401 — ожидаемый ответ API без ключа, не проверка авторизованного inference. ChatGPT вернул тот же HTTP 403, что до изменения; признаков country-block в ответе не обнаружено. Успешный вход или работа веб-сессии ChatGPT этим тестом не подтверждаются. Telegram проверен HTTP-запросом, сообщения/OTP не отправлялись.
Внешний IP нового системного пути совпал с DE; сохранённые SOCKS и HTTP также
дали DE. Настоящий git ls-remote от владельца к lightweight-server завершился
успешно. Оба сервиса active и enabled. Текущая сессия Codex продолжила работу.
Откат и реальный отказ
Перед заменой конфига сохранена root-only копия и включён независимый
systemd-run --on-active=3min, восстанавливающий исходный конфиг и перезапускающий
Xray, если приёмка не подтверждена. Подтверждение и callback синхронизированы
блокировкой; принятый конфиг проверяется по SHA перед отменой таймера.
Первая попытка вернула старый конфиг: проверка синтаксиса собственного nft fault
script не прошла. Также выявлено, что обычный restart требуемого Xray вызывает
перезапуск зависимого xray-transparent. Это фактическое отклонение первой попытки,
а не утверждение о неизменности сервиса на протяжении всей работы. Оба сервиса
восстановились. Затем синтаксис nft был проверен до переключения; применён
административный restart с --job-mode=ignore-dependencies, без изменения unit-файлов.
В финальной попытке timestamp активации transparent остался прежним.
После положительных системных проверок независимый 60-секундный таймер удаления был включён до добавления отдельной nft-таблицы. Правило блокировало только исходящий TCP443 к DE, то есть VPN transport; SSH-порты не блокировались. Внешний выход совпал с сохранённым исходным резервным выходом, вся матрица ответила. Таблица автоматически исчезла, затем внешний выход снова совпал с DE и матрица повторно прошла. Финальная попытка заняла 74,4 секунды. Только после этого отменён трёхминутный откат. Финальный аудит не нашёл ни одной fault-таблицы; собственные таймеры остановлены, новых мониторов не создано.
Права и доказательства
| Файл в /etc/xray | Владелец | Режим после работы |
|---|---|---|
| config.json | root:root | 0600 |
| config.json.bak-fi-20261016 | root:root | 0600 |
| config.json.pre-transparent | root:root | 0600 |
Каталог резервных копий /root/codex-home-de-20261023 имеет 0700, все файлы внутри
0600. Там хранятся исходный конфиг, startup script, nft snapshot и закрытые журналы.
Хэш итогового конфига:
251ee155b45b262c5a1daff2186d78278bf23244520bee1faacdd292d89fc316.
Санитизированные доказательства владельца:
/home/ochenstarik/.codex/reports/home-de-20261023/.
Финальный final-proof.json SHA256:
122499e03f818e48a48d8f49505f480101f26cc44d03611de7c729c19686a750.
Включает матрицы, приёмку, откат, резерв, failback, stat и проверки инвариантов.
Дополнительные файлы сохраняют неуспешные промежуточные проверки, не подменяя их PASS.
При ближайшей перезагрузке владельцем
Машина этой задачей не перезагружалась.
- Проверить active/enabled у xray-vpn и xray-transparent.
- Проверить наличие DE и прежнего RU в bypass4; не публиковать значения.
- Проверить внешний выход DE системным запросом и через оба прежних proxy-входа.
- Проверить Forgejo/git и используемые API; убедиться, что конфиги остались root:root 0600.
- При проблеме при владельце и через pkexec восстановить root-only original.json, перезапустить только xray-vpn с ignore-dependencies и проверить старый выход.
Основания схемы: Xray routing, loopback, observatory, systemctl job mode.