Files
vpn-proxy/docs/roadmap.md

4.1 KiB
Raw Blame History

Roadmap: VPN Proxy rebuild

Целевая модель

Проект должен стать multi-mode системой вокруг sing-box:

Режим Назначение Runtime Статус
gateway LXC/VPS как gateway для роутера и всей сети Docker network_mode: host + TProxy делаем первым
desktop-proxy Mac/Linux локальный HTTP/SOCKS proxy с fallback Docker bridged ports позже переносим из старой реализации
windows-gaming Windows для игр/Discord/Vesktop native sing-box.exe + ProxiFyre позже приводим в порядок

Gateway mode

Цель: контейнер, который становится прозрачным gateway для сети.

Требования:

  • sing-box внутри контейнера.
  • network_mode: host.
  • CAP_NET_ADMIN и CAP_NET_RAW.
  • TProxy inbound на 7895.
  • Mixed HTTP/SOCKS inbound на 8080.
  • Web UI на 3456.
  • Subscription URL вводится в UI, парсится, пользователь выбирает сервер.
  • Пользовательские routing lists управляются из UI.
  • Генерируется /etc/sing-box/config.json.
  • sing-box check перед применением.
  • Restart sing-box после применения.
  • Idempotent iptables setup.
  • Cleanup iptables/ip rule/ip route при остановке контейнера.

Маршрутизация v1:

  • private IP ranges -> direct.
  • пользовательские списки -> direct, vpn или block.
  • geoip-ru -> direct.
  • geosite-category-ru -> direct.
  • все остальное -> выбранный VPN outbound.

Порядок правил:

  1. safety private-direct, чтобы не ломать LAN.
  2. custom routing lists из UI.
  3. RU direct rules.
  4. default VPN outbound.

Формат пользовательского списка:

  • name.
  • enabled.
  • outbound: direct, vpn, block.
  • domains: exact domains.
  • domainSuffixes: доменные suffix, удобно для игр/сервисов.
  • domainKeywords: keyword matching.
  • ipCidrs: CIDR ranges.
  • ports: TCP/UDP ports.
  • networks: tcp, udp.
  • UI должен автосохранять списки с debounce, чтобы polling state не затирал незавершенное редактирование.

Важно: gateway не видит process name на клиентском ПК. Для сценария вроде "League of Legends всегда direct" нужны домены, CIDR и порты Riot, а не имя процесса.

Отдельно решить позже:

  • DNS strategy: DHCP DNS, DNS redirect или local DNS inbound.
  • IPv6 TProxy.
  • nftables backend.
  • health checks и smoke diagnostics.
  • secret storage через Infisical/Vault/env.

Desktop proxy mode

Цель: сохранить удобный Docker-сценарий для Mac/Linux без TProxy.

Требования:

  • UI на 3456.
  • Mixed inbound на 8080.
  • Subscription parser.
  • Выбор сервера.
  • Fallback proxy через urltest.
  • Direct mode toggle.
  • Не требует NET_ADMIN.

Windows gaming mode

Цель: сохранить сценарий для Discord/Vesktop/игр.

Требования:

  • Native sing-box.exe.
  • Scheduled task или Windows service.
  • ProxiFyre + WinPacketFilter для приложений, которые не умеют proxy.
  • Управление из PowerShell helper.
  • Позже можно сделать Electron/Tauri UI поверх privileged helper.

Рабочий порядок

  1. Сделать новый gateway root.
  2. Реализовать Docker image + entrypoint TProxy lifecycle.
  3. Реализовать маленький control-server.
  4. Реализовать Vite + React UI для subscription -> server select -> apply.
  5. Добавить gateway docs/install script.
  6. Потом переносить desktop-proxy.
  7. Потом приводить Windows mode к новой архитектуре.