Files
AWG2_harness/docs/CONFIGURATION.md
T

5.0 KiB
Raw Blame History

Конфигурация AWG2 Harness

Конфиг живёт в /etc/awg2-harness/config.toml. Он общий для всего пакета и должен содержать только эксплуатационно значимые параметры.

Рекомендуемый config.toml

[amnezia]
container_names = ["amnezia-awg2", "amnezia-awg"]
interface_candidates = ["awg0", "wg0", "amnezia0", "tun0"]
interface_patterns = ["awg*", "wg*", "amnezia*", "tun*"]
peer_ipv4_cidr = "10.8.1.0/24"

[traffic]
enabled = true
peer_limit = "70mbit"
root_rate = "1000mbit"
reconcile_interval_secs = 15
container_ready_timeout_secs = 120
class_start_id = 10
ifb_name = "ifb0"

[anti_torrent]
enabled = true
max_connections_per_peer = 100
peer_ipv4_cidr = "10.8.1.0/24"
apply_in_amnezia_netns = true

[reboot]
enabled = true
window_start_utc = "01:00"
window_end_utc = "02:00"

[swap]
enabled = true
path = "/swapfile"
size_mb = 2048
priority = -2
swappiness = 1

Пояснения

amnezia.container_names — имена контейнеров, которые считаются Amnezia/AWG. Порядок важен. По текущему production-снимку основной вариант — amnezia-awg2, fallback — amnezia-awg.

amnezia.interface_candidates — точные имена интерфейса, которые пробуются первыми.

amnezia.interface_patterns — fallback-паттерны для устойчивости к обновлениям Amnezia. Старые материалы прямо отмечают риск переименования интерфейса между awg0, wg0, amnezia0.

amnezia.peer_ipv4_cidr — подсеть VPN peers. Сейчас старая bash-система жёстко ищет 10.8.1.x; в Rust это должно быть конфигурируемо.

traffic.peer_limit — per-peer лимит в обе стороны. Текущий production default — 70mbit.

traffic.root_rate — верхний HTB-класс, в старой системе 1000mbit.

traffic.reconcile_interval_secs — период фоновой проверки. Он нужен не вместо Docker events, а вместе с ними.

traffic.container_ready_timeout_secs — сколько ждать появления интерфейса после старта контейнера.

traffic.class_start_id — первый class id. В старой системе это 10, что даёт классы 1:10, 2:10 и дальше.

traffic.ifb_name — имя IFB-интерфейса для ingress shaping. В старой системе это ifb0. Этот параметр можно оставить в конфиге, потому что бинарь реально создаёт/удаляет этот интерфейс.

При drift orchestrator всегда делает controlled rebuild owned topology.

anti_torrent.enabled — включает nftables connection-count guard против high-peer-count P2P-нагрузки. Это новое расширение, не часть old bash.

anti_torrent.max_connections_per_peer — максимум одновременных conntrack flows на один VPN peer IP. Default 200; 250 — более консервативный вариант.

anti_torrent.peer_ipv4_cidr — подсеть, на которую распространяется правило. Обычно должна совпадать с amnezia.peer_ipv4_cidr.

anti_torrent.apply_in_amnezia_netns — выбор namespace для применения anti-torrent правил:

  • true (default): применять в network namespace контейнера Amnezia;
  • false: применять в host namespace.

Для production рекомендуется true, если peer source IP (10.8.1.x) видны именно внутри netns контейнера.

reboot.enabled — включает плановую перезагрузку.

reboot.window_start_utc / reboot.window_end_utc — UTC-окно плановой перезагрузки. В старом Rust-модуле это было зашито как 01:00–02:00 UTC.

swap.enabled — включает setup-задачу swap.

swap.path, swap.size_mb, swap.priority, swap.swappiness — параметры аварийного swap. Default: 2 ГБ, низкий priority, swappiness = 1.

Что не выносить в конфиг

Не нужно выносить:

  • handles 1:, 2:, ffff:;
  • имена внутренних Rust-модулей;
  • формат команд tc;
  • retry micro-tuning;
  • формат логов;
  • путь lock-файла, если нет эксплуатационной причины;
  • hardening systemd;
  • nftables hook/priority/table names, если нет осознанной причины.

Handles и структура HTB + fq_codel + ingress + ifb — это contract traffic module, а не настройка оператора.