I have recently added IPv6 to our network as per the instructions at http://www.chronos-tachyon.net/reference/debian-ipv6-and-hurricane-electric.
However, the hosts on the network automatically configure the default route to the link-local address of the router instead of the global address.
The article at http://ipvsix.me/?p=88 says:
You will find that on the LAN host, their default route and gateway point to the Link-Local address of eth1 on the Linux machine acting as the IPv6 gateway/router. This is entirely normal and expected.
My problem is that the router (running a derivation of Debian) does not respond to NDP requests for its link-local address because it has a global address configured.
Is there any way to either:
- Get the hosts to automatically use the global address of the router for the default host, or
- Get the router to reply to NDP requests for its link-local address.
/etc/radvd.conf on the router:
interface eth0 {
AdvSendAdvert on;
AdvLinkMTU 1480;
MinRtrAdvInterval 60;
MaxRtrAdvInterval 180;
prefix 2001:xxxx:xxxx:xxxx::1/64 {
AdvRouterAddr on;
AdvPreferredLifetime 600;
AdvValidLifetime 3600;
};
route ::/0 {
};
RDNSS 2001:xxxx:xxxx:xxxx::2 {};
};
IPv6 back-to-back routing is entirely based on link-local addresses as a consequence it is normal to see the router considering the gateway link-local.
Even if you use IPv6 global addresses, devices will do layer2 resolution using Network Discovery to get the link-local addresses.
Turns out that I had the wrong interface specified in
/etc/radvd.conf
. Correcting it solved the issue.Check your firewall settings.. my best guess would be that something is blocking icmp6, which breaks IPv6 even worse than the equivalent error with IPv4. Simplest command to list the ipv6 firewall rules (as root):