4.3 KiB
4.3 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.
cargo build --release
Проверки перед переносом:
cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --release
file target/release/awg2-harness
ldd target/release/awg2-harness
3. Установка файлов
install -m 0755 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
Проверка конфига:
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-выкладки.