ios-app
ios-app copied to clipboard
IPv6 connection info not displayed on iOS 16
Description:
On iOS 16 (beta 3), when connecting with "IPv6 for WireGuard" enabled, the IPv6 connection info is not displayed on the sliding panel. The VPN uses IPv6 though since IPv6 traffic can be observed.
Attempted to reproduce it on iOS 15.x devices, and the issue does not occur.
Environment:
IVPN: 2.6.3 (8) App Store, 2.6.4 (15) TestFlight Device: iPhone XR iOS 16 Beta 3
I found what's causing the issue, but still need to find the solution.
In iOS 16, Apple introduced "Internationalized Domain Name" support for ULComponents. In our case the IPv6 address host is not translated into a valid URL.
So instead:
https://2607:5300:203:1735:6580:7300:0:aaaa/v4/geo-lookup
on iOS 16 IVPN app calls:
https:/v4/geo-lookup
More info: https://developer.apple.com/forums/thread/709284
I found a possible workaround + posted the issue on Apple Dev Forum: https://developer.apple.com/forums/thread/711196
@gorkapernas Try 2.6.4 (16) (production API) build and let me know how it works on your end.
Verified fixed on 2.6.4 (16), iPhone XR iOS 16 Beta 4, I can see the IPv6 connection info in the sliding panel when connected to the VPN. Looks good.
Apple engineer confirmed that this is expected behaviour and suggested how to handle IPv6 hosts in iOS 16:
According to RFC 2732 Section 2, IPv6 addresses must be enclosed in [ and ] when it’s part of an URL. In this particular case, the host should be ipv6URLComponents.host = “[2001:0000:3238:dfe1:0063:0000:0000:fefb]”.
https://developer.apple.com/forums/thread/711196