62 lines
1.9 KiB
Markdown
62 lines
1.9 KiB
Markdown
# Диагностика
|
||
|
||
Начинать с:
|
||
|
||
```bash
|
||
vpn-egressctl doctor
|
||
vpn-egressctl status --json
|
||
```
|
||
|
||
## Unsupported sing-box version
|
||
|
||
Установлена не `1.13.19`. Конфигурация не изменялась. Проверить:
|
||
|
||
```bash
|
||
sing-box version
|
||
apt-cache policy sing-box
|
||
```
|
||
|
||
Не использовать ручной обход version gate.
|
||
|
||
## sing-box rejected generated configuration
|
||
|
||
Candidate удалён, production не менялся. Проверить package version, policy и
|
||
логи oneshot. Секреты в отчёт не прикладывать.
|
||
|
||
## Apply failed, previous configuration restored
|
||
|
||
Автоматический rollback успешен. Проверить:
|
||
|
||
```bash
|
||
systemctl status sing-box --no-pager
|
||
journalctl -u sing-box -u vpn-egress-sync.service -n 200 --no-pager
|
||
vpn-egressctl doctor
|
||
```
|
||
|
||
## Critical rollback failed
|
||
|
||
Не выполнять новый sync. Использовать `/var/lib/vpn-egress/last-good.json` или
|
||
timestamped backup из консоли контейнера, затем `sing-box check` и restart.
|
||
|
||
## Endpoint exclusion
|
||
|
||
Если doctor сообщает, что A-запись endpoint находится в TUN exclusions, удалить
|
||
публичный CIDR из policy и выполнить `check`, `diff`, `sync`. Не заменять его на
|
||
новый IP.
|
||
|
||
## Healthcheck request failed
|
||
|
||
Проверить DNS, handshake Hysteria2, доступность health URL и nftables. Временно
|
||
ставить `url: null` на production нельзя без отдельного решения: это скрывает
|
||
неработающий data plane.
|
||
|
||
## Watcher failed
|
||
|
||
Некорректный файл URI не меняет рабочий config. Исправить его безопасным
|
||
`vpn-egressctl import --stdin`, затем:
|
||
|
||
```bash
|
||
systemctl reset-failed vpn-egress-sync.service
|
||
systemctl status vpn-egress-sync.path --no-pager
|
||
```
|