The Internet Software Consortium’s DHCP daemon software is perhaps the most well-known implementation available. Free as in beer, it comes standard or can be installed on most Linux distributions.

The dhclient is the client suite of the Internet Software Consortiums’s DHCP server software. It is normally installed alongside its server counterpart, dhcpd.

Configuration is in readable text:

# Configuration file for /sbin/dhclient, which is included in Debian's
# dhcp3-client package.
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
send host-name "";
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "";
#prepend domain-name-servers;
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;
#require subnet-mask, domain-name-servers;
#timeout 60;
#retry 60;
#reboot 10;
#select-timeout 5;
#initial-interval 2;
#script "/etc/dhcp3/dhclient-script";
#media "-link0 -link1 -link2", "link0 link1";
#alias {
# interface "eth0";
# fixed-address;
# option subnet-mask;

DHCP Server configuration is done in a nested fashion, by declaring subnets, settings and hosts in that subnet, for example:

ddns-update-style none; // Do not update Dynamic DNS entries
authoritative; // Declares this DHCP server to be the primary one on this network
ping-check true; // Check if an IP is in use before giving it out
subnet netmask { // What subnet are we using?
deny unknown-clients; // Do not allow unknown machines on the network
range; // Serve addresses from this range
option domain-name-servers,; // The DNS-servers
option ntp-servers; // Specifies the NTP-server in use
option domain-name "";
option routers;
option broadcast-address;
next-server; // Used for TFTP/PXE/netbooting
filename "pxelinux.0"; // File loaded from the TFTP server
default-lease-time 86400; // By default, give out addresses for 24 hours
max-lease-time 86400; // Do not allow clients use addresses for more than 24 hours
host staticserver { // Give the machine this hostname
hardware ethernet 00:1f:d3:6e:3a:7c; // This MAC address...
fixed-address; // offered this IP