isc-dhcpd does not play niceley with diskless boot
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
isc-dhcp (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
In Ubuntu 12.04.3 the isc-dhcp-server (v4.1) does not work properly with diskless boot and ddns.
During diskless boot the server issues an IP.
The machine boots and the OS loads, during loading and to keep ddns happy the isc-dhcp-client (dhclient) needs to be loaded even though the machine already has an address.
Because the machine has just booted it has no /var/lib/
so dhclient does a DISCOVER with the current ip for that interface.
The server has already issued an address (it issued it during boot) so it does a ping which succeeds as the address is correct.
However dhcpd does not check the MAC so it assumes the address is already allocated (which it is, correctly) so it issues another new address and does a DDNS update. It has now created a DDNS entry to the wrong address.
This cycle continues until all the addresses for a range are exhausted.
Correct operation:
It should check the MAC resolution after the ping-check and if the MAC matches the UID and/or MAC of a previous lease it should change it's usual behaviour. It should re-issue the address that was requested and previously allocated and behave as though the client did a REQUEST instead of a DISCOVER.
Work round, add
ping-check false;
to the /etc/dhcpd.conf
Though this is not ideal as a ping-check is a good sanity check.