a09464e98fecae8cc2c917eb5e81bca0b8ff766b
elmprodvpn (Selective VPN Dashboard)
Local Linux toolset (Go API + Qt GUI) to manage selective VPN routing and DNS wildcarding for AdGuard VPN / SmartDNS.
Key features:
- Selective routes via nftables sets (
agvpn4/agvpn_dyn4) + policy routing table (agvpn). - DNS upstream management (default + meta) and optional SmartDNS wildcard list.
- Traffic modes: Selective (fwmark
0x66), Full tunnel, Direct. - Auto-local bypass to keep LAN/docker reachable in Full tunnel.
- Policy overrides: force VPN/Direct by source subnet, UID, or systemd cgroup.
- Runtime per-app routing: launch an app in a
systemd --userscope and apply a temporary cgroup-based mark.
Repo layout:
selective-vpn-api/- Go backend API (localhost, default127.0.0.1:8080).selective-vpn-gui/- PySide6 GUI (vpn_dashboard_qt.py).
Requirements (high level):
- Linux with
systemd,nftables,iproute2, cgroup v2. - Python 3 + PySide6 +
requests(GUI). - Root privileges for routing/nftables changes (run API as a privileged service).
Languages
Go
57.4%
Python
38.7%
Shell
2.8%
TypeScript
0.8%
CSS
0.2%