diff --git a/docs/ACCEPTANCE_CHECKLIST.md b/docs/ACCEPTANCE_CHECKLIST.md index 14eef79..2d0f1b8 100644 --- a/docs/ACCEPTANCE_CHECKLIST.md +++ b/docs/ACCEPTANCE_CHECKLIST.md @@ -126,6 +126,8 @@ - [ ] Пакет ставит unit в `/lib/systemd/system/awg2-harness.service`. - [ ] Пакет не устанавливает `/etc/awg2-harness/config.toml` автоматически. - [ ] Пакет не включает/не стартует сервис автоматически. +- [ ] Пакет не имеет `Depends`/`Recommends` на `docker.io`; установка Amnezia/Docker внешняя. +- [ ] `apt install ./awg2-harness__amd64.deb` не устанавливает и не заменяет Docker. - [ ] `apt install ./awg2-harness__amd64.deb` проходит на clean Debian 13 Amnezia host. - [ ] После ручной установки config `awg2-harness validate-config` проходит. - [ ] Сервис стартует только после явного `systemctl enable --now awg2-harness.service`. diff --git a/docs/ANTI_TORRENT.md b/docs/ANTI_TORRENT.md index ddbeff2..f26a040 100644 --- a/docs/ANTI_TORRENT.md +++ b/docs/ANTI_TORRENT.md @@ -4,7 +4,7 @@ ## 1. Цель -Не детектить BitTorrent как протокол. Цель проще: ограничить количество одновременных conntrack flows на один VPN peer IP. Торрент-клиенты обычно пытаются держать сотни TCP/UDP peer-сессий, DHT/uTP/trackers. Лимит на 200–250 одновременных flows резко ухудшает P2P-поведение, но почти не затрагивает обычные сценарии. +Не детектить BitTorrent как протокол. Цель проще: ограничить количество одновременных conntrack flows на один VPN peer IP. Торрент-клиенты обычно пытаются держать сотни TCP/UDP peer-сессий, DHT/uTP/trackers. Лимит в диапазоне 100–250 одновременных flows заметно ухудшает P2P-поведение, но почти не затрагивает обычные сценарии при корректной настройке. Это мягкий технический барьер, а не abuse-система со страйками. @@ -54,7 +54,7 @@ table inet awg2_harness { type filter hook forward priority filter; policy accept; ip saddr 10.8.1.0/24 ct state new \ - meter awg2_peer_connlimit_v4 { ip saddr ct count over 200 } \ + meter awg2_peer_connlimit_v4 { ip saddr ct count over 100 } \ counter name antitorrent_dropped_v4 \ drop } @@ -76,8 +76,9 @@ max_connections_per_peer = 100 Практические варианты: - `150` — агрессивнее, больше риск задеть редкие легитимные сценарии. -- `200` — хороший default для VPN peer с лимитом 70 Mbit/s. -- `250` — более осторожный вариант, если хочется минимизировать риск жалоб от тяжёлых браузерных/WebRTC/WebSocket-сценариев. +- `100` — production default. +- `150` — мягче и более permissive при редких жалобах. +- `200/250` — ещё более permissive варианты, если нужно дополнительно снизить риск false positives. ## 5. Почему это должно быть в orchestrator @@ -91,7 +92,7 @@ max_connections_per_peer = 100 ## 6. Conntrack и производительность -`ct count` использует conntrack. На текущем масштабе это нормально: даже 23 peers × 200 flows = около 4600 активных flows до ограничения. Это не выглядит опасно для production-хоста само по себе. +`ct count` использует conntrack. На текущем масштабе это нормально: даже 23 peers × 100 flows = около 2300 активных flows до ограничения. Это не выглядит опасно для production-хоста само по себе. Что надо мониторить: diff --git a/tools/build.sh b/tools/build.sh index 8c6eb45..89c531c 100644 --- a/tools/build.sh +++ b/tools/build.sh @@ -70,8 +70,8 @@ Flags: --skip-fmt Skip cargo fmt --check --help Show this help Notes: - --install is for manual source-tree installs (staging/debug). - Preferred production flow is package-based deployment via apt install ./awg2-harness__amd64.deb + --install is not the production deployment path; it is for manual source-tree installs (staging/debug). + Use generated .deb packages on production hosts: apt install ./awg2-harness__amd64.deb EOF } @@ -295,13 +295,16 @@ package_deb() { install -d -m 0755 "$staging/DEBIAN" install -d -m 0755 "$staging/usr/sbin" install -d -m 0755 "$staging/lib/systemd/system" - install -d -m 0755 "$staging/usr/share/doc/awg2-harness" + install -d -m 0755 "$staging/usr/share/doc/awg2-harness/repo" + install -d -m 0755 "$staging/usr/share/doc/awg2-harness/repo/docs" + install -d -m 0755 "$staging/usr/share/doc/awg2-harness/repo/tools" install -m 0755 "$TARGET_BIN" "$staging/usr/sbin/awg2-harness" install -m 0644 "$ROOT_DIR/awg2-harness.service" "$staging/lib/systemd/system/awg2-harness.service" - install -m 0644 "$ROOT_DIR/config.example.toml" "$staging/usr/share/doc/awg2-harness/config.example.toml" - install -m 0644 "$ROOT_DIR/README.md" "$staging/usr/share/doc/awg2-harness/README.md" - install -m 0644 "$ROOT_DIR/docs/INSTALLATION.md" "$staging/usr/share/doc/awg2-harness/INSTALLATION.md" + install -m 0644 "$ROOT_DIR/config.example.toml" "$staging/usr/share/doc/awg2-harness/repo/config.example.toml" + install -m 0644 "$ROOT_DIR/README.md" "$staging/usr/share/doc/awg2-harness/repo/README.md" + install -m 0644 "$ROOT_DIR/docs/INSTALLATION.md" "$staging/usr/share/doc/awg2-harness/repo/docs/INSTALLATION.md" + install -m 0644 "$ROOT_DIR/tools/README.md" "$staging/usr/share/doc/awg2-harness/repo/tools/README.md" cat >"$staging/DEBIAN/control" <