Реализован production-модуль sysctl_tuning и полная интеграция fix33
Добавлен отдельный host-level модуль sysctl_tuning без легаси-подходов: managed sysctl файл, точечный reconcile через sysctl -w только для drifted ключей, режимы tcp_bbr off/auto/require, безопасное удаление только managed-файла и атомарная запись конфигурации. Интегрированы новые CLI-команды apply-network-tuning/inspect-network-tuning, startup reconcile в daemon и секция Network tuning в status. Расширены config/defaults/валидация, обновлен пример конфига и документация. Добавлены unit-тесты для config и sysctl_tuning.
This commit is contained in:
@@ -96,6 +96,18 @@
|
||||
- [ ] `vm.swappiness = 1` применён.
|
||||
- [ ] Повторный `ensure-swap` ничего не пересоздаёт и не добавляет дублей.
|
||||
|
||||
## H2. Sysctl network tuning
|
||||
|
||||
- [ ] `awg2-harness apply-network-tuning` успешно завершается.
|
||||
- [ ] `awg2-harness inspect-network-tuning` показывает `enabled: true` и `drift: no`.
|
||||
- [ ] Создаётся только `/etc/sysctl.d/90-awg2-harness-vpn.conf`.
|
||||
- [ ] В managed-файле есть marker `Managed by awg2-harness sysctl_tuning`.
|
||||
- [ ] В managed-файле отсутствует `udp_wmem_min`.
|
||||
- [ ] Runtime apply меняет только drifted keys (`sysctl -w`), без `sysctl --system`.
|
||||
- [ ] При `tcp_bbr = auto` и недоступном BBR сервис не падает, в статусе есть warning.
|
||||
- [ ] При `tcp_bbr = require` и недоступном BBR команда/старт завершается с ошибкой.
|
||||
- [ ] При `enabled=false` managed-файл удаляется только если содержит managed marker.
|
||||
|
||||
## I. Anti-torrent nftables guard
|
||||
|
||||
- [ ] Если `anti_torrent.enabled = true`, в Amnezia netns есть `table inet awg2_harness`.
|
||||
|
||||
@@ -49,6 +49,19 @@ container_ready_timeout_secs = 120
|
||||
class_start_id = 10
|
||||
ifb_name = "ifb0"
|
||||
|
||||
[sysctl_tuning]
|
||||
enabled = true
|
||||
apply_on_daemon_start = true
|
||||
ip_forward = true
|
||||
tcp_bbr = "auto" # off | auto | require
|
||||
default_qdisc = "fq" # none | fq | fq_codel
|
||||
rmem_max = 67108864
|
||||
wmem_max = 67108864
|
||||
netdev_backlog_enabled = true
|
||||
netdev_max_backlog = 50000
|
||||
udp_rmem_min_enabled = true
|
||||
udp_rmem_min = 8192
|
||||
|
||||
[host_firewall]
|
||||
enabled = true
|
||||
ssh_port = 2323
|
||||
@@ -98,6 +111,21 @@ swappiness = 1
|
||||
|
||||
`traffic.ifb_name` — имя IFB-интерфейса для ingress shaping. Production default — `ifb0`. Этот параметр можно оставить в конфиге, потому что бинарь реально создаёт/удаляет этот интерфейс.
|
||||
|
||||
`sysctl_tuning` — отдельный host-level модуль управляемого сетевого baseline через `sysctl`:
|
||||
|
||||
- persistent-файл: `/etc/sysctl.d/90-awg2-harness-vpn.conf`;
|
||||
- runtime apply: только `sysctl -w` и только для drifted keys;
|
||||
- на установке `.deb` модуль не применяется;
|
||||
- на старте daemon модуль применяется, если `enabled=true` и `apply_on_daemon_start=true`;
|
||||
- `tcp_bbr = auto` не валит запуск при недоступном BBR (warning), `require` — валит.
|
||||
|
||||
Ограничения модуля:
|
||||
|
||||
- не использует `/etc/sysctl.conf`;
|
||||
- не запускает `sysctl --system`;
|
||||
- не меняет `nftables`, Docker bridge и container-local sysctl;
|
||||
- не управляет `net.ipv4.udp_wmem_min` (в Linux документации параметр указан как не имеющий эффекта).
|
||||
|
||||
При drift orchestrator всегда делает controlled rebuild owned topology.
|
||||
|
||||
`anti_torrent.enabled` — включает nftables connection-count guard против high-peer-count P2P-нагрузки. Это отдельный AWG2 Harness module и часть текущего production-контракта.
|
||||
|
||||
@@ -44,6 +44,8 @@ Subcommands:
|
||||
```bash
|
||||
awg2-harness daemon
|
||||
awg2-harness apply-limits
|
||||
awg2-harness apply-network-tuning
|
||||
awg2-harness inspect-network-tuning
|
||||
awg2-harness apply-firewall
|
||||
awg2-harness status
|
||||
awg2-harness ensure-swap
|
||||
@@ -51,6 +53,15 @@ awg2-harness validate-config
|
||||
awg2-harness validate-runtime
|
||||
```
|
||||
|
||||
`apply-network-tuning`/`inspect-network-tuning` относятся к отдельному host-level модулю `sysctl_tuning`.
|
||||
Этот модуль:
|
||||
|
||||
- управляет только sysctl параметрами хоста;
|
||||
- пишет только `/etc/sysctl.d/90-awg2-harness-vpn.conf`;
|
||||
- применяет runtime-изменения точечно (`sysctl -w`) только для drifted keys;
|
||||
- не использует `/etc/sysctl.conf` и `sysctl --system`;
|
||||
- не управляет `udp_wmem_min`.
|
||||
|
||||
## 3. Module layout
|
||||
|
||||
Recommended Rust module split:
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
- Production-хост получает готовый Debian-пакет; Rust/cargo/source tree на нём не требуются.
|
||||
- `/etc/awg2-harness/config.toml` создаётся вручную. `config.example.toml` не копируется автоматически как боевой config.
|
||||
- Пакет не устанавливает Docker/Amnezia и не включает services автоматически.
|
||||
- `sysctl_tuning` не применяется в `postinst`; применение только на старте daemon или вручную через CLI.
|
||||
|
||||
## A. Build machine
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ AmneziaDNS:
|
||||
|
||||
Expected status:
|
||||
service: active
|
||||
network tuning drift: no
|
||||
traffic drift: no
|
||||
host firewall drift: no
|
||||
anti-torrent drift: no
|
||||
|
||||
Reference in New Issue
Block a user