docs: describe packaging layout
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user