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.