I can fetch the header of websites via IPv6 but not the webpage, why?

Erik Kline ek at google.com
Sun Jan 19 21:15:37 CET 2014


> curl -v -6 http://anyurl.foo
>
> doesn't work, the connection just times out SOMETIMES (when there is a
> problem, tcpdump on the router says I doesn't even receive any packets back,
> ip6tables is empty on the Desktop).. BUT a:
>
> curl -v -6 --head http://anyurl.foo
>
> is perfectly working. See my ping from my Desktop:
>
> root at server:~# ping6 -c 10 -s 2000 -M do IPV6ADDRESSOFANYURL.FOO
> PING IPV6ADDRESSOFANYURL.FOO(IPV6ADDRESSOFANYURL.FOO)
> 2000 data bytes From IPV6ADDRESSOFSOMEGATEWAY icmp_seq=1 Packet too big:
> mtu=1452
> 2008 bytes from IPV6ADDRESSOFANYURL.FOO: icmp_seq=2 ttl=54 time=82.5 ms
> 2008 bytes from IPV6ADDRESSOFANYURL.FOO: icmp_seq=3 ttl=54 time=82.4 ms
>
> soo... it couldn't be an MTU problem.. since the ping is ok.. (?) -> there
> are icmp echo replies..

I actually suspect that MTU is the problem.

This test here confirms that PTBs are getting back to your computer,
which then fragments the outgoing packets.  That's good, but not
sufficient.

What's probably happening in the curl case is that the PTB needs to
get back to the website to it can adjust accordingly.  Whether PTBs
are actually being sent to the website, and whether the website is
receiving and honoring them will take additional debugging from such a
site.

The curl --head likely works because the headers all fit within the actual MTU.

You can try to modify you're advertised MSS.  How you do so depends on
your OS, but if you can set it to, say, around 1392 and retest I would
expect things might start working better.  Once you've got something
working you can experiment to find the right value.


More information about the ipv6-ops mailing list