feat(v1): Gecko-обфускация, latest-stable Hysteria на сборке и forward-compatible admin
Сквозная миграция HY2XS на современную Hysteria (2.12.2) и переход на v1. Build: - версия Hysteria резолвится на этапе сборки из HyNetworks/hysteria и замораживается в metadata пакета (version + immutable url + sha256); - compatibility gate: реальный бинарник должен принять канонический конфиг HY2XS для gecko и salamander до создания пакета; - сборка прогоняет тесты оркестратора и админки. Конфигурационный контракт: - HY2XS_CONFIG_SCHEMA_VERSION=2, чужая схема отклоняется fail-fast; - obfs стал настоящим union gecko|salamander, gecko — default; - obfs-блок рендерится оркестратором целиком, два подтипа одновременно структурно невозможны; - современный baseline: congestion bbr/standard, disableLossCompensation=false, disableStatelessReset=false, полный quic-блок. Исправления: - share URI для gecko: генератор был завязан на Obfs.Salamander.Password и выдавал нерабочую ссылку при любой другой обфускации; - SNI брался только из ACME-блока и уходил пустым при HY2XS_TLS_MODE=file; - экспорт конфига выносил trafficStats.secret, access_token и obfs-пароль; - экспорт терял неизвестные upstream-поля при round-trip через типизированную модель; - renderRuntimeEnv печатал тип обфускации литералом, расходясь с конфигом; - namedotcom удалён из ACME-реестра (нет в Hysteria с 2.11.0). Тесты: - 95 тестов оркестратора: env, рендер, семантика профиля, резолвер, rollover; - тесты URI и экспорта в Go; - tools/test/e2e-hysteria.sh с реальным клиентом Hysteria. UX: - подсказки и примеры в форме создания пира. Прочее: CHANGELOG.md, .gitattributes (LF для target-side файлов), документация на русском.
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
# HY2XS canonical production runtime config (packaged baseline)
|
||||
# Версия схемы конфигурации HY2XS. Пакет понимает только эту версию;
|
||||
# установка поверх сервера со схемой v0 не поддерживается — нужна чистая установка.
|
||||
HY2XS_CONFIG_SCHEMA_VERSION=2
|
||||
HY2XS_IPV6_ENABLED=false
|
||||
HY2XS_DOMAIN=fi.api.withen.pro
|
||||
HY2XS_DNS_AAAA_POLICY=strict
|
||||
@@ -27,8 +30,10 @@ HY2XS_HYSTERIA_AUTH_MODE=http
|
||||
HY2XS_HYSTERIA_TRAFFIC_STATS_HOST=127.0.0.1
|
||||
HY2XS_HYSTERIA_TRAFFIC_STATS_PORT=36712
|
||||
HY2XS_HYSTERIA_TRAFFIC_STATS_SECRET=__GENERATE__
|
||||
# fixed in production profile: must remain salamander
|
||||
HY2XS_HYSTERIA_OBFS_TYPE=salamander
|
||||
# gecko | salamander. Gecko — production default HY2XS (upstream помечает его experimental).
|
||||
# Salamander остаётся полностью поддержанным compatibility fallback.
|
||||
# Смена значения меняет wire-совместимость: клиентам нужна новая ссылка.
|
||||
HY2XS_HYSTERIA_OBFS_TYPE=gecko
|
||||
HY2XS_HYSTERIA_OBFS_PASSWORD=__GENERATE__
|
||||
HY2XS_HYSTERIA_BANDWIDTH_UP=50 mbps
|
||||
HY2XS_HYSTERIA_BANDWIDTH_DOWN=50 mbps
|
||||
|
||||
+9
-1
@@ -6,6 +6,7 @@ DEPLOY_TIMESTAMP={{LAST_APPLY_DATE}}
|
||||
PACKAGE_NAME=hy2xs-install-package
|
||||
PACKAGE_BUILD_ID={{PACKAGE_BUILD_ID}}
|
||||
PACKAGE_VERSION={{PACKAGE_VERSION}}
|
||||
HY2XS_CONFIG_SCHEMA_VERSION={{CONFIG_SCHEMA_VERSION}}
|
||||
|
||||
ORCH_SOURCE_STACK=bun-typescript
|
||||
ORCH_BUILD_MODE=bun-compile
|
||||
@@ -21,6 +22,7 @@ HY2XS_FIREWALL_STAGED_APPLY={{FIREWALL_STAGED_APPLY}}
|
||||
|
||||
HY2_SOURCE=official-upstream
|
||||
HY2_VERSION={{HYSTERIA_VERSION}}
|
||||
HY2_RESOLUTION={{HYSTERIA_RESOLUTION}}
|
||||
HY2_TLS_MODE={{TLS_MODE}}
|
||||
HY2_ACME_EMAIL={{ACME_EMAIL}}
|
||||
HY2_TLS_CERT_PATH={{TLS_CERT_PATH}}
|
||||
@@ -30,11 +32,17 @@ HY2_PORT={{HYSTERIA_PORT}}
|
||||
HY2_AUTH_MODE=http
|
||||
HY2_AUTH_URL=http://127.0.0.1:{{UI_PORT}}/hui/hysteria2/auth?access_token={{HYSTERIA_API_SECRET}}
|
||||
HY2_TRAFFIC_STATS_LISTEN={{HYSTERIA_API_HOST}}:{{HYSTERIA_API_PORT}}
|
||||
HY2_OBFS_TYPE=salamander
|
||||
HY2_OBFS_TYPE={{OBFS_TYPE}}
|
||||
HY2_OBFS_PASSWORD={{HYSTERIA_OBFS_PASSWORD}}
|
||||
HY2_GECKO_MIN_PACKET_SIZE={{GECKO_MIN_PACKET_SIZE}}
|
||||
HY2_GECKO_MAX_PACKET_SIZE={{GECKO_MAX_PACKET_SIZE}}
|
||||
HY2_BANDWIDTH_UP={{BANDWIDTH_UP}}
|
||||
HY2_BANDWIDTH_DOWN={{BANDWIDTH_DOWN}}
|
||||
HY2_DISABLE_LOSS_COMPENSATION={{DISABLE_LOSS_COMPENSATION}}
|
||||
HY2_IGNORE_CLIENT_BANDWIDTH={{IGNORE_CLIENT_BANDWIDTH}}
|
||||
HY2_CONGESTION_TYPE={{CONGESTION_TYPE}}
|
||||
HY2_BBR_PROFILE={{BBR_PROFILE}}
|
||||
HY2_DISABLE_STATELESS_RESET={{DISABLE_STATELESS_RESET}}
|
||||
HY2_CONFIG_PATH=/etc/hysteria/config.yaml
|
||||
|
||||
HY2XS_ADMIN_ENABLED=true
|
||||
|
||||
@@ -9,23 +9,19 @@ auth:
|
||||
url: http://127.0.0.1:{{UI_PORT}}/hui/hysteria2/auth?access_token={{HYSTERIA_API_SECRET}}
|
||||
insecure: {{AUTH_INSECURE}}
|
||||
|
||||
obfs:
|
||||
type: salamander
|
||||
salamander:
|
||||
password: "{{HYSTERIA_OBFS_PASSWORD}}"
|
||||
{{OBFS_BLOCK}}
|
||||
|
||||
bandwidth:
|
||||
up: "{{BANDWIDTH_UP}}"
|
||||
down: "{{BANDWIDTH_DOWN}}"
|
||||
disableLossCompensation: {{DISABLE_LOSS_COMPENSATION}}
|
||||
|
||||
ignoreClientBandwidth: {{IGNORE_CLIENT_BANDWIDTH}}
|
||||
|
||||
{{CONGESTION_BLOCK}}
|
||||
|
||||
trafficStats:
|
||||
listen: {{HYSTERIA_API_HOST}}:{{HYSTERIA_API_PORT}}
|
||||
secret: "{{HYSTERIA_API_SECRET}}"
|
||||
|
||||
quic:
|
||||
initStreamReceiveWindow: 8388608
|
||||
maxStreamReceiveWindow: 8388608
|
||||
initConnReceiveWindow: 20971520
|
||||
maxConnReceiveWindow: 20971520
|
||||
{{QUIC_BLOCK}}
|
||||
|
||||
Reference in New Issue
Block a user