build: закрепить новые инварианты приёмкой и документацией
verify_versions_contract получил сверку API namespace. Путь machine-auth
записывается в /etc/hysteria/config.yaml и в post-install.env, то есть по нему
Hysteria обращается к админке. Пока строка была продублирована в шаблонах,
smoke, тестах, приёмке и e2e, расхождение обнаруживалось только на живом
сервере. Теперь Go-константы, API_BASE фронтенда и оба шаблона сверяются
против значений, скомпилированных в оркестратор.
Приёмка проверяет, что:
- fatal_pre_apply недостижим после записи install-state;
- каждый ownership-флаг взводится раньше своего шага;
- у read-only фазы нет универсального раннера, через который можно
проскользнуть;
- инвариант публичного endpoint живёт в preflight и не обращается к внешним
сервисам определения IP;
- purge-v0.sh и clean-host описывают одну границу;
- секреты не попадают в персистентный файл экспорта;
- импорт пиров валидируется так же строго, как их создание;
- удалённые exportConfig/importConfig не вернулись.
Захардкоженная схема =2 в приёмке заменена на значение из versions.env: при
переходе на schema 3 пришлось бы помнить ещё и про эту строку.
Документация: контракт раннеров и ownership в 08, инвариант публичного
endpoint в 08/09/12/13 и README, сетевая идентичность панели и удалённые
export/import в 04, сценарии D1 (отказ сразу после PHASE 0) и D2 (устаревший
DNS после смены IPv4) в 11, версии package.json как не-версия продукта в 02.
This commit is contained in:
@@ -95,7 +95,7 @@ sudo -u hy2xs-admin test -r /etc/hysteria/config.yaml
|
||||
curl -sS -X POST \
|
||||
-H 'Content-Type: application/json' \
|
||||
--data '{"addr":"127.0.0.1:12345","auth":"invalid","tx":0}' \
|
||||
http://127.0.0.1:8080/hui/hysteria2/auth
|
||||
http://127.0.0.1:8080/internal/hysteria/auth
|
||||
|
||||
curl -sS \
|
||||
-H "Authorization: <trafficStatsSecret>" \
|
||||
@@ -230,6 +230,37 @@ ClientAliveCountMax 2
|
||||
|
||||
Для production baseline рекомендуется `strict`.
|
||||
|
||||
### `DNS IPv4 mismatch`: DNS ведёт не на этот сервер
|
||||
|
||||
Сообщение выглядит так:
|
||||
|
||||
```text
|
||||
DNS IPv4 mismatch for HY2XS_PUBLIC_HOST fi.api.withen.pro:
|
||||
DNS A records: 185.xxx.xxx.10
|
||||
server public IPv4: 185.xxx.xxx.27
|
||||
|
||||
Update the DNS A record before using this server.
|
||||
```
|
||||
|
||||
Это не ложное срабатывание, а именно то, ради чего проверка сделана: сервисы на
|
||||
машине живы, но публичный endpoint ведёт куда-то ещё. Чаще всего — после
|
||||
принудительной смены IPv4 провайдером.
|
||||
|
||||
Что делать:
|
||||
|
||||
1. сверить фактический адрес сервера: `ip -4 addr show scope global`;
|
||||
2. обновить A-запись у DNS-провайдера;
|
||||
3. дождаться истечения TTL;
|
||||
4. повторить `hy2xs-orchestrator doctor`.
|
||||
|
||||
Вариант `server public IPv4:` пустой означает, что на интерфейсах нет ни одного
|
||||
публичного маршрутизируемого IPv4 — сервер за NAT. Это топология вне baseline;
|
||||
осознанное решение оформляется через `HY2XS_PUBLIC_ENDPOINT_POLICY=warn`.
|
||||
|
||||
Если в A-записях присутствует правильный адрес **и** посторонний, проверка тоже
|
||||
отказывает. HY2XS — single-host профиль: второй backend за тем же именем
|
||||
означает, что часть клиентов попадёт не на этот сервер.
|
||||
|
||||
### Скорость не соответствует ожиданиям
|
||||
Проверить:
|
||||
- `bandwidth.*` на сервере
|
||||
|
||||
Reference in New Issue
Block a user