Files
singbox_glue/docs/troubleshooting.md
T

3.4 KiB
Raw Blame History

Диагностика

Начинать с:

vpn-egressctl doctor
vpn-egressctl status --json

Unsupported sing-box version

Установлена не exact 1.14.0 либо отсутствуют with_quic/with_gvisor. Конфигурация не изменялась. Не обходить version gate.

Cross-release upgrades are not supported

Пакет 0.2.0 устанавливается поверх другого релиза. Старый package остаётся установленным; выполнить clean-install runbook из docs/migration.md. Повторная установка ровно 0.2.0 поддерживается, если state и config согласованы.

State from another release / unmanaged configuration

Обнаружены сохранённые файлы 0.1.0 или конфиг вне управления 0.2.0. Остановить sing-box, убедиться в наличии guard, переместить старые данные в защищённый архив и повторить dpkg --configure vpn-egressctl. Не редактировать старый state так, чтобы обойти проверку. Даже побайтово идентичный candidate не делает unmanaged config принадлежащим этому релизу.

sing-box rejected generated configuration

Candidate удалён, production не менялся. Проверить exact package version, URI и policy. Не прикладывать URI/config к отчёту без удаления secrets.

Apply failed, previous configuration restored

Same-release rollback успешен. Проверить service/journal и выполнить doctor.

Automatic rollback also failed

Если это первое clean apply, предыдущего управляемого config нет — восстановить нечего. sing-box должен оставаться остановленным, а guard активным. При наличии last-good проверить его .meta; не запускать файл вручную при несовпадении версии или SHA.

Configuration metadata checksum does not match

Backup и metadata рассогласованы или повреждены. Автоматический rollback правильно заблокирован. Использовать другой version-matched backup только через консоль и после sing-box check.

Endpoint exclusion

Удалить публичный endpoint CIDR из policy. Не заменять его новым A-адресом.

Healthcheck request failed

Проверить DNS, Gecko password, auth, SNI, certificate, UDP path и nftables. Успешный локальный healthcheck не заменяет forwarding E2E с eth1.

DNS hijack не обслуживает LAN IP шлюза

dns_mode=hijack перехватывает TCP/UDP 53 только к non-local destination. Если LAN-клиент обращается к адресу самого gateway, например 10.20.0.1:53, нужен отдельный DNS listener/service. Не добавлять dns_address вручную и не возвращать route rule как workaround: это меняет проверенный контракт renderer.