4.1 KiB
4.1 KiB
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.
Порядок правил:
- safety private-direct, чтобы не ломать LAN.
- custom routing lists из UI.
- RU direct rules.
- 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.
Рабочий порядок
- Сделать новый gateway root.
- Реализовать Docker image + entrypoint TProxy lifecycle.
- Реализовать маленький control-server.
- Реализовать Vite + React UI для subscription -> server select -> apply.
- Добавить gateway docs/install script.
- Потом переносить desktop-proxy.
- Потом приводить Windows mode к новой архитектуре.