I wrote a while back about issues with IPv6 on Linux. It turns out that most of the pain occurs for two reasons:
Linux doesn't accept router advertisements by default. If you configure your router to tell everyone on the network that it has a nonstandard MTU, Linux will ignore the advertisements.
Linux will act upon any Packet Too Large
messages it receives
and in fact will create a temporary route (visible from the
ip route
command) that has the correct reduced MTU but, for
whatever reason, most programs won't use the new route without
a restart. That is, if my mail client hangs due to a
Packet Too Large
message, it won't be able to send any mail
until I restart the program.
The first point can be addressed by adding the following to /etc/sysctl.conf
:
net.ipv6.conf.default.accept_ra=1 net.ipv6.conf.default.accept_ra_mtu=1
Usually, net.ipv6.conf.default.accept_ra_mtu
is already set to 1
, but
it's worth being explicit about it.
I also add net.ipv6.conf.default.autoconf=0
because I statically
assign addresses.
The second point can be addressed by restarting the program, as sad as that is.