The VPN options for "Always-on" and "Block connections without VPN" are sources of constant confusion, both for GOS users and the Android userbase at large. The core issue is:
- "Block connections without VPN" disables all non-tunneled traffic, which also disables split-tunnel features
- "Always on" only makes the VPN turn on automatically at boot or quickly reconnect when disconnected
- There is NO KILLSWITCH FEATURE in aosp currently that blocks all network traffic only when the VPN is disconnected.
A true Killswitch is a valuable and necessary aspect of cybersecurity: For a system with a split-tunneled VPN (for which there are many valid use cases), if the VPN disconnects unexpectedly, it should [at least give users an option to] disable all outbound traffic to prevent leaks, even if it means blocking some connections that are normally permitted outside the tunnel. Instead, the current implementation means that a VPN disconnect will immediately send all connections over the public net, and users have NO option to prevent it while protecting their split-tunnel setup.
My solution is simple: An additional Killswitch toggle that revokes Network permission for all apps (except the selected Always-On VPN app, since we presumably want to be able to easily reconnect that.) To avoid confusion, the toggle names could be slightly reworded, perhaps something like,
- Always-on VPN (Stay connected to VPN at all times)
- Route all connections through the active VPN (Warning: This option disables split tunneling)
- Killswitch (Block all network access if the selected VPN is disconnected)