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