Sending out to actual dest after the Packet intercepted by NEPacketTunnelProvider

As per : TN3120: Expected use cases for Network Extension packet tunnel providers | Apple Developer Documentation

It is clear that Packets that are read from NEPacketTunnelFlow are meant to be sent over a tunnel connection to a remote server for injection into a remote network. They are not meant to be dropped or re-injected back into the system.

In my usecase:

  • NEPacketTunnelProvider is separate process. which reads the packet using packetFlow.readPacketObjects

  • Send it over to other process i.e privileged helper(Non-bundle/command line tool/non sandboxed) via UDS IPC.

  • Helpers send to to remote tunnel and return back the packet to NEPacketTunnelFlow via same IPC.

  • NEPacketTunnelProvider uses packetFlow.writePacketObjects to inject packets.

Things works fine. We don't distribute it via Appstore.

We are now attempting to implement a on device bypass mechanism from helper tool side. Could you please suggest if there is any approach I could try, even if it involves proceeding at my own risk?

We are now attempting to implement a on device bypass mechanism from helper tool side.

What do you mean by “device bypass”?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

What do you mean by “device bypass”?

By on-device bypass I mean: when my NEPacketTunnelProvider intercepts packets, instead of tunneling certain webstites to a remote VPN server, I want to allow those traffics to go directly out through the device’s native network interface without going through the tunnel.

Sending out to actual dest after the Packet intercepted by NEPacketTunnelProvider
 
 
Q