80 lines
3.5 KiB
Markdown
80 lines
3.5 KiB
Markdown
# Конфигурация
|
||
|
||
## Policy schema version 1
|
||
|
||
Production-образец находится в `config/policy.json`. Все секции имеют строгий
|
||
набор ключей; неизвестные и отсутствующие значения являются ошибкой.
|
||
|
||
### `sing_box`
|
||
|
||
- `binary`: абсолютный путь к бинарнику;
|
||
- `config_path`: генерируемый production JSON;
|
||
- `service`: имя systemd service;
|
||
- `required_version`: только `1.14.0`.
|
||
|
||
### `runtime`
|
||
|
||
- `uri_path`: защищённый desired-state URI;
|
||
- `state_dir`: state, last-good и backups;
|
||
- `lock_path`: межпроцессная блокировка;
|
||
- `backup_keep`: число same-release backups, от 1 до 100.
|
||
|
||
### `network`
|
||
|
||
Policy фиксирует `eth0`, `eth1`, `tun-sb0`, `172.19.0.1/30`, MTU 1400,
|
||
таблицу 2022, rule index 9000, marks `0x2023/24/25`, NFQUEUE 100 и fallback
|
||
rule 32768. Публичные endpoint IP не добавляются в exclusions.
|
||
|
||
### `dns`
|
||
|
||
- bootstrap `1.1.1.1:53`, bind `eth0`;
|
||
- DoH `1.1.1.1:443/dns-query`, SNI `cloudflare-dns.com`;
|
||
- DoH detour `hy2-out`;
|
||
- стратегия только `ipv4_only`.
|
||
|
||
### `bandwidth`
|
||
|
||
`up_mbps=50` и `down_mbps=200` выбирают Hysteria congestion control. Поэтому
|
||
renderer не задаёт `bbr_profile`: BBR profile применяется только когда bandwidth
|
||
values не заданы.
|
||
|
||
## Hysteria2 URI
|
||
|
||
Production-форма HY2XS:
|
||
|
||
```text
|
||
hysteria2://<peer-secret>@<host>:<port>/?insecure=0&obfs=gecko&obfs-password=<secret>&sni=<domain>
|
||
```
|
||
|
||
Поддерживаются `hysteria2://`/`hy2://`, auth/userpass, DNS/IPv4/bracketed IPv6,
|
||
IDNA, port hopping, `sni`, `insecure=0|1`, fragment, Gecko и Salamander.
|
||
|
||
Правила obfs:
|
||
|
||
```text
|
||
нет obfs -> допустимо для внешнего generic endpoint
|
||
obfs=gecko -> требуется obfs-password; профиль всегда 512/1200
|
||
obfs=salamander -> требуется obfs-password; compatibility fallback
|
||
другой obfs -> ошибка
|
||
password без obfs -> ошибка
|
||
```
|
||
|
||
Для новых HY2XS production-установок Gecko является режимом по умолчанию.
|
||
Salamander полностью поддерживается как compatibility fallback, но требует
|
||
явного совпадения режима и password на сервере и клиенте. Автоматического
|
||
переключения между Gecko и Salamander нет.
|
||
|
||
Query parser применяет RFC percent-decoding, но не form decoding: сырой `+`
|
||
сохраняется как `+`, `%2B` также превращается в `+`, а `%26`/`%3D` безопасно
|
||
остаются частью значения после разбора разделителей.
|
||
|
||
`pinSHA256`, `ech`, Realm URI, client modes, неизвестные и повторяющиеся
|
||
параметры отклоняются. Custom Gecko packet sizes через URI не принимаются:
|
||
официальная Hysteria2 URI schema их не переносит.
|
||
|
||
## Healthcheck
|
||
|
||
По умолчанию проверяется Cloudflare trace: HTTP 200 и маркер `ip=`. Это
|
||
проверяет локальную post-activation связность шлюза, но не заменяет E2E с
|
||
workload за `eth1`. `url: null` допустим только для изолированного стенда.
|