So, ya know, I have this website,
www.blaatschaap.be. This website
offers IPv6 connectivity. Also, I have
IPv6 connectivity at home. My ISP is
xs4all, and they offer an IPv6 tunnel (proto41).
So, last week, a problem appeared on the
website. It seemed to be impossible to
upload a photo. When I tried to upload
a photo, it just timed-out. I tried to change
some settings on the server, but without
After I started using a sniffer, the true
problem showed itself. The problem wasn’t
at the server, but at my home.
Look at the result from the sniffer:
So, what are we seeing here.
The first three packets show a TCP handshake,
nothing unusual there. Since I am uploading
an image over a HTTP POST, there is a lot of data
to be transferred, which is in the next packet.
In a reply to that packet, we receive a ICMPv6
packet ‘too big’. So, that’s the problem, the packet
my browser tried to sent was too big. According
to the IPv6 Specs, the client is supposed to send
a smaller packet when it receives a ICMPv6 too big
packet. When looking at what the sniffer shows,
that appears even to be happening, but for some
reason, it still doesn’t seem to work.
The MTU, is 1480 for a Proto41 IPv6 tunnel.
The default MTU for Ethernet networks
is 1500, so changing the MTU to 1480 solves the
problem. (see this link)
So, now I’ve found the problem, and know how to
fix it, it’s time to have this fix made permanently.
So, looking for the fist solution:
pre-up /sbin/ifconfig $IFACE mtu 1480
to my /etc/network/interfaces file. (See this link)
Applying this solution does set the MTU to the
desired value, but also makes IPv6 to stop
working. So, this solution is no option.
The solution that did work is
up ip link set mtu 1480 dev $IFACE
With that line added to my /etc/network/interfaces
file, my IPv6 connectivity works, and my MTU is set,
so I will not generate packets that are too big for
my tunnel. (See this link)