Files
AWG2_harness/README.md
T

70 lines
4.7 KiB
Markdown
Raw 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.
# 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`.