70 lines
4.7 KiB
Markdown
70 lines
4.7 KiB
Markdown
# AWG2 Harness
|
||
|
||
`AWG2 Harness` — host-side multi-orchestrator на Rust для production-сервера с AmneziaWG/AWG 2.0.
|
||
|
||
Это не просто перенос bash-скриптов на Rust. Целевая система должна воспроизвести и затем постоянно удерживать всё состояние, которое сейчас создаёт `Amnezia limits (old bash)`: discovery контейнера и интерфейса, список peers, per-peer traffic shaping в обе стороны, `tc` topology, `ifb0`, auto-healing после рестартов, диагностику, плановый reboot и swap setup, а также опциональный nftables anti-torrent guard через per-peer connection-count limit.
|
||
|
||
Сервер выделенный: Debian 13 amd64, SSH заранее настроен, рядом нет соседних сервисов, после установки Amnezia доставляется наш бинарь. Поэтому бинарь имеет право и обязан полностью управлять нужными правилами хоста и network namespace Amnezia, а не быть пассивной обёрткой, которая боится менять состояние системы. При этом он не форкает Amnezia и не меняет её продуктовую логику; он управляет инфраструктурным состоянием вокруг неё.
|
||
|
||
Текущий репозиторий:
|
||
|
||
```text
|
||
AWG2_harness/
|
||
├── Amnezia limits (old bash)/ # production reference behavior
|
||
├── reboot_module/ # production auxiliary binary: awg2-reboot-scheduler
|
||
├── traffic_core/ # целевая зона для Rust traffic/orchestrator логики
|
||
└── docs/ # документация по миграции, архитектуре и эксплуатации
|
||
```
|
||
|
||
Production reboot path — внешний scheduler service [`awg2-reboot-scheduler.service`](awg2-reboot-scheduler.service).
|
||
|
||
Важно: `Amnezia limits (old bash)` используется как эталон production-поведения, а `reboot_module` ставится как второй production-бинарь.
|
||
|
||
## Production deployment model
|
||
|
||
AWG2 Harness собирается на отдельной Debian 13 amd64 build-machine.
|
||
|
||
Production Amnezia-хост **не должен** требовать Rust, cargo, clippy, source tree и legacy bash-скрипты. На production-хост переносится готовый Debian-пакет и вручную подготовленный `/etc/awg2-harness/config.toml`.
|
||
|
||
Build machine:
|
||
|
||
```bash
|
||
./tools/build.sh --prepare-build-env --bootstrap-rust --yes
|
||
./tools/build.sh --package
|
||
sha256sum -c dist/SHA256SUMS
|
||
```
|
||
|
||
Копирование на production host:
|
||
|
||
```bash
|
||
scp dist/awg2-harness_*_amd64.deb root@vpn-host:/root/
|
||
scp config.toml root@vpn-host:/root/awg2-harness.config.toml
|
||
```
|
||
|
||
Production host:
|
||
|
||
```bash
|
||
apt install ./awg2-harness_*_amd64.deb
|
||
install -d -m 0755 /etc/awg2-harness
|
||
install -m 0644 /root/awg2-harness.config.toml /etc/awg2-harness/config.toml
|
||
awg2-harness validate-config --config /etc/awg2-harness/config.toml
|
||
awg2-harness validate-runtime --config /etc/awg2-harness/config.toml
|
||
awg2-harness apply-limits --config /etc/awg2-harness/config.toml
|
||
awg2-harness apply-firewall --config /etc/awg2-harness/config.toml
|
||
awg2-harness status --config /etc/awg2-harness/config.toml
|
||
systemctl enable --now awg2-harness.service
|
||
systemctl enable --now awg2-reboot-scheduler.service
|
||
```
|
||
|
||
В production запускаются оба сервиса: [`awg2-harness.service`](awg2-harness.service) и [`awg2-reboot-scheduler.service`](awg2-reboot-scheduler.service).
|
||
|
||
Основная документация:
|
||
|
||
- [`docs/MIGRATION.md`](docs/MIGRATION.md) — исправленная миграционная стратегия bash → Rust multi-orchestrator.
|
||
- [`docs/OLD_BASH_BEHAVIOR.md`](docs/OLD_BASH_BEHAVIOR.md) — зафиксированное поведение старой bash-системы по файлам.
|
||
- [`docs/IMPLEMENTATION_SPEC.md`](docs/IMPLEMENTATION_SPEC.md) — целевая архитектура бинаря и state reconciliation.
|
||
- [`docs/CONFIGURATION.md`](docs/CONFIGURATION.md) — единый `config.toml` без эксплуатационного мусора.
|
||
- [`docs/INSTALLATION.md`](docs/INSTALLATION.md) — установка на Debian 13 amd64.
|
||
- [`docs/ACCEPTANCE_CHECKLIST.md`](docs/ACCEPTANCE_CHECKLIST.md) — production checklist.
|
||
- [`docs/ANTI_TORRENT.md`](docs/ANTI_TORRENT.md) — простая анти-торрент защита через nftables `ct count`.
|