We have a NEPacketTunnelProvider extension that intercepts and modifies DNS responses for specific hostnames as part of its normal operation.
On iOS 27, we are seeing this interception being intermittently bypassed. Our extension still receives the DNS query, builds a response, and returns it promptly, but the client occasionally proceeds using a different address, presumably the actual DNS resolution result.
This behavior does not reproduce on iOS 26 or earlier.
The timing in our logs appears to correlate with the new Connectivity Assist feature (Settings → Wi-Fi), which Apple describes as using cellular data alongside Wi-Fi to improve reliability. Our suspicion is that Connectivity Assist may be performing DNS resolution over a cellular path in parallel, outside the tunnel, causing that resolution path to bypass our provider entirely.
We have ruled out response timing and response format issues on our side. Varying the speed and format of our responses does not affect the outcome, suggesting that the behavior is occurring at a layer above the tunnel provider.
We have the following questions:
Does Connectivity Assist perform DNS resolution on a network path that can bypass an active NEPacketTunnelProvider?
Is there any API, entitlement, or supported mechanism to disable Connectivity Assist for an app, or to ensure that all DNS resolution is routed through the active tunnel, similar to previous Wi-Fi Assist opt-out capabilities?
Would a NEDNSProxyProvider-based DNS proxy be affected in the same way, or does it operate at a layer that Connectivity Assist cannot bypass?
Any guidance, references to relevant documentation, WWDC session content, or confirmation of the expected behavior would be greatly appreciated.
NEPacketTunnelProvider … modifies DNS responses for specific hostnames as part of its normal operation.
To what end?
Most folks who run into problems like this do so because they’re trying to use a packet tunnel provider for something that isn’t VPN. That’s not something we support, for the sorts of reasons you’re seeing here. See TN3120 Expected use cases for Network Extension packet tunnel providers.
Would a NEDNSProxyProvider-based DNS proxy be affected in the same way … ?
I don’t know for sure, but I’d be surprised if that were relevant to you because most folks in this situation are using a packet tunnel provider because they don’t want to accept the deployment restrictions imposed by DNS proxy. See TN3134 Network Extension provider deployment.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"