Files
AWG2_harness/docs/INSTALLATION.md
T

5.2 KiB

Установка AWG2 Harness на production-хост

1. Предусловия

Хост:

  • Debian 13 amd64;
  • root-доступ;
  • SSH настроен заранее;
  • AmneziaWG/AWG 2.0 установлена официальным способом;
  • контейнер Amnezia запускается через Docker;
  • сервер выделенный, без соседних сервисов, чьи сетевые правила нужно сохранять.

На хосте должны быть доступны:

docker
systemctl
ip
tc
wg
nsenter
modprobe
nft

tc/ip/wg внутри контейнера полезны для fallback, но целевая модель — host tools + вход в network namespace контейнера.

2. Сборка бинаря

Сборку лучше выполнять на отдельной build-машине с тем же целевым ABI.

./tools/build.sh

Альтернатива (ручной запуск cargo из корня репозитория):

cargo build --locked --manifest-path traffic_core/Cargo.toml --release

Проверки перед переносом:

cargo fmt --manifest-path traffic_core/Cargo.toml --all --check
cargo clippy --locked --manifest-path traffic_core/Cargo.toml --all-targets -- -D warnings
cargo test --locked --manifest-path traffic_core/Cargo.toml --release
file traffic_core/target/release/awg2-harness
ldd traffic_core/target/release/awg2-harness

3. Установка файлов

install -m 0755 traffic_core/target/release/awg2-harness /usr/local/bin/awg2-harness
install -d -m 0755 /etc/awg2-harness
install -m 0644 config.toml /etc/awg2-harness/config.toml

Важно: production-установка не должна автоматически копировать config.example.toml как боевой конфиг. Если используется tools/build.sh, режим --install завершится ошибкой при отсутствии /etc/awg2-harness/config.toml. Режим --install копирует только бинарь и unit, выполняет systemctl daemon-reload, но не делает systemctl enable --now. Сначала подготовьте осознанный production-конфиг вручную.

Проверка конфига:

awg2-harness validate-config --config /etc/awg2-harness/config.toml

4. Первичное применение traffic topology

awg2-harness apply-limits --config /etc/awg2-harness/config.toml
awg2-harness status --config /etc/awg2-harness/config.toml

Ожидается:

  • найден контейнер amnezia-awg2 или amnezia-awg;
  • найден network namespace контейнера;
  • найден AWG/WG-интерфейс;
  • найдены peers из wg show all allowed-ips;
  • создана egress topology на AWG/WG-интерфейсе;
  • создан ifb0;
  • создан ingress redirect в ifb0;
  • на каждого peer есть egress и ingress class/filter;
  • если anti-torrent включён, в Amnezia netns есть table inet awg2_harness и drop counter отображается в status.

5. Настройка swap

awg2-harness ensure-swap --config /etc/awg2-harness/config.toml
swapon --show
cat /proc/sys/vm/swappiness

Ожидается /swapfile размером 2 ГБ, права 0600, запись в /etc/fstab, низкая склонность к использованию.

6. Установка systemd unit

/etc/systemd/system/awg2-harness.service:

[Unit]
Description=AWG2 Harness multi-orchestrator
After=network-online.target docker.service
Wants=network-online.target
Requires=docker.service

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/awg2-harness daemon --config /etc/awg2-harness/config.toml
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Активация:

systemd-analyze verify /etc/systemd/system/awg2-harness.service
systemctl daemon-reload
systemctl enable --now awg2-harness.service

7. Проверка после запуска daemon

systemctl status awg2-harness.service
journalctl -u awg2-harness.service -n 100 --no-pager
awg2-harness status --config /etc/awg2-harness/config.toml

8. Проверка auto-healing

docker restart amnezia-awg2
sleep 30
awg2-harness status --config /etc/awg2-harness/config.toml

Затем проверить Docker restart и host reboot. После каждого события status должен показывать healthy state без ручного запуска old bash.

9. Rollback

Если нужно временно вернуться к old bash:

systemctl stop awg2-harness.service
systemctl disable awg2-harness.service
# вернуть /opt/amnezia/limit_peers.sh и /opt/amnezia/docker_watcher.sh
# вернуть amnezia-tc.service и amnezia-tc-watcher.service
systemctl daemon-reload
systemctl enable --now amnezia-tc.service amnezia-tc-watcher.service

Rollback должен быть проверен до первой production-выкладки.