IPV6 testing

I am thinking about testing for IPV6 compatibility.

The article below describes steps for a test preparation.

https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html

My understanding was that when I use proper functionality for connection my application will be able to reach both IPV6 and IPV4 backend servers. If my code does not follow recommendations (for ex, IPV4 address instead of DNS name) my application would not work.


Preparation:

Instead of writing/testing app I decided to start testing with browsers.

  • Testing with http://ipv6-test.com/shows presence of both addresses on any machine connected to my router.
  • On my test MAC PRO with two interfaces I did internet sharing in accordance to a link above.
  • I shared my connection from Ethernet to WIFI. No security was required for a WIFI connection.
  • Network TCP/IP settings were DHCP for IPV4 and automatic for IPV6.

Tests

Without checking “Create NAT64 network” I got connectivity (aka ability to browse) from all clients connected to created WIFI.

With this settings check, none of the client (Linux, MAC PRO, iphone7) was able to browse. None of them has internet connectivity.

Ping and Ping6 showed proper response

However, “dig” command against DNS shoes presents of local host only (no google.com etc.).

Is my understanding of the testing procedure is wrong? Or something is wrong with configuration?

Of course, I can simply disable IPV4 and run my application. I do not think that does make much sense – I would not be able to distinguish connectivity problem of my application from IPV4 test server?


thank you

Yevgeniy

I’m not quite sure I understand your test but I think you’re confused by how Internet Sharing’s DNS64/NAT64 feature works. It takes an IPv4 network (the original network) and shares it as an IPv6-only DNS64/NAT64 network (the test network). So, on devices attached to the test network:

  • Software that’s compatible with IPv6 will communicate via IPv6 over the test network until it hits the DNS64/NAT64 gateway, which will translate it to IPv4, at which point communication will proceed via IPv4 over the original network.

  • Software that’s not compatible with IPv6 will fail, because the test network has no IPv4 connectivity

It does not let you connect to IPv6-only servers, like

ipv6.google.com
.

There is a one major difference between Internet Sharing’s DNS64/NAT64 test network and a real DNS64/NAT64 network, and that relates to native IPv6 connectivity. If the original network supports IPv6 and a client on the test network tries to connect to a server that supports IPv6, then a real DNS64/NAT64 gateway will get out of the way and the client will talk IPv6 all the way to the server. This is not true for Internet Sharing’s DNS64/NAT64 test network. It will not utilise IPv6 on the original network, so clients on the test network will always go through the DNS64/NAT64 gateway and thus communicate via IPv4 to a server, even if the original network and the server support IPv6.

For more information about this IPv6, see my Supporting IPv6-only Networks pinned post.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"
IPV6 testing
 
 
Q