ios-app icon indicating copy to clipboard operation
ios-app copied to clipboard

IPv6 connection info not displayed on iOS 16

Open gorkapernas opened this issue 2 years ago • 4 comments

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

gorkapernas avatar Jul 28 '22 09:07 gorkapernas

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

jurajhilje avatar Jul 28 '22 09:07 jurajhilje

I found a possible workaround + posted the issue on Apple Dev Forum: https://developer.apple.com/forums/thread/711196

jurajhilje avatar Jul 28 '22 17:07 jurajhilje

@gorkapernas Try 2.6.4 (16) (production API) build and let me know how it works on your end.

jurajhilje avatar Jul 29 '22 10:07 jurajhilje

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.

gorkapernas avatar Jul 29 '22 12:07 gorkapernas

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

jurajhilje avatar Aug 24 '22 18:08 jurajhilje