I was wondering if I could get a visual clarification on how the SimpleTunnel is set up to work. I created a per-app vpn client based off of SimpleTunnel and want to ensure I understand its inner workings.
This is how I currently believe SimpleTunnel works:
App (Attempting to reach internet/some server)
^
| (Re-routed via device kernal to Packet Flow of vpn client)
v
VPN Client App < - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > tunnel_server
(Packets get sent to and from tunnel_server via tunnel) ^ |
| | (Packets get forwarded to utun interface)
***(response gets forwarded to tunnel_server) | v
utun interface
^ |
***(response gets forwarded to utun interface) | | (packets get forwarded to actual server)
| v
internet/some server
*** = packets get dropped so it doesnt necessarily reach this stage but ideally it would
So is there only one utun interface which the tunnel_server uses to reach the requested server?