[Dnsmasq-discuss] dnsmasq not overriding leases for static assigments

Simon Kelley simon at thekelleys.org.uk
Mon May 17 20:17:12 UTC 2021



On 17/05/2021 10:22, Jesus M Diaz wrote:
> A couple of new things:
> 
> 1. I have updated the version of dnsmasq from 2.72 to 2.82, cloned from
> *https://salsa.debian.org/debian/dnsmasq
> <https://salsa.debian.org/debian/dnsmasq>* and compiled locally.
> 
> 2. Now I see a more explicit message in the log, making very clear the
> wrong behaviour:
> 
> tail -f /opt/var/log/dhcp | grep d0:4d:e3
> May 17 09:11:38 cinemateka dnsmasq-dhcp[1726]: 1039677414
> DHCPREQUEST(eth0) 192.168.0.217 96:8d:d4:d0:4d:e3
> *May 17 09:11:38 cinemateka dnsmasq-dhcp[1726]: 1039677414 DHCPNAK(eth0)
> 192.168.0.217 96:8d:d4:d0:4d:e3 address in use
> May 17 09:11:38 cinemateka dnsmasq-dhcp[1726]: not using configured
> address 192.168.0.217 because it is leased to a4:50:46:d0:4d:e3*
> May 17 09:11:41 cinemateka dnsmasq-dhcp[1726]: 3254867558
> DHCPDISCOVER(eth0) 96:8d:d4:d0:4d:e3
> *May 17 09:11:41 cinemateka dnsmasq-dhcp[1726]: 3254867558
> DHCPOFFER(eth0) 192.168.0.234 96:8d:d4:d0:4d:e3
> May 17 09:11:41 cinemateka dnsmasq-dhcp[1726]: not using configured
> address 192.168.0.217 because it is leased to a4:50:46:d0:4d:e3*
> May 17 09:11:41 cinemateka dnsmasq-dhcp[1726]: 402483634
> DHCPDISCOVER(eth0) 96:8d:d4:d0:4d:e3
> May 17 09:11:41 cinemateka dnsmasq-dhcp[1726]: 402483634 DHCPOFFER(eth0)
> 192.168.0.234 96:8d:d4:d0:4d:e3
> May 17 09:11:41 cinemateka dnsmasq-dhcp[1726]: 402483634
> DHCPREQUEST(eth0) 192.168.0.234 96:8d:d4:d0:4d:e3
> May 17 09:11:41 cinemateka dnsmasq-dhcp[1726]: 402483634 DHCPACK(eth0)
> 192.168.0.234 96:8d:d4:d0:4d:e3 xiaomi-a2
> 
> So, dnsmasq clearly identifies the client and it knows there is a static
> lease configured, but it ignores it.
> 
> I also found other thread in the mailing list (not sure if this was the
> one you talked of, Geert), */[Dnsmasq-discuss] "multiple MAC addresses
> in a single dhcp-host" vs "multiple dhcp-host lines with the same IP
> address"/*, where in the answers Simon Kelly says:
> 
> Yes. The difference is that in the normal case of multiple lines, once
> the IP address is leased to a MAC address, if another MAC address turns
> up asking for a lease, it won't be offered that IP address (typically it
> will be offered one from the pool) *With multiple MAC addresses on a single line, when the second MAC
> address turns up, the IP address will be unceremoniously ripped away
> from the first MAC address, and given to the second one.*

To answer the question, the host doesn't get the same address because
"multiple MAC addresses on the same line" is NOT the same as a MAC
address with wildcards in it. If you had

dhcp-host=96:8d:d4:d0:4d:e3,a4:50:46:d0:4d:e3,192.168.0.217

then it would work, but

dhcp-host=*:*:*:d0:4d:e3,192.168.0.217

doesn't.

I can't see why the code shouldn't  be altered to make this work, this
is just a case that nobody anticipated.


A possibly more tidy solution to this problem is to configure your
clients to send client-IDs in their DHCP requests. If client-IDs are
present, they totally override MAC addresses, so a client which always
send the same clienr-ID will always be identified and keep the same IP
address, even if its MAC address changes. Of course this only works if
you're OS/DHCP client combination allows configuration of client-IDs.
AFAIK all the common Linux ones do.



Cheers,


Simon.





More information about the Dnsmasq-discuss mailing list