I have a really strange situation. When IPv6 is enabled, I can't access facebook. I can browse to it, but all the AJAX queries fail, so I cannot view the feed, send messages, or do anything remotely useful.
facebook.com is pingable and returns an IPv6 address:
$ ping facebook.com
PING facebook.com(edge-star-mini6-shv-01-nrt1.facebook.com (2a03:2880:f10f:83:face:b00c:0:25de)) 56 data bytes
64 bytes from edge-star-mini6-shv-01-nrt1.facebook.com (2a03:2880:f10f:83:face:b00c:0:25de): icmp_seq=1 ttl=54 time=21.3 ms
64 bytes from edge-star-mini6-shv-01-nrt1.facebook.com (2a03:2880:f10f:83:face:b00c:0:25de): icmp_seq=2 ttl=54 time=21.8 ms
64 bytes from edge-star-mini6-shv-01-nrt1.facebook.com (2a03:2880:f10f:83:face:b00c:0:25de): icmp_seq=3 ttl=54 time=20.7 msI can disable IPv6, and then everything works:
$ sudo sysctl -p
[sudo] password for misha:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
$ ping facebook.com -c 5
PING facebook.com (31.13.82.36) 56(84) bytes of data.
64 bytes from edge-star-mini-shv-01-nrt1.facebook.com (31.13.82.36): icmp_seq=1 ttl=55 time=20.3 ms
64 bytes from edge-star-mini-shv-01-nrt1.facebook.com (31.13.82.36): icmp_seq=2 ttl=55 time=20.4 ms
64 bytes from edge-star-mini-shv-01-nrt1.facebook.com (31.13.82.36): icmp_seq=3 ttl=55 time=21.4 ms
64 bytes from edge-star-mini-shv-01-nrt1.facebook.com (31.13.82.36): icmp_seq=4 ttl=55 time=21.5 ms
64 bytes from edge-star-mini-shv-01-nrt1.facebook.com (31.13.82.36): icmp_seq=5 ttl=55 time=21.1 ms
--- facebook.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 20.330/20.957/21.503/0.493 msEverything continues to work well for a few hours, until IPv6 gets somehow re-enabled, and I have to repeat the procedure.
My questions:
- Why is FB not working when IPv6 is enabled?
- Why does IPv6 get re-enabled after some time passes? I updated sysctl.conf, so shouldn't the changes be permanent?
1 Answer
Facebook uses IPv6 a lot, so it should definitely work. Their datacenters are completely IPv6 internally.
What you might be seeing are problems with MTU handling. The initial page might be smaller than the lowest MTU, or maybe that server uses different packet sizes. If the other requests have different sizes, or their servers handle path MTU discovery differently, then you might see something like this. It's a guess though.
Are you using an IPv6 tunnel by any chance? That might explain part of it. I'll update the answer when you provide more information.
3