Now that I have IPv6 with Comcast working I wanted to make it dynamically configure the client devices. I'm going to use radvd for that.

In my previous post, https://www.frakkingsweet.com/ipv6-linux-firewall-and-comcast/, I got IPv6 forwarding working through a Comcast Business internet connection with a Debian 10 (Buster) OS running on a Raspberry Pi. I now needed to make it automatically configure the addresses and DNS on the other devices on my network, like the phones, laptops, desktops, ridiculous number of PI's, etc. You just can't assign IP's manually to every device, and not every device needs it (thank the DNS gods). I chose radvd for this task because that's what it's designed for.

First thing, install radvd. Execute sudo apt install radvd and it installs. I got an error saying that permissions were insecure and that /etc/radvd.conf didn't exist.

Easy enough to fix, I created a new one with the below content. My internal network is on eth0. Adjust your config as needed.

sudo vi /etc/radvd.conf

interface eth0 {
        AdvSendAdvert on;
        MinRtrAdvInterval 3;
        MaxRtrAdvInterval 10;
        prefix 2603:3026:41d:7df3::/64 {
                AdvOnLink on;
                AdvAutonomous on;
                AdvRouterAddr on;
        };
        RDNSS 2603:3026:41d:7df3::2 2603:3026:41d:7df3::3 { };
};

This config will broadcast out on eth0 that it is a router for the specified prefix. In this case it is 2603:3026:41d:7df3::/64. It also includes 2 DNS servers as well.

Once the config file was created I started radvd by using sudo systemctl start radvd.

To make radvd auto start on every boot, execute sudo systemctl enable radvd.

Within a few seconds of the service starting, my desktop and phone picked up a new IPv6 address and gateway. The gateway was set to the link-local address of my firewall which is perfectly normal and valid. It all worked exactly as expected.