Two leases for the same Mac address.

Simon Hobson dhcp1 at
Sat Feb 10 14:38:24 UTC 2007

Francis SOUYRI wrote:

>     I am using thinstation which are booting on the network.
>When the hardware boots (ACCTON Ethernet card) it requires two times for
>an IP address, the DHCP server (dhcp 3.0.3-28 from Fedora core 5),
>offers the two times the same IP address.
>Then the thinstation retrieves the linux kernel,  the software boot and
>ask for an IP address, now the DHCP server does not offer the same IP
>address but another one.
>For each thinstation that I start they takes two IP, and finally the
>DHCP server has not enough free addresses left for booting all the
>Sometimes when I checks the lease file, there is more then two leases
>for one mac address....

This is quite normal. Taking your queries in reverse order, you will 
see as many entries in the lease file as there were transactions with 
clients - eg if you reboot your client, you will see more lease 
records written to the leases file. This is because the leases file 
is an 'append only' file and any event that requires an update to the 
persistent database results in a new record being added to the file. 
Periodically, the server will write out a new file containing only 
the latest lease for each IP address.

Now to the main part of your query. This has been covered many, many 
times before on this list, usually when the client OS is Windows. If 
you look at the leases for the two addresses, you will probably find 
that one lease has no client-id (labelled UID in the lease file 
IIRC), while the other has one (or they have different client-ids). 
The server will use the client-id as the primary key to identify the 
client and use the MAC address only of the client-id is not present. 
Thus if a client sometimes uses no client-id, and sometimes does use 
one, then to any standards compliant server they are different 

The usual issue when this comes up is a system that dual-boots into 
Linux (no client id by default) and Windows (uses MAC address as 
client-id), or does a network boot and then boots into Windows.

The 'correct' answer is to persuade your client to use the same 
client-id all the time, but this can be hard. Alternatively, if you 
can identify the boot code and OS separately it is possible to create 
two pools so that clients can be given a different (short) lease 
while booting so as not to exhaust the 'working' addresses.

Alternatively, there are some patches (see that alter the way the server 
handles client-id - but be aware that the server is no longer RFC 
compliant when these are in use.

More information about the dhcp-users mailing list