Files

52 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Packaging
Каталог содержит package-managed systemd-конфигурацию проекта. Установка
файлов в Debian-пакет описана в `debian/install`.
## Состав
- `systemd/vpn-egress-guard.service` — до запуска sing-box атомарно устанавливает
отдельную nftables-таблицу, блокирующую прямой forwarding `eth1 -> eth0`;
- `systemd/vpn-egress-sync.service` — выполняет однократный reconcile текущих
Hysteria2 URI и policy;
- `systemd/vpn-egress-sync.path` — запускает sync при изменении защищённого URI;
- `systemd/sing-box.service.d/10-vpn-egress-guard.conf` — добавляет к штатному
`sing-box.service` requirement и ordering dependency от guard.
## Зависимости запуска
```text
vpn-egress-guard.service
├── required before ──> sing-box.service
└── required before ──> vpn-egress-sync.service
vpn-egress-sync.path
```
`Before=`/`After=` задают порядок, а `Requires=` — обязательность успешной
активации dependency. Drop-in нужен потому, что один `Before=sing-box.service`
в guard unit не заставляет sing-box запускать guard и не блокирует sing-box при
ошибке guard.
Guard является `Type=oneshot` с `RemainAfterExit=yes`. Эти зависимости защищают
совместный запуск units, но не являются watchdog для ручного удаления таблицы
`inet vpn_egress_guard`. Текущее runtime-состояние проверяет
`vpn-egressctl doctor`.
Units устанавливаются без автоматического enable/start. Их включение выполняется
явно по инструкции `docs/migration.md`, после проверки локальных значений policy.
## Граница релиза 0.2.0
`debian/preinst` отклоняет установку 0.2.0 поверх другого релиза. `postinst`
устанавливает новый policy только при отсутствии файла и запускает строгую
проверку: legacy policy/state и unmanaged sing-box config не мигрируют.
Переход выполняется только по clean-install runbook с runtime mask для
`sing-box.service`; anti-leak guard сохраняется до завершения acceptance.
Повторная установка ровно версии 0.2.0 разрешена только при согласованных state
и generated config; `preinst` отклоняет все cross-release переходы.