Solution: no address range available for DHCPv6 request

Expected Behaviour:

Checking Enable additional IPv6 support (SLAAC + RA) results in IPv6 address distribution to the network.

Actual Behaviour:

Logs show messages like this:
no address range available for DHCPv6 request via enp3s0.11

Debug Token:

https://tricorder.pi-hole.net/sAyCbqRY/

Solution

I see quite a few requests for help with DHCPv6 that include the log message I mentioned in the subject. If you have IPv6 connectivity to the Internet, you might still see this log message. Many posts are directed to this solution, which is correct but doesn't help those who actually have IPv6 working.

I'm running the pihole docker on an Ubuntu system that acts as the router for my home network. This system has full IPv6 connectivity and passes all the prescribed tests. It has an IPv6 address on the Internet interface and a prefix delegation on the interface serving the home net. IPv6 routing is enabled and allowed in its firewall rules. If I manually assign an IPv6 address in that range on a client and set the IPv6 router address, I have IPv6 connectivity on the internal clients. The system is ready for IPv6, but pi-hole doesn't find the correct address range.

I noticed that dnsmasq.conf includes this line for DHCPv6:

# Enable IPv6 DHCP variant
dhcp-range=::,constructor:eth0,ra-names,ra-stateless,64

The interface eth0 does not exist on my system. Through the web interface, I added the same line again, but with the correct interface name:

dhcp-range=::,constructor:enp3s0.11,ra-names,ra-stateless,64

I restarted the docker container and it started serving IPv6 addresses as it should. These address leases don't show up in the web interface, but it is working as I hoped. It would be HELPFUL if I could specify the interface name in the UI. It would be COOL if it just used the same interface name it's using for DHCPv4. It would be AMAZING if pi-hole discovered the correct interface name for this config line on its own.

I hope this helps somebody.

That should be addressed by pointing your Pi-hole container's FTLCONF_dns_interface environment variable to the correct interface.

That expectation is unwarranted:
Pi-hole doesn't assign any IPv6 addresses.

Ticking Enable additional IPv6 support (SLAAC + RA)` just tells Pi-hole to send out IPv6 Router Advertisements to include RDNSS options for its own IPv6, and answer its own IPv6 when queried for local nameservers via Stateless DHCPv6.

The only situation where ticking that option would be helpful would be if your router would not allow changing its advertised DNS server IPv6 addresses, but only switching off RDNSS RAs and DHCPv6 altogether.

In that case, clients would be able to pick up your Pi-hole machine's IPv6 as DNS server.

However, if your router would already distribute your Pi-hole machine's IPv4 as DNS server via DHCP anyway, you could leave that option unticked as well.

No, Pi-hole doesn't assign IPv6 addresses.
Your clients either auto-assign them via NDP/SLAAC, or they acquire them from a stateful DHCPv6 server.

Thank you -- as a new pi-hole user, this is information I'm grateful to have. I wasn't aware of that variable. It has also been a few years since I've played with IPv6, so I'm shaking off the rust and dust in my gray matter.

I applied the change to my docker-compose.yaml and created a new container -- working great without my added configuration line. Thanks again!

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.