79cbcab397
Основы харнесса для тестов без реального 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
tests/netns — сетевой тестовый стенд
Задача #21, используется тестами #41 и #43.
Цель: проверять split-tunnel без реального VPN-провайдера и без доступа к продакшн-сети.
План харнесса:
- Создать netns:
client,gw(шлюз с awg-интерфейсом),uplink(имитация ISP). - Поднять мок WireGuard-endpoint (userspace) вместо реального сервера.
- Запустить шлюз в netns с теми же правилами, что в контейнере.
- Проверить, куда ушёл пакет: интерфейс/метка/счётчики ipset и iptables.
Точки входа: tests/netns/run.sh (вызывается через make test-netns).