In a sense, the below findings are matching the subject: it is possible to get IPv4 mobile data on Sony Xperia 10 III / 4.4.0.68 - with IPv6 !
I managed to get my VPN supplier and my ISP to love each other, despite the cryptic SailfishOS behavior described in the posts before this one (weekends wasted on this brain damage… ):
I noticed on my ISP’s web site that they have detected me having now a new Sony Xperia 10 III (they wanted to sell me a IV!), probably when I launched the Android tests on it. I concluded that since the Sony code is used from /vendor/firmware_mnt/image/modem_pr/mcfg/configs/mcfg_sw/generic
my ISP does not really care if I am running SailfishOS on Sony AOSP or Android on the same device. They probably continue to provide the same service which worked on Android.
I found a tech talk from the ISP about their implementation of IPv6-only with CLAT+NAT64+DNS-DualStack. In this case the IPv6 will go unaltered to APN from the phone. IPv4 would need to go through a CLAT stack which is, basically a stateless NAT64 w/ IPv4 DNSproxy). This would be provided by the Sony AOSP (I am not sure, but if it is done by ofono, fine). IPv6-only will contain the IPv4, incorporated. (This article presents it simply.) Theoretically, this should be transparent to applications. Theoretically.
Let’s try it. Instead of using the default dual
(in the gprs
configuration file, see above) or Dual
in the System → Cellular Network → Data access point, one would use ipv6
or select IPv6
, respectively.
Now, the VPN’s configuration file. It contains the IP-address of the server (that is IPv4). That will not resolve. One can find easily the FQN name of the server (in my case, it is also in the file), which resolves fine on the phone now. I put the FQN name in the .udp.ovpn
file instead of the IP-address to define the server and I import that on the SFOS. In the Advanced
button of the SFOS VPN configuration, I set Disable IPv6
to No
(actually, I think it does not even work, but just in case). The connection is made and test on the VPN supplier’s web-site reveals that I am connected to their servers with an IPv4 address.
A few more tests: http://ipleak.net It shows the same IPv4 address, of course, and additionally an IPv6 address, with no forwarded IP. Browser default is IPv6 (213ms) and fallback IPv4 (300ms), it says. However, it detects SailfishOS’s default browser’s leaking WebRTC which is the previously mentioned IPv6 address. So, there is an IPv6 address leak (which I wanted to avoid) by WebRTC.
Let’s try with an Android browser (Vivaldi) where one has more controls. I have turned WebRTC off. Same result as above. However, now there is a DNS leak! (It can find my ISP’s DNS servers, not those of the VPN provider’s.)
One cannot have it all, looks like. Better stick to the SFOS browser despite its uncontrollable WebRTC leak. Not too bad.
One final test (w/ VPN on), http://ds.test-ipv6.com : I get 9/10 for IPv4/IPv6 compatibility
Conclusion: I get, with my operator, IPv4/IPv6 traffic both working, even with a UDP VPN IPv4 server when I select the IPv6 protocol in ASN parameters of SFOS. My operator provides IPv6-only with CLAT+NAT64+DNS-DualStack. This is supported either by Sony AOSP or by ofono, or perhaps both.
It would be nice to get the IPv4-only working by Jolla, I do not see any added value in the complex IPv6 implementation. Otherwise, the IP-only should be disabled from the available protocol selection if that is strictly not possible to implement with certain operators. The non-availability in this case should be clearly indicated.