[Dnsmasq-discuss] override DNS server for particular hosts on IPv6

Hamish Moffatt hamish at moffatt.email
Thu Mar 25 08:50:18 UTC 2021


I'm attempting to override the DNS server for a few hosts on both IPv4 
and IPv6. I've tagged the hosts and applied dhcp-option to that tag and 
it's working correctly for IPv4, but I'm not having much luck with IPv6.

I'll admit right now that I don't fully understand the use of DHCPv6 and 
how DNS servers are discovered, so it might be that this is just not 
possible, at least for all types of clients.

My dnsmasq is at ::1, and I want to use the DNS server at ::18 on the 
same prefix. What I have is:

dhcp-option=tag:adblock,6,192.168.42.18
dhcp-option=tag:adblock,option6:dns-server,[<MY ULA>::18],[<MY GLA>::18]

dhcp-range=set:lan,192.168.42.20,192.168.42.239,255.255.255.0,12h
ra-param=br-lan,0,7200
dhcp-range=set:lan,::1000,::ffff,constructor:br-lan,slaac,ra-names,12h
dhcp-option=lan,option6:dns-server,[::]

enable-ra
quiet-ra


What I see is that Android just has the <MY GLA>::1 address as its DNS 
server. A Linux client using NetworkManager has <MY GLA>::1 as well as 
the two override servers. Even when I set <MY GLA>::18 as the server in 
the dhcp-option clause for the whole network, the devices still learned 
the <MY GLA>::1 address.

If I remove the dhcp-option clause for the whole network then Android 
shows it's using the link local address for ::1 instead.

How is Android always learning of the dnsmasq server itself as the DNS 
server, and can I fix it?



Thanks

Hamish




More information about the Dnsmasq-discuss mailing list