I initially started the discussion over at Swift Forums because I am using SwiftNIO but it appears that it makes more sense here.
I have an app with NetworkExtension of the packet tunnel provider type. So I am using the NEPacketTunnelProvider. As part of the extension, I have SwiftNIO server with connect proxy which is used to route the traffic.
This works great in almost all cases, but apps like Signal or WhatsApp don't work. They don't display any kind of "no connection" indicator but the messages aren't send or received.
Over at Swift Forums I got an answer from Quinn “The Eskimo!” that I think points to the actual problem:
My packet tunnel provider is configured to use the default routes for IP4 and IP6.My experience is that a lot of these ‘chat’ apps explicitly bind their
connections to the WWAN interface, which means they don’t use the
default route and thus aren’t seen by the packet tunnel provider.
So my concern is how to configure it, that it works also for the chat apps? There are couple of apps from the App Store that I tried which use this same approach and while they are active, Signal works fine.
Yes, I know this solution is not ideal and not the main intended usecase for packet tunnel, but it is the only option available on iOS..
Thanks for help! Happy to clarify further.