Commit Graph

11 Commits

Author SHA1 Message Date
embeddevio 87cf5fe05f test(#21): интеграционные тесты netns-стенда и документация харнесса
- test_netns_stand.py — 8 тестов: топология и линки, policy routing по fwmark,
  правила меток и kill-switch, готовность мока и детектора, доставка handshake
  из LAN и из шлюза с ростом счётчика метки, имитация недоступности провайдера
  (mode=drop), положительный контроль утечки и блокировка при kill-switch.
  Тесты пропускаются вне run.sh, чтобы не падать при случайном pytest-прогоне;
- README.md харнесса — схема топологии, состав файлов, таблица тестов,
  переменные окружения и pitfalls (root/CAP_NET_ADMIN, rp_filter, отсутствие
  nft и ping в alpine-образе).

Refs #21
Refs #15
2026-10-21 23:48:51 +03:00
embeddevio 6de43622fa test(#21): утилиты стенда, раннер с JSON-отчётом и README харнесса
- netns_common.py — обёртки над ip/nft/iptables: проверка netns и линков,
  счётчики правил меток и kill-switch (nft -j и iptables -v -x), чтение
  JSONL-логов мока и детектора, отправка трафика через probe.py;
- run_tests.py — прогон unittest с JSON-отчётом (pytest не нужен: работает
  и на хосте, и в alpine-образе);
- README.md — схема топологии, таблица тестов, переменные окружения и pitfalls
  (root/CAP_NET_ADMIN, rp_filter, отсутствие nft и ping в образе).

Refs #21
Refs #15
2026-10-21 23:48:22 +03:00
embeddevio 18b911d582 test(#21): мок WireGuard-endpoint, детектор утечки и генератор трафика
- mock_wg_endpoint.py — UDP-эндпоинт, повторяющий раскладку сообщений
  WireGuard (initiation 148 байт -> response 92 байта), режимы respond/drop
  переключаются на лету через файл; JSONL-лог для ассертов;
- leak_sink.py — UDP+TCP детектор утечки на 198.51.100.9:9999 внутри netns
  uplink (RFC 5737 TEST-NET-2);
- probe.py — отправка handshake initiation или raw-UDP из указанного netns
  с разбором ответа в JSON. Только stdlib: работает в alpine-образе.

Refs #21
Refs #15
2026-10-21 23:48:00 +03:00
embeddevio 79cbcab397 test(#21): netns-стенд — топология client/gw/uplink, lib и точка входа
Основы харнесса для тестов без реального VPN-провайдера:
- lib.sh — конфигурация стенда (netns, адреса, fwmark/таблицы) и правила
  netfilter с поддержкой nft и iptables (в alpine-образе приложения nft нет);
- topology.sh — up/down/status/killswitch: veth-пары client<->gw<->uplink,
  ip_forward, ip rule fwmark 51820 -> table 51820, метки OUTPUT/FORWARD,
  DROP kill-switch для прямого выхода в «публичную» сеть;
- run.sh — preflight, запуск мока и детектора утечки в netns uplink, прогон
  тестов, снос стенда с проверкой отсутствия остатков.

Refs #21
Refs #15
2026-10-21 23:47:48 +03:00
embeddevio 1db3824cb4 docs(#16): ADR-007 (web-сервер) и ADR-008 (безопасность) 2026-10-21 23:29:36 +03:00
embeddevio d9cad87fc8 docs(#16): ADR-005 (DNS) и ADR-006 (состояние) 2026-10-21 23:29:29 +03:00
embeddevio 63a2df893d docs(#16): ADR-003 (reconcile) и ADR-004 (GeoIP провайдер) 2026-10-21 23:29:24 +03:00
embeddevio 63e653b710 docs(#16): ADR-001, ADR-002, индекс и шаблон ADR 2026-10-21 23:29:18 +03:00
embeddevio 5647d339b1 chore(#16): каркас пакетов backend, тестов и заглушки ui/deploy/tests 2026-10-21 23:28:59 +03:00
embeddevio 63c4fa930d chore(#16): skeleton репозитория — README, Makefile, линтеры, зависимости 2026-10-21 23:28:50 +03:00
embeddevio f7936fa882 Initial commit 2026-10-16 22:45:47 +03:00