mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-09-01 23:05:29 +00:00
moved to server/
This commit is contained in:
330
dhcpd.cat8
330
dhcpd.cat8
@@ -1,330 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
dhcpd(8) dhcpd(8)
|
|
||||||
|
|
||||||
|
|
||||||
NNAAMMEE
|
|
||||||
dhcpd - Dynamic Host Configuration Protocol Server
|
|
||||||
|
|
||||||
SSYYNNOOPPSSIISS
|
|
||||||
ddhhccppdd [ --pp _p_o_r_t ] [ --ff ] [ --dd ] [ --ccff _c_o_n_f_i_g_-_f_i_l_e ] [ --llff
|
|
||||||
_l_e_a_s_e_-_f_i_l_e ] [ _i_f_0 [ _._._._i_f_N ] ]
|
|
||||||
|
|
||||||
DDEESSCCRRIIPPTTIIOONN
|
|
||||||
The Internet Software Consortium DHCP Server, dhcpd,
|
|
||||||
implements the Dynamic Host Configuration Protocol (DHCP)
|
|
||||||
and the Internet Bootstrap Protocol (BOOTP). DHCP allows
|
|
||||||
hosts on a TCP/IP network to request and be assigned IP
|
|
||||||
addresses, and also to discover information about the net-
|
|
||||||
work to which they are attached. BOOTP provides similar
|
|
||||||
functionality, with certain restrictions.
|
|
||||||
|
|
||||||
OOPPEERRAATTIIOONN
|
|
||||||
The DHCP protocol allows a host which is unknown to the
|
|
||||||
network administrator to be automatically assigned a new
|
|
||||||
IP address out of a pool of IP addresses for its network.
|
|
||||||
In order for this to work, the network administrator allo-
|
|
||||||
cates address pools in each subnet and enters them into
|
|
||||||
the dhcpd.conf(5) file.
|
|
||||||
|
|
||||||
On startup, dhcpd reads the _d_h_c_p_d_._c_o_n_f file and stores a
|
|
||||||
list of available addresses on each subnet in memory.
|
|
||||||
When a client requests an address using the DHCP protocol,
|
|
||||||
dhcpd allocates an address for it. Each client is
|
|
||||||
assigned a lease, which expires after an amount of time
|
|
||||||
chosen by the administrator (by default, one day). Before
|
|
||||||
leases expire, the clients to which leases are assigned
|
|
||||||
are expected to renew them in order to continue to use the
|
|
||||||
addresses. Once a lease has expired, the client to which
|
|
||||||
that lease was assigned is no longer permitted to use the
|
|
||||||
leased IP address.
|
|
||||||
|
|
||||||
In order to keep track of leases across system reboots and
|
|
||||||
server restarts, dhcpd keeps a list of leases it has
|
|
||||||
assigned in the dhcpd.leases(5) file. Before dhcpd
|
|
||||||
grants a lease to a host, it records the lease in this
|
|
||||||
file and makes sure that the contents of the file are
|
|
||||||
flushed to disk. This ensures that even in the event of
|
|
||||||
a system crash, dhcpd will not forget about a lease that
|
|
||||||
it has assigned. On startup, after reading the
|
|
||||||
dhcpd.conf file, dhcpd reads the dhcpd.leases file to
|
|
||||||
refresh its memory about what leases have been assigned.
|
|
||||||
|
|
||||||
New leases are appended to the end of the dhcpd.leases
|
|
||||||
file. In order to prevent the file from becoming arbi-
|
|
||||||
trarily large, from time to time dhcpd creates a new
|
|
||||||
dhcpd.leases file from its in-core lease database. Once
|
|
||||||
this file has been written to disk, the old file is
|
|
||||||
renamed _d_h_c_p_d_._l_e_a_s_e_s_~, and the new file is renamed
|
|
||||||
dhcpd.leases. If the system crashes in the middle of
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dhcpd(8) dhcpd(8)
|
|
||||||
|
|
||||||
|
|
||||||
this process, whichever dhcpd.leases file remains will
|
|
||||||
contain all the lease information, so there is no need for
|
|
||||||
a special crash recovery process.
|
|
||||||
|
|
||||||
BOOTP support is also provided by this server. Unlike
|
|
||||||
DHCP, the BOOTP protocol does not provide a protocol for
|
|
||||||
recovering dynamically-assigned addresses once they are no
|
|
||||||
longer needed. It is still possible to dynamically
|
|
||||||
assign addresses to BOOTP clients, but some administrative
|
|
||||||
process for reclaiming addresses is required. By
|
|
||||||
default, leases are granted to BOOTP clients in perpetu-
|
|
||||||
ity, although the network administrator may set an earlier
|
|
||||||
cutoff date or a shorter lease length for BOOTP leases if
|
|
||||||
that makes sense.
|
|
||||||
|
|
||||||
BOOTP clients may also be served in the old standard way,
|
|
||||||
which is to simply provide a declaration in the dhcpd.conf
|
|
||||||
file for each BOOTP client, permanently assigning an
|
|
||||||
address to each client.
|
|
||||||
|
|
||||||
Whenever changes are made to the dhcpd.conf file, dhcpd
|
|
||||||
must be restarted. To restart dhcpd, send a SIGTERM
|
|
||||||
(signal 15) to the process ID contained in
|
|
||||||
_/_v_a_r_/_r_u_n_/_d_h_c_p_d_._p_i_d, and then re-invoke dhcpd. Because the
|
|
||||||
DHCP server database is not as lightweight as a BOOTP
|
|
||||||
database, dhcpd does not automatically restart itself when
|
|
||||||
it sees a change to the dhcpd.conf file.
|
|
||||||
|
|
||||||
CCOOMMMMAANNDD LLIINNEE
|
|
||||||
The names of the network interfaces on which dhcpd should
|
|
||||||
listen for broadcasts may be specified on the command
|
|
||||||
line. This should be done on systems where dhcpd is
|
|
||||||
unable to identify non-broadcast interfaces, but should
|
|
||||||
not be required on other systems. If no interface names
|
|
||||||
are specified on the command line dhcpd will identify all
|
|
||||||
network interfaces which are up, elimininating non-broad-
|
|
||||||
cast interfaces if possible, and listen for DHCP broad-
|
|
||||||
casts on each interface.
|
|
||||||
|
|
||||||
If dhcpd should listen on a port other than the standard
|
|
||||||
(port 67), the --pp flag may used. It should be followed by
|
|
||||||
the udp port number on which dhcpd should listen. This is
|
|
||||||
mostly useful for debugging purposes.
|
|
||||||
|
|
||||||
To run dhcpd as a foreground process, rather than allowing
|
|
||||||
it to run as a daemon in the background, the --ff flag
|
|
||||||
should be specified. This is useful when running dhcpd
|
|
||||||
under a debugger, or when running it out of inittab on
|
|
||||||
System V systems.
|
|
||||||
|
|
||||||
To have dhcpd log to the standard error descriptor, spec-
|
|
||||||
ify the --dd flag. This can be useful for debugging, and
|
|
||||||
also at sites where a complete log of all dhcp activity
|
|
||||||
must be kept but syslogd is not reliable or otherwise
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
2
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dhcpd(8) dhcpd(8)
|
|
||||||
|
|
||||||
|
|
||||||
cannot be used. Normally, dhcpd will log all output
|
|
||||||
using the syslog(3) function with the log facility set to
|
|
||||||
LOG_DAEMON.
|
|
||||||
|
|
||||||
Dhcpd can be made to use an alternate configuration file
|
|
||||||
with the --ccff flag, or an alternate lease file with the --llff
|
|
||||||
flag. Because of the importance of using the same lease
|
|
||||||
database at all times when running dhcpd in production,
|
|
||||||
these options should be used oonnllyy for testing lease files
|
|
||||||
or database files in a non-production environment.
|
|
||||||
|
|
||||||
CCOONNFFIIGGUURRAATTIIOONN
|
|
||||||
The syntax of the dhcpd.conf(8) file is discussed seper-
|
|
||||||
ately. This section should be used as an overview of the
|
|
||||||
configuration process, and the dhcpd.conf(8) documentation
|
|
||||||
should be consulted for detailed reference information.
|
|
||||||
|
|
||||||
|
|
||||||
SSuubbnneettss
|
|
||||||
dhcpd needs to know the subnet numbers and netmasks of all
|
|
||||||
subnets for which it will be providing service. In addi-
|
|
||||||
tion, in order to dynamically allocate addresses, it must
|
|
||||||
be assigned one or more ranges of addresses on each subnet
|
|
||||||
which it can in turn assign to client hosts as they boot.
|
|
||||||
Thus, a very simple configuration providing DHCP support
|
|
||||||
might look like this:
|
|
||||||
|
|
||||||
subnet 239.252.197.0 netmask 255.255.255.0 {
|
|
||||||
range 239.252.197.10 239.252.197.250;
|
|
||||||
}
|
|
||||||
|
|
||||||
Multiple address ranges may be specified like this:
|
|
||||||
|
|
||||||
subnet 239.252.197.0 netmask 255.255.255.0 {
|
|
||||||
range 239.252.197.10 239.252.197.107;
|
|
||||||
range 239.252.197.113 239.252.197.250;
|
|
||||||
}
|
|
||||||
|
|
||||||
If a subnet will only be provided with BOOTP service and
|
|
||||||
no dynamic address assignment, the range clause can be
|
|
||||||
left out entirely, but the subnet statement must appear.
|
|
||||||
|
|
||||||
|
|
||||||
LLeeaassee LLeennggtthhss
|
|
||||||
DHCP leases can be assigned almost any length from zero
|
|
||||||
seconds to infinity. What lease length makes sense for
|
|
||||||
any given subnet, or for any given installation, will vary
|
|
||||||
depending on the kinds of hosts being served.
|
|
||||||
|
|
||||||
For example, in an office environment where systems are
|
|
||||||
added from time to time and removed from time to time, but
|
|
||||||
move relatively infrequently, it might make sense to allow
|
|
||||||
lease times of a month of more. In a final test environ-
|
|
||||||
ment on a manufacturing floor, it may make more sense to
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
3
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dhcpd(8) dhcpd(8)
|
|
||||||
|
|
||||||
|
|
||||||
assign a maximum lease length of 30 minutes - enough time
|
|
||||||
to go through a simple test procedure on a network appli-
|
|
||||||
ance before packaging it up for delivery.
|
|
||||||
|
|
||||||
It is possible to specify two lease lengths: the default
|
|
||||||
length that will be assigned if a client doesn't ask for
|
|
||||||
any particular lease length, and a maximum lease length.
|
|
||||||
These are specified as clauses to the subnet command:
|
|
||||||
|
|
||||||
subnet 239.252.197.0 netmask 255.255.255.0 {
|
|
||||||
range 239.252.197.10 239.252.197.107;
|
|
||||||
default-lease-time 600;
|
|
||||||
max-lease-time 7200;
|
|
||||||
|
|
|
||||||
|
|
||||||
This particular subnet declaration specifies a default
|
|
||||||
lease time of 600 seconds (ten minutes), and a maximum
|
|
||||||
lease time of 7200 seconds (two hours). Other common
|
|
||||||
values would be 86400 (one day), 604800 (one week) and
|
|
||||||
2592000 (30 days).
|
|
||||||
|
|
||||||
Each subnet need not have the same lease--in the case of
|
|
||||||
an office environment and a manufacturing environment
|
|
||||||
served by the same DHCP server, it might make sense to
|
|
||||||
have widely disparate values for default and maximum lease
|
|
||||||
times on each subnet.
|
|
||||||
|
|
||||||
BBOOOOTTPP SSuuppppoorrtt
|
|
||||||
Each BOOTP client must be explicitly declared in the
|
|
||||||
dhcpd.conf file. A very basic client declaration will
|
|
||||||
specify the client network interface's hardware address
|
|
||||||
and the IP address to assign to that client. If the
|
|
||||||
client needs to be able to load a boot file from the
|
|
||||||
server, that file's name must be specified. A simple
|
|
||||||
bootp client declaration might look like this:
|
|
||||||
|
|
||||||
host haagen {
|
|
||||||
hardware ethernet 08:00:2b:4c:59:23;
|
|
||||||
fixed-address 239.252.197.9;
|
|
||||||
filename "/tftpboot/haagen.boot";
|
|
||||||
}
|
|
||||||
|
|
||||||
OOppttiioonnss
|
|
||||||
DHCP (and also BOOTP with Vendor Extensions) provide a
|
|
||||||
mechanism whereby the server can provide the client with
|
|
||||||
information about how to configure its network interface
|
|
||||||
(e.g., subnet mask), and also how the client can access
|
|
||||||
various network services (e.g., DNS, IP routers, and so
|
|
||||||
on).
|
|
||||||
|
|
||||||
These options can be specified on a per-subnet basis, and,
|
|
||||||
for BOOTP clients, also on a per-client basis. In the
|
|
||||||
event that a BOOTP client declaration specifies options
|
|
||||||
that are also specified in its subnet declaration, the
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
4
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dhcpd(8) dhcpd(8)
|
|
||||||
|
|
||||||
|
|
||||||
options specified in the client declaration take prece-
|
|
||||||
dence. An reasonably complete DHCP configuration might
|
|
||||||
look something like this:
|
|
||||||
|
|
||||||
subnet 239.252.197.0 netmask 255.255.255.0 {
|
|
||||||
range 239.252.197.10 239.252.197.250;
|
|
||||||
default-lease-time 600 max-lease-time 7200;
|
|
||||||
option subnet-mask 255.255.255.0;
|
|
||||||
option broadcast-address 239.252.197.255;
|
|
||||||
option routers 239.252.197.1;
|
|
||||||
option domain-name-servers 239.252.197.2, 239.252.197.3;
|
|
||||||
option domain-name "isc.org";
|
|
||||||
}
|
|
||||||
|
|
||||||
A bootp host on that subnet that needs to be in a differ-
|
|
||||||
ent domain and use a different name server might be
|
|
||||||
declared as follows:
|
|
||||||
|
|
||||||
host haagen hardware ethernet 08:00:2b:4c:59:23 {
|
|
||||||
fixed-address 239.252.197.9;
|
|
||||||
filename "/tftpboot/haagen.boot";
|
|
||||||
option domain-name-servers 192.5.5.1;
|
|
||||||
option domain-name "vix.com";
|
|
||||||
}
|
|
||||||
|
|
||||||
A more complete description of the dhcpd.conf file syntax
|
|
||||||
is provided in dhcpd.conf(5).
|
|
||||||
|
|
||||||
FFIILLEESS
|
|
||||||
//eettcc//ddhhccppdd..ccoonnff,, //vvaarr//ddbb//ddhhccppdd..lleeaasseess,, //vvaarr//rruunn//ddhhccppdd..ppiidd,,
|
|
||||||
//vvaarr//ddbb//ddhhccppdd..lleeaasseess~~..
|
|
||||||
|
|
||||||
SSEEEE AALLSSOO
|
|
||||||
dhclient(8), dhcrelay(8), dhcpd.conf(5), dhcpd.leases(5)
|
|
||||||
|
|
||||||
AAUUTTHHOORR
|
|
||||||
ddhhccppdd((88)) was written by Ted Lemon <mellon@vix.com> under a
|
|
||||||
contract with Vixie Labs. Funding for this project was
|
|
||||||
provided by the Internet Software Corporation. Informa-
|
|
||||||
tion about the Internet Software Consortium can be found
|
|
||||||
at hhttttpp::////wwwwww..iisscc..oorrgg//iisscc..
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
5
|
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user