[Dnsmasq-discuss] same DHCP client on multiple interfaces

Hamish Moffatt hamish at moffatt.email
Thu Sep 8 06:08:47 UTC 2022


On 5/9/22 10:57, hamish at moffatt.email wrote:
> On 29/8/22 18:43, Hamish Moffatt wrote:
>> I've got dnsmasq listening on multiple interfaces (two VLANs), and at 
>> least one client that is also on both VLANs at once. The client has 
>> the same MAC address on both VLANs. I'd like to assign an IP address 
>> on each VLAN via DHCP.
>>
>> I have the following in my config:
>>
>> dhcp-host=38:C9:86:40:86:37,192.168.42.18,[::0:18],potoroo
>> dhcp-host=38:C9:86:40:86:37,192.168.66.18,potoroo-iotlan
>>
>> dnsmasq (v2.80, in OpenWRT 19.07) seems to allocate the IP addresses 
>> ok, but only the most recently leased hostname requested works. 
>
>
> I've now got v2.85 (OpenWRT 21.02) and the behaviour has changed - I 
> now get IPv6 addresses from both subnets returned for the host name. 
> Only the latest IPv4 address leased is returned still though. 


Now on v2.86 (OpenWRT 22.03).


So, I got the suggestion off-list to set the DHCP client-id uniquely for 
each connection. This fixed IPv4, even without matching on the client ID 
in the config, because dnsmasq is tracking both separately in the leases 
file. Leases (just IPv4) showed:

1662658086 38:c9:86:40:86:37 192.168.42.18 potoroo 
ff:b7:b0:95:87:00:03:00:01:83:6d:06:a5:ef:01
1662658067 38:c9:86:40:86:37 192.168.66.18 potoroo-iotlan 
ff:cc:62:6a:65:00:03:00:01:cb:45:f5:1b:f7:42


However it did not fix IPv6, where the hostnames ended up being 
associated with the wrong IP sometimes and even shown that way in the 
log. The fix for this was to match on client ID, but I couldn't get the 
client ID to match for IPv4 and IPv6, so I ended up with two separate 
entries for each host:

dhcp-host=,id:ff:b7:b0:95:87:00:03:00:01:83:6d:06:a5:ef:01,192.168.42.18,potoroo
dhcp-host=,id:ff:cc:62:6a:65:00:03:00:01:cb:45:f5:1b:f7:42,192.168.66.18,potoroo-iotlan
dhcp-host=,id:00:03:00:01:83:6d:06:a5:ef:01,[::0:18],potoroo
dhcp-host=,id:00:03:00:01:cb:45:f5:1b:f7:42,[::0:18],potoroo-iotlan


This seems to work as expected. In NetworkManager I had to set the 
following on each connection to get distinct client IDs:

connection.stable-id:                   "${CONNECTION}"
ipv4.dhcp-client-id:                    ipv6-duid
ipv6.dhcp-duid:                         stable-ll


... although there are many other configurations that would work too.


Hamish



More information about the Dnsmasq-discuss mailing list