While the DHCP server protocol is designed to support dynamic management of IP addresses, there is nothing to stop someone from implementing a server that uses the DHCP protocol, but does not provide that kind of support. In particular, the maintainer of a BOOTP server-implementation might find it helpful to enhance their BOOTP server to allow DHCP clients that cannot speak “BOOTP” to retrieve statically defined addresses via DHCP. The following terminology has become common to describe three kinds of IP address allocation/management. These are independent “features”: a particular server can offer or not offer any of them:
- Manual allocation: the server’s administrator creates a configuration for the server that includes the MAC address and IP address of each DHCP client that will be able to get an address: functionally equivalent to BOOTP though the protocol is incompatible.
- Automatic allocation: the server’s administrator creates a configuration for the server that includes only IP addresses, which it gives out to clients. An IP address, once associated with a MAC address, is permanently associated with it until the server’s administrator intervenes.
- Dynamic allocation: like automatic allocation except that the server will track leases and give IP addresses whose lease has expired to other DHCP clients.
Other features which a DHCP server may or may not have:
- Support for BOOTP clients.
- Support for the broadcast bit.
- Administrator-settable lease times.
- Administrator-settable lease times on manually allocated addresses.
- Ability to limit what MAC addresses will be served with dynamic addresses.
- Allows administrator to configure additional DHCP option-types.
- Interaction with a DNS server. Note that there are a number of interactions that one might support and that a standard set & method is in the works.
- Interaction with some other type of name server, e.g. NIS.
- Allows manual allocation of two or more alternative IP numbers to a single MAC address, whose use depends upon the gateway address through which the request is relayed.
- Ability to define the pool/pools of addresses that can be allocated dynamically. This is pretty obvious, though someone might have a server that forces the pool to be a whole subnet or network. Ideally, the server does not force such a pool to consist of contiguous IP addresses.
- Ability to associate two or more dynamic address pools on separate IP networks (or subnets) with a single gateway address. This is the basic support for “secondary nets”, e.g. a router that is acting as a BOOTP relay for an interface which has addresses for more than one IP network or subnet.
- Ability to configure groups of clients based upon client-supplied user and/or vendor class. Note: this is a feature that might be used to assign different client-groups on the same physical LAN to different logical subnets.
- Administrator-settable T1/T2 lengths.
- Interaction with another DHCP server. Note that there are a number of interactions that one might support and that a standard set & method is in the works.
- Use of PING (ICMP Echo Request) to check an address prior to dynamically allocating it.
- Server grace period on lease times.
- Ability to force client(s) to get a new address rather than renew.
Following are some features related not to the functions that the server is capable of carrying out, but to the way that it is administered.
- Ability to import files listing manually allocated addresses (as opposed to a system which requires you to type the entire configuration into its own input utility). Even better is the ability to make the server do this via a command that can be used in a script, rdist, rsh, etc.
- Graphical administration.
- Central administration of multiple servers.
- Ability to import data in the format of legacy configurations, e.g. /etc/bootptab as used by the CMU BOOTP daemon.
- Ability to make changes while the server is running and leases are being tracked, i.e. add or take away addressees from a pool, modify paramvcers.
- Ability to make global modifications to paramvcers, i.e., that apply to all entries; or ability to make modifications to groups of ports or pools.
- Maintenance of a lease audit trail, i.e. a log of the leases granted.