As I mentioned, those tests were done from my Macbook, so IPv6 was enabled the whole time.
Here’s my Windows results:
IPv6 OFF on network card:
> curl -ksv6o test.html https://ipv6test.google.com/
* Could not resolve host: ipv6test.google.com
* Closing connection 0
> curl -sv6o junk.jpg http://image.tmdb.org/t/p/w300/g8wnyyR6vlZjfdePD2v1lKGLUix.jpg
* Trying 2400:cb00:2048:1::6810:3a9b...
* TCP_NODELAY set
* Connected to image.tmdb.org (2400:cb00:2048:1::6810:3a9b) port 80 (#0)
> GET /t/p/w300/g8wnyyR6vlZjfdePD2v1lKGLUix.jpg HTTP/1.1
> Host: image.tmdb.org
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
...
> curl -sv6o test.html http://ipv6-test.com/
* Trying 2001:41d0:8:e8ad::1...
* TCP_NODELAY set
* Connected to ipv6-test.com (2001:41d0:8:e8ad::1) port 80 (#0)
> GET / HTTP/1.1
> Host: ipv6-test.com
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
...
> curl -sv6o test.html http://test-ipv6.com/
* Could not resolve host: test-ipv6.com
* Closing connection 0
So far, it does kinda look like it’s failing on the domains with the IPv4-mapped IPv6 addresses. Maybe the reverse-setting theory has some merit…
> curl -svo test.html http://test-ipv6.com/
* Trying 96.119.179.228...
* TCP_NODELAY set
* Connected to test-ipv6.com (96.119.179.228) port 80 (#0)
> GET / HTTP/1.1
> Host: test-ipv6.com
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
...
> curl -svo test.html 96.119.179.228
* Rebuilt URL to: 96.119.179.228/
* Trying 96.119.179.228...
* TCP_NODELAY set
* Connected to 96.119.179.228 (96.119.179.228) port 80 (#0)
> GET / HTTP/1.1
> Host: 96.119.179.228
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
...
> curl -sv6o test.html 96.119.179.228
* Rebuilt URL to: 96.119.179.228/
* Trying 96.119.179.228...
* TCP_NODELAY set
* Connected to 96.119.179.228 (96.119.179.228) port 80 (#0)
> GET / HTTP/1.1
> Host: 96.119.179.228
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
...
I’m also wondering about what curl is actually doing behind the scenes. It’s perfectly happy to connect to an IPv4 address whether you give it the -6 flag or not.
Now for the web test at http://test-ipv6.com:


Oh. Ooohhhh. Now that’s interesting. Apparently turning off native IPv6 support… enables tunneling instead? I think we’re getting somewhere here.
Let’s turn the IPv6 adapter support back ON and see what happens:


Yep. with native support on, it acts like it’s supposed to, and as it did on the other computer - which in the case of my ISP, means failing the tests. So the moral of this story is, Windows has Teredo tunneling built in which it uses when IPv6 support is off.
> curl -ksv6o test.html https://ipv6test.google.com/
* Could not resolve host: ipv6test.google.com
* Closing connection 0
> curl -sv6o junk.jpg http://image.tmdb.org/t/p/w300/g8wnyyR6vlZjfdePD2v1lKGLUix.jpg
* Trying 2400:cb00:2048:1::6810:3a9b...
* TCP_NODELAY set
* connect to 2400:cb00:2048:1::6810:3a9b port 80 failed: Timed out
* Trying 2400:cb00:2048:1::6810:3c9b...
* TCP_NODELAY set
* connect to 2400:cb00:2048:1::6810:3c9b port 80 failed: Timed out
* Trying 2400:cb00:2048:1::6810:399b...
* TCP_NODELAY set
* connect to 2400:cb00:2048:1::6810:399b port 80 failed: Timed out
* Trying 2400:cb00:2048:1::6810:3b9b...
* TCP_NODELAY set
* connect to 2400:cb00:2048:1::6810:3b9b port 80 failed: Timed out
* Trying 2400:cb00:2048:1::6810:3d9b...
* TCP_NODELAY set
* connect to 2400:cb00:2048:1::6810:3d9b port 80 failed: Timed out
* Failed to connect to image.tmdb.org port 80: Timed out
* Closing connection 0
> curl -sv6o test.html http://ipv6-test.com/
* Trying 2001:41d0:8:e8ad::1...
* TCP_NODELAY set
* connect to 2001:41d0:8:e8ad::1 port 80 failed: Timed out
* Failed to connect to ipv6-test.com port 80: Timed out
* Closing connection 0
> curl -sv6o test.html http://test-ipv6.com/
* Could not resolve host: test-ipv6.com
* Closing connection 0
Soooo… the IPv6-only sites find an address, but can’t connect to it. The IPv4-mapped IPv6 sites have unresolvable hostnames.
Let’s try giving it the IPv6 address for https://ipv6test.google.com directly:
> curl -sv6o test.html http://[::ffff:172.217.12.132]
* Rebuilt URL to: http://[::ffff:172.217.12.132]/
* Trying ::ffff:172.217.12.132...
* TCP_NODELAY set
* connect to ::ffff:172.217.12.132 port 80 failed: Address not available
* Failed to connect to ::ffff:172.217.12.132 port 80: Address not available
* Closing connection 0
Ok, fair enough.
Well, that’s all the tests I can think of. Found a couple interesting results, now it’s up to a better network engineer than I to figure out what to do about it 