[Dnsmasq-discuss] DHCP, how to ignore the client MAC address?

Michael Schleicher smicha at schleicher.li
Thu Jan 10 20:26:21 GMT 2019


Hi John,

many thanks for your reply and help.

On 1/10/19 9:28 AM, john doe wrote:
> On 1/9/2019 11:38 AM, MIchael Schleicher wrote:
>>
>> On 09.01.19 08:14, john doe wrote:
>>> On 1/8/2019 11:31 AM, smicha wrote:
>>>> Hi John,
>>>>
>>>> thanks for your reply.
>>>>
>>>> I did some tests with your hints.
>>>>
>>>> On 7.1.2019 17:41, john doe wrote:
>>>>>
>>>>> Some hints from dnsmasq.conf:
>>>>>
>>>>> # Give the machine which says its name is "bert" IP address
>>>>> # 192.168.0.70 and an infinite lease
>>>>> #dhcp-host=bert,192.168.0.70,infinite
>>>>
>>>> Do not work with my setup, because when we re-deploy a VM, the MAC
>>>> address will be autom. changed.
>>>> The re-delpoyed VM will than get a different IP as the old vm had
>>>> before.
>>>>
>>>
>>> I just tested this option  and the behavior described is correct with
>>> dnsmasq 2.76, from the man page:
>>
>> I have running the version 2.78.
>>
>>> "--dhcp-host=lap,192.168.0.199 tells dnsmasq to always allocate the
>>> machine lap the IP address 192.168.0.199.
>>> Addresses allocated like this are not constrained to be in the range
>>> given by the --dhcp-range option, but they must be in the same subnet as
>>> some valid dhcp-range. For subnets which don't need"
>>
>> Yes, the config "--dhcp-host=lap,192.168.0.199" is working. The VM with
>> the hostname "lap" will get the IP 192.168.0.199.
>>
>> But, I have the problem, when I have a new VM, a new version of the VM
>> "lap" which have a different MAC address.
>> Than, that new version of VM "lap" get not the 192.168.0.199. They get
>> an other IP from the pool.
>>
>>> As long as a client use the hostname ("lap") the same IP will always be
>>> given to that client, the MAC address is not used.
>>>
>>
>> As far as I see, for the "first" IP provisioning that is true -> the
>> Hostname is enough.
>> But, than the "dnsmasq.leases" file have also the MAC address and
>> Client-ID values stored, which will be compared an the next DHCP Requests.
>> If than one of the values are different (MAC, CLIENT-ID) the DHCP-Client
>> will get an other IP.
>>
>> Please see below, a example...
>>
>>
>>>>>
>>>>> See also (1) for more info on 'dhcp-host'.
>>>>>
>>>>>
>>>>> 1)  http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html
>>>>
>>>>
>>>> Maybe is it possible to "patch" the code of dnsmasq, where dnsmasq can
>>>> ignore the MAC address in the DHCP task?
>>>>
>>>
>>> Possibly, more nolageable dnsmasqer would need to chime in to do that
>>> though! :)
>>> If '--dhcp-host=hostname,IP' is not working for you more info would need
>>> to be provided.
>>>
>>
>>
>> BTW: the VM "lap" does not have set a special "DHCP-Client-Identifier",
>> so it use for DHCP-Client-ID the MAC address.
>>
>>
>> Here some outputs of the dnsmasq.leases file:
>>
>> # inital DHCP-Request:
>>
>> 1547107342 00:50:56:85:02:fa 192.168.0.199 lap 01:00:50:56:85:02:fa
>>
>> As you can see, the VM "lap" (MAC 00:50:56:85:02:fa) get the expected IP
>> -> so far so good.
>>
>>
>> Next, I power off the VM "lap" without a DHCP-Release and deploy a copy
>> of the VM "lap" which have than an other MAC (00:50:56:85:02:ff) ! ->
>> the MAC will always set by the deployment of a new VM version.
>>
>>
>> Now, I start the new version of the VM "lap" (the old version of the VM
>> "lap" is no longer available.
>>
>> The dnsmasq.leases looks now, like this:
>> 1547116110 00:50:56:85:02:ff 192.168.0.200 lap 01:00:50:56:85:02:ff
>> 1547107342 00:50:56:85:02:fa 192.168.0.199 * 01:00:50:56:85:02:fa
>>
>>
>> As you see, the VM "lap" have now the IP "192.168.0.200" and not the
>> expected IP "192.168.0.199.
>>
>> Do you have an idea how I can fix that?
>> I tested different options with "--dhcp-host", but with no luck.
>>
>> I hope you can help my.
>>
> 
> Beside looking at the VM software to always assign the same MAC address
> to the same guest and the fact that I'm able to reproduce what you are
> seeing, that is all I can offer.
> 

I have already checked the VM deployment software, when a new version of
a VM will be cloned/deployed, the VM-deployment-layer give that new
clone/deployed VM a different MAC.

As I said, for Linux VM's, I can set a uniq Client-ID that helps, but on
Windows you can not set define a Client-ID (as far as I know).

I have already try to find in the dnsmasq code the part, where the
incoming DHCP-Request will be received and maybe I can change or set the
Client-ID (fake) for the upcoming processing, but i did not found the
correct part of the code and also have no good knowhow in C.

I will try to find the part and do than some changes and tests.

If maybe someone can give me some hints, that's very welcome.

Many thanks
Michael



More information about the Dnsmasq-discuss mailing list