How do i keep ISC-DHCPD from offering different IPs when there is two requests from the same MAC

I have a set of Nodes which get their addresses from ISC-DHCPD. Since they boot using PXE, there will be two rounds of DHCP (one from the PXE, one from the OS) and for some reason, ISC-DHCPD will offer two different IPs. This is bad, since the numbers of the nodes are supposed to correspond to the last byte of the ip.

Here is an excerpt of the Syslog, showing whats happening:

May 25 23:16:26 cluster dhcpd: DHCPDISCOVER from 08:00:27:d3:d5:3b via eth1
May 25 23:16:27 cluster dhcpd: DHCPOFFER on 192.168.0.1 to 08:00:27:d3:d5:3b via eth1
May 25 23:16:29 cluster dhcpd: DHCPREQUEST for 192.168.0.1 (192.168.0.254) from 08:00:27:d3:d5:3b via eth1
May 25 23:16:29 cluster dhcpd: DHCPACK on 192.168.0.1 to 08:00:27:d3:d5:3b via eth1
May 25 23:17:07 cluster dhcpd: DHCPDISCOVER from 08:00:27:d3:d5:3b via eth1
May 25 23:17:08 cluster dhcpd: DHCPOFFER on 192.168.0.2 to 08:00:27:d3:d5:3b via eth1
May 25 23:17:08 cluster dhcpd: DHCPREQUEST for 192.168.0.2 (192.168.0.254) from 08:00:27:d3:d5:3b via eth1
May 25 23:17:08 cluster dhcpd: DHCPACK on 192.168.0.2 to 08:00:27:d3:d5:3b via eth1
May 25 23:17:08 cluster dhcpd: DHCPREQUEST for 192.168.0.2 (192.168.0.254) from 08:00:27:d3:d5:3b via eth1
May 25 23:17:08 cluster dhcpd: DHCPACK on 192.168.0.2 to 08:00:27:d3:d5:3b via eth1

Here is the corresponding excerpt from the leases-file:

lease 192.168.0.1 {
  starts 1 2015/05/25 21:16:28;
  ends 5 2151/07/02 03:44:43;
  cltt 1 2015/05/25 21:16:28;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 08:00:27:d3:d5:3b;
  uid "\001\010\000'\323\325;";
}
lease 192.168.0.2 {
  starts 1 2015/05/25 21:17:08;
  ends 5 2151/07/02 03:45:23;
  cltt 1 2015/05/25 21:17:08;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 08:00:27:d3:d5:3b;
}
lease 192.168.0.2 {
  starts 1 2015/05/25 21:17:08;
  ends 5 2151/07/02 03:45:23;
  cltt 1 2015/05/25 21:17:08;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 08:00:27:d3:d5:3b;
}

This is the configuration of the dhcp-server:

ddns-update-style none;

default-lease-time -1;
max-lease-time -1;

authoritative;

allow booting;
allow bootp;
next-server 192.168.0.254;
filename "/pxelinux.0";

log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {

    range 192.168.0.1 192.168.0.253;
    interface eth1;
    option routers 192.168.0.254;
    option domain-name "cluster.hpc.org";
    option domain-name-servers 192.168.0.254;

}

Solution 1:

You can get it with the ignore-client-uids flags. It is included since the 4.2.0 version of isc-dchpd :

Add this line:

ignore-client-uids true;

     ignore-client-uids flag;

     If the ignore-client-uids statement is present and has a value of
     true or on, the UID for clients will not be recorded.  If this
     statement is not present or has a value of false or off, then client
     UIDs will be recorded.