Adding IPv6 at home at last !

I finally took the time lately to one more time have a more serious look at IPv6. Last time I did that it was 6 years ago at it was not great, my ISP at that time (Sonic over AT&T FTTN) was not offering native IPv6.

Initially I got around it by doing IPv6 over IPv4 but one day it started to filter the type of packets used by Hurricane Electric and my IPv6 failed.

Turns out that this time with Comcast it was surprisingly simple to get one IPv6, just configure DHCPv6 and boom you’re done.

You most probably want to ask for prefix delegation so that not only your gateway but also all the devices in your network get an IPv6 address, on Debian you would add to the configuration the following stanza:

  request_prefix 1

As indicated here you will need some kind of script to act on the delegated prefix and start broadcasting it on your internal interface of choice.

I needed a larger range because I have multiple VLAN and I wanted to be able to broadcast one prefix per VLAN. I found 2 projects already packaged on Debian that were offering a bit more flexibility: wide-dhcpv6 and dibbler-client.

I picked the second one because it has support for what I was looking for namely downlink-prefix-ifaces where you can specify more than one interface, dibbler will take the initial prefix and slice it to make as many subnet (up to 256) as needed.

What is nice also with dibbler is that it create a configuration for radvd for each interface.

After tinkering with dibbler I noticed that I was only getting a /64 prefix from my provider, which given my needs is sub-optimal, I have a least 3 subnets which means that the /64 would have to be divided in three /66, although a /66 is plenty of addresses it’s not great as router advertisement requires a /64.

It turns out that a prefix can be requested during prefix delegation, but just as is it’s of little use, I don’t know which prefix my provider will provide me but if the prefix is only zeros then the server is supposed to take this as a hint on the length that I’m requesting; and so setting prefix to ::/60 is nicely asking my provider for a /60 that can easily be split into multiple /64 subnets.