4.6 KiB
Финальная приёмка vpn-egressctl 0.2.0
Паспорт прогона
- дата: 15 сентября 2026 года;
- статус:
PASS / PRODUCTION E2E VALIDATED; - gateway:
vpn-egress-gw; vpn-egressctl:0.2.0;sing-box:1.14.0;- сервер Hysteria2:
2.12.2; - obfs: Gecko;
- endpoint:
se.api.withen.pro:2053; - TUN:
tun-sb0,172.19.0.1/30.
Это отчёт о клиентском control plane и полном пути трафика через gateway. Отдельная приёмка ядра HY2XS в него не включена. До прогона endpoint был независимо проверен официальным клиентом Hysteria 2.12.2: QUIC/Hysteria handshake, SOCKS5, HTTPS и двусторонний UDP-трафик прошли успешно.
Clean first apply
После удаления старого failed state установлен новый production URI.
vpn-egressctl check
OK: se.api.withen.pro:2053, sing-box 1.14.0
vpn-egressctl sync
Configuration applied.
После применения:
status=ok;service_active=true;config_drift=false;source_drift=false;- SHA-256 из state совпал с фактическим SHA-256 установленного config.
Зафиксированный SHA-256 итогового config:
0d888e7793bd979d212b613542070ce9349a625ddace2a0727776072b66c96ae
last_good_available=false и last_good_valid=false после этого прогона —
ожидаемое состояние. У первого успешного clean apply нет предыдущего managed
config, а последующий no-op sync не создаёт rollback predecessor.
Runtime и gateway E2E
sing-box.serviceиvpn-egress-guard.serviceактивны;tun-sb0поднят с адресом172.19.0.1/30;- DNS через sing-box работает;
- Hysteria2 outbound работает;
- DNS resolution и реальный HTTPS-запрос с
vpn-egress-gwпрошли успешно; - внешний адрес gateway через туннель:
212.113.101.200.
Idempotency
Повторный vpn-egressctl sync сообщил:
Desired state is already installed.
При этом changed=false, оба drift-флага остались false, SHA-256 config не
изменился, сервисы сохранили active state. Повторный E2E также прошёл с внешним
адресом 212.113.101.200.
Клиент за br_vpn
Для независимой проверки forwarding path создан временный клиент:
- адрес:
10.30.0.20/24; - default gateway:
10.30.0.2; - доступность gateway:
3/3, потерь нет; - DNS-запрос обработан sing-box;
- TCP/HTTPS-трафик принят через TUN;
- выбран outbound
hysteria2[hy2-out]; - внешний адрес клиента:
212.113.101.200.
Проверенный путь:
10.30.0.20
-> br_vpn
-> vpn-egress-gw / eth1
-> tun-sb0
-> sing-box 1.14.0
-> Hysteria2 / Gecko
-> se.api.withen.pro:2053
-> Internet
Fail-closed / anti-leak
До остановки sing-box клиент выходил с адреса 212.113.101.200. После
успешного systemctl stop:
- sing-box перешёл в inactive state;
vpn-egress-guardостался active;- прямой Internet access клиента отсутствовал;
curlзавершился сrc=7;- выхода через обычный
eth0/WAN не возникло.
После запуска sing-box доступ восстановился, а внешний адрес снова стал
212.113.101.200.
Статус anti-leak проверки: PASS.
Cleanup и итог
После проверки удалены известные временные объекты: test namespace, veth,
официальный диагностический Hysteria binary, test configs, logs и pcap.
Production URI, config и state сохранены. Внутри vpn-egress-gw контрольный
find по использованным диагностическим шаблонам не вернул результатов.
Подтверждены clean-state first apply, генерация config, runtime health, DNS,
gateway E2E, idempotent no-op, E2E клиента за br_vpn, recovery после запуска
сервиса и fail-closed защита от прямого WAN.
Итоговый статус: PASS / PRODUCTION E2E VALIDATED.