DHCPOFFER NACKed upon first REQUEST

Daniele Albrizio albrizio at univ.trieste.it
Mon Mar 17 16:33:09 UTC 2014


Some clients (quasi 40 out of 2000) are being NACKed just after offering 
a lease like this:

Mar 17 14:27:48 luna dhcpd: DHCPDISCOVER from 74:f0:6d:0c:6e:6f ...
Mar 17 14:27:48 luna dhcpd: DHCPOFFER on 140.105.105.75 to ...
Mar 17 14:27:48 luna dhcpd: DHCPREQUEST for 140.105.105.75 ...: lease 
140.105.105.75 unavailable.
Mar 17 14:27:48 luna dhcpd: DHCPNAK on 140.105.105.75...

This happens not always for the same client.

The shared network segment needs to give out more than 2k leases during 
rush hours.

Syslog and packet dumps are available here:

http://pastebin.com/YVd032Pq

Note that the same client after a while (18 mins) successfulli gets the 
lease and uses it for 10 minutes.

Meaningful server configuration on both servers (failover configuration) 
is here:

http://pastebin.com/DjibSBCY

All gateways are configured on the same router relay interface.

Last lease for that ip on secondary failover is:

lease 140.105.105.75 {
   starts 1 2014/03/17 08:44:13;
   ends 1 2014/03/17 08:46:13;
   tstp 1 2014/03/17 08:46:13;
   tsfp 1 2014/03/17 08:46:13;
   atsfp 1 2014/03/17 08:46:13;
   binding state free;
   hardware ethernet 8c:be:be:71:xx:xx;
}

On primary failover is:

lease 140.105.105.75 {
   starts 1 2014/03/17 08:44:13;
   ends 1 2014/03/17 08:46:13;
   tstp 1 2014/03/17 08:46:13;
   tsfp 1 2014/03/17 08:46:13;
   atsfp 1 2014/03/17 08:46:13;
   cltt 1 2014/03/17 08:44:13;
   binding state free;
   hardware ethernet 8c:be:be:71:xx:xx;
   client-hostname "android-8c3c88a431f45c24";
   on expiry {
     set clientIP =
        binary-to-ascii (10, 8, ".", leased-address) ;
     if exists agent.remote-id {
       set clientMAC =
          binary-to-ascii (16, 8, ":",
                            substring (option agent.remote-id, 2, 6)) ;
       execute ("/etc/adminscripts/dhcp/leasebacklog.sh", "expiry", 
clientIP, clientMAC, "", "");
     } else {
       execute ("/etc/adminscripts/dhcp/leasebacklog.sh", "expiry", 
clientIP, "", "", "");
     }
   }
   on release {
     set clientIP =
        binary-to-ascii (10, 8, ".", leased-address) ;
     set clientMAC =
        binary-to-ascii (16, 8, ":",
                          substring (hardware, 1, 6)) ;
     execute ("/etc/adminscripts/dhcp/leasebacklog.sh", "release", 
clientIP, clientMAC, "", "");

No leases were present on both servers for the actual client mac address 
until successful transaction.

I'm bumping my head in a dead end. Every suggestion would be very 
appreciated. Thanks!

Daniele


More information about the dhcp-users mailing list