I recently had an app rejected from the ios store for crashing during their (now) mandatory IPv6 test (didn't even know they did that).

My server (on AWS) wasn't setup for IPv6, but I've fixed that with proper DNS and routing. It passes the tests at http://ready.chair6.net/

To this point, I did some research and saw that you can spoof an IPv6 network at home using internet connection sharing (ie: NAT64) on Mac OS X. So, I did that and assigned a v6 address to the iphone with my app on it and everything worked fine. However, that's not really testing the whole end-to-end connection that apple would be doing since once it hits the Mac it goes back to v4.

I'm trying to figure out a way that I can test the whole v6 connection to my server. Right now I'm assuming my home internet will only offer IP4. My current thoughts are setting up a VM/droplet on Digital Ocean/etc. They can be assigned both v4 and v6 at the same time. Further research shows that either "socat" or "squid cache" might be able to do the trick of listening on IP4 port/address and routing to the IP6 address outgoing on the same machine to continue the path to my app server on IP6. I'm getting a little lost in the details though. How do I connect from my client at home via IP4 to the VM? Do I have to tunnel? Can I set a proxy in firefox? How do I pass DNS requests through this connection so that my DNS server responds with the IP6 address and not the v4 one? I'm sure there are many other questions that I'm not thinking of currently.

Any thoughts on how to do this? Thanks!

  • Was IPv4 enabled while you did that test? You need to test it in a setup where the phone cannot get an IPv4 address from anywhere. That may mean disabling DHCP on your network and disabling mobile data on the phone such that it doesn't get IPv4 that way. – kasperd May 7 '17 at 6:02
  • No, IPv4 wasn't enabled. The phone doesn't have a cellular plan active, and I "forgot" my regular wifi network. The macbook then created it's own wifi network (to internet share) and that was set to Nat 64. I verified in the iphone settings that the IP address wasn't a IP4 (DNS looked like IP6 and IP was 169.x which is normal when using NAT64). Part of my concern is that this worked perfectly fine from the app perspective. I'd like to recreate the crash before resubmitting. – user3249281 May 7 '17 at 13:17
  • In that case there is certainly not enough information for us to tell you why it works for you and fails for them. Since it is your app you are supposed to be the one to know where in the app there could be code which needs updating. But I cannot rule out the possibility that the app is working correctly and they screwed up. – kasperd May 7 '17 at 16:14

You can set up a https://tunnelbroker.net/ tunnel to add IPv6 to your home system. Also some ISPs have IPv6 configurations that would allow native connectivity.

  • 1
    All things considered that is probably the best tunnel service overall. It does have some limitations compared to other providers which means it won't work for everyone. One alternative is tb.netassist.ua, which uses the same protocol and requires a little bit less administrativia to set up, it also works from a few networks where tunnelbroker.net does not work. – kasperd May 7 '17 at 16:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.